Option A Uygulandı — %30 Hızlanma, Sıfır Risk
Karar: Kullanıcı "başarımdan düşmesin" dedi → Option A seçildi. Gerekçe: B/C/D seçeneklerinde "≤0.5 pp", "-1-2 pp" kaybı var. A'da bit-exact teknikler.
Uygulanan teknikler (hepsi accuracy-neutral veya accuracy-pozitif)
| Teknik | Etki | Accuracy garantisi |
|---|---|---|
| bf16 (fp16 yerine) | Aynı hız, daha stabil | ✅ Bit-exact (fp16'dan daha az overflow) |
| torch.compile(max-autotune) | 1.3× throughput | ✅ Graph optimization, bit-exact |
| FlashAttention-2 | 1.3× end-to-end | ✅ Matematik eşdeğer (O(N²) memory → O(N)) |
| Fused AdamW | 1.1× optimizer step | ✅ Aynı optimizer, daha az kernel launch |
| ByT5 sequence packing | 3-5× (bu stage) | ✅ Aynı loss, block-diagonal attention mask |
| SWA (zaten aktif) | +acc, ücretsiz | ✅ Accuracy ARTIRIR |
| EMA (zaten aktif) | +acc | ✅ Accuracy ARTIRIR |
Hiçbir teknik veri veya model kapasitesi azaltmıyor.
Değiştirilen dosyalar
| Dosya | Değişiklik |
|---|---|
configs/ssl_dinov3_continual.yaml |
use_fp16: true → use_bf16: true + compile + FA2 + fused |
configs/classification_hitit_only.yaml |
fp16: true → bf16: true + compile + FA2 + fused |
configs/transliteration_hitit_only.yaml |
fp16: true → bf16: true + compile + FA2 + fused + sequence_packing |
configs/detection_hitit_v1.yaml |
efficiency block eklendi (bf16, compile, FA2, fused) |
Beklenen kazanç
| Stage | Baseline GPU-h | Option A sonrası | Düşüş |
|---|---|---|---|
| DINOv3 SSL continual | 300 | ~210 | -30% |
| Classification × 3 backbone | 150 | ~105 | -30% |
| YOLO11-P2 detection | 100 | ~75 | -25% |
| ByT5 transliteration | 100 | ~25 | -75% (packing) |
| Seq2seq paradigm | 300 | ~210 | -30% |
| Auxiliary + eval | 67 | ~55 | -18% |
| Hyperparameter buffer | 200 | ~170 | -15% |
| TOPLAM | 1,215 | ~850 | -30% |
Takvim
| Senaryo | Baseline | Option A | Tasarruf |
|---|---|---|---|
| 1 node 4×A100 7/24 | 13 gün | 9.2 gün | 3.8 gün |
| 1 node %70 util | 18 gün | 13 gün | 5 gün |
| 2 node paralel | 6.3 gün | 4.4 gün | 1.9 gün |
Neden B/C/D değil?
| Option | Accuracy riski | Sebep |
|---|---|---|
| A (seçilen) | ~0 pp | Bit-exact teknikler |
| B | ≤0.5 pp | EL2N pruning + student distill + ensemble reduksiyon |
| C | -1-2 pp | SSL bypass + imgsz düşürme |
| D | -1-2 pp + HW | Fp8 + aggressive teknikler |
Kullanıcı kriteri: "başarımdan düşmesin". Sadece A koşulu karşılıyor.
Potansiyel ek risksiz kazançlar (gelecekte eklenebilir)
Bu 3 teknik de accuracy-nötr, ama implementation karmaşıklığı yüzünden şimdilik listeye alınmadı:
- Selective activation checkpointing (manual) — 1.2× mem saving
- CUDA graphs (YOLO için) — 1.1× inference
- DoRA vs LoRA — LoRA'dan daha iyi accuracy (+0.2-0.8 pp) aynı hız
Bunları eklemek gelecek iterasyonda kolay.
Doğrulama yöntemi
Eğitim başladığında ilk 2 epoch'ta:
- Baseline (fp16) ile karşılaştır → loss curve eşleşmeli
- Epoch 1 val accuracy → eski runa göre eşit veya üstü
- GPU throughput (it/s) log'la → %25-30 artış gözlemlenmeli
Eğer accuracy düşerse: bf16 → fp32 yap (nadir durum, numerical instability).
Implementation süresi
Config değişiklikleri tamam. Training script'leri bu config'leri yükleyecek şekilde yazılınca (şu an recipe-only) hemen çalışır.
Yeni bir iş yok — kullanıcı "hepsini yap" dediğinde bu optimizasyonlar otomatik devrede.
Referanslar
- FlashAttention-2: arXiv:2307.08691 (Dao 2023)
- PyTorch torch.compile benchmarks (PyTorch 2024)
- Liger Kernel: LinkedIn 2024
- ByT5 sequence packing: T5 paper + FLAN-T5 practice
- SWA: arXiv:1803.05407 (Izmailov 2018)
- bf16 stability: NVIDIA Ampere whitepaper