hitit-cuneiform-ocr / code /OPTION_A_APPLIED.md
savastakan's picture
Initial upload: code + 5 record checkpoints + fuse
f211247 verified
|
Raw
History Blame Contribute Delete
3.91 kB

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: trueuse_bf16: true + compile + FA2 + fused
configs/classification_hitit_only.yaml fp16: truebf16: true + compile + FA2 + fused
configs/transliteration_hitit_only.yaml fp16: truebf16: 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