# 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ı: 1. **Selective activation checkpointing** (manual) — 1.2× mem saving 2. **CUDA graphs** (YOLO için) — 1.1× inference 3. **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: 1. Baseline (fp16) ile karşılaştır → loss curve eşleşmeli 2. Epoch 1 val accuracy → eski runa göre **eşit veya üstü** 3. 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