echo / MVP /PROGRESS.md
void0x14
docs: PIVOT — budama terk edildi, Q4_K_M quantize onaylandi (kayipsiz) + ROADMAP gelecek opsiyonlari
eae60b4 unverified
|
Raw
History Blame Contribute Delete
4.31 kB

PROGRESS — Qwen3.5 Multimodal Prune + KD + RX460 Teslim

Güncelleme: her adımda, ölçülen değerle. Tahmin yok, kaynak hep var.

⚠️ PIVOT (19 Ağu) — Budama TERK EDİLDİ, Quantize yaklaşımı ONAYLANDI

Neden (derin literatür + kullanıcının RX460 benchmark'ları): -- 24→4 katman budama (%83 derinlik kaybı) kod/reasoning yeteneğini ÖLDÜRÜYOR (güvenli bölge %15-25). -- F2LLM-v2 'ilk N blok' tarifi EMBEDDING modellerine özgü; generative/kod modeline taşınmaz. -- %0 kod verisiyle distill → catastrophic forgetting; kod yeteneği silindi (ölçüldü: ORIG kod yazıyor, pruned yazamıyor). -- Qwen3.5-0.8B Q4_K_M (497 MiB) zaten RX460 2GB'a SIĞIYOR ve hızlı (GPU 85 t/s).

Yeni doğru yol: Orijinal Qwen3.5-0.8B'yi OLDUĞU GİBİ Q4_K_M'e quantize et. Budama YOK, eğitim YOK. -- Yetenek KAYIPSIZ korunur (kod + vision + reasoning).

DOĞRULANDI (ölçüldü): -- GGUF çifti: MVP/artifacts/gguf-vision/qwen35-text-Q4_K_M.gguf (block_count=24, orijinal) + mmproj-F32.gguf -- CPU (ngl=0) VE GPU Vulkan (ngl=99) multimodal test: çizilen test sahnesini kusursuz tanımladı (kahverengi ev + kırmızı çatı + yeşil alan + sarı güneş + mavi gökyüzü); chain-of-thought reasoning çalışıyor. -- Benchmark: Q4_K_M GPU ngl=99 tg128 = 85 t/s (Q8_0'ın 78 t/s'inden HIZLI), boyut 497 MiB. -- Default context 4k (hız/gecikme tatlı noktası), gerekirse max 16k'ya genişletilebilir. Model+KVcache GPU'da.

⚠️⚠️ ROADMAP — GELECEK OPSİYONLARI (UNUTMA!) ⚠️⚠️

İLERİDE HIZLAR YETMEZSE GEREKEBİLİR — ŞU ÜÇ YÖNDEN BİRİNE GİDİLEBİLİR: 1) BİTİ DÜŞÜRMEK (Q4_K_M → Q3/IQ3 — DİKKAT: kodlama quant'a en hassas görev, 3-bit uçurum kenarı, 2-bit çöküş), VEYA 2) MODEL PARAMETRESİNİ DÜŞÜRMEK (dikkatli/az budama + MUTLAKA kod verili distill), VEYA 3) MODEL PARAMETRESİ + BİTİ BİRLİKTE DÜŞÜRMEK. GEREKİRSE BU YOLLARA BAŞVURULACAK. ŞU AN Q4_K_M + ORİJİNAL 0.8B YETERLİ VE KAYIPSIZ.

[x] 1. Base modeli indir ve doğrula (Qwen/Qwen3.5-0.8B-Base)

  • Multimodal: Qwen3_5ForConditionalGeneration, ~873M (text ~773M + vision ~100.6M)
  • text_config: hidden 1024, inter 3584, 24 blok hybrid [linear×3+full]×6, head_dim 256, vocab 248,320 TIED; vision_config: 12 blok, hidden 768, inter 3072, patch 16, pos_embed 2304, merger fc1 3072→3072 + fc2 3072→1024 + norm
  • Kaynak: /tmp/opencode/qwen35-base-src/ (12 dosya indirildi)

[x] 2. F2LLM-v2 kuralı: ilk N blok (activation-norm seçimi YOK)

  • text bloklar [0..3], vision bloklar [0..5], mtp atıldı → TEK model
  • 395,365,088 param = text 337,299,424 + vision 58,065,664 (330–450M aralığı ✓)
  • Çıktı: MVP/artifacts/qwen35-multimodal-n4v6/ (model.safetensors TEK dosya, 55+81 tensor)
  • Doğrulama: MVP/test_multimodal_forward.py — forward OK, MISSING 0

[ ] 3. Multimodal KD (FP32, CPU — RX460 FP16/BF16 desteklemiyor)

  • teacher = base (tam, text+vision BİRLİKTE, frozen, eval)
  • student = qwen35-multimodal-n4v6 (tüm parametreler trainable)
  • loss = CE (teacher probs) + MSE (son hidden state); AdamW cosine+warmup
  • çıktı: MVP/artifacts/qwen35-multimodal-n4v6/distilled/ (model.safetensors)

[ ] 4. KD sonrası doğrulama

  • Parametre: 395,365,088 sabit mi (değişmemeli — sadece ağırlık güncellendi)
  • forward OK, MISSING 0

[ ] 5. GGUF üretimi — FP32 zorunlu (BF16/FP16 YASAK, kart desteklemiyor)

  • text: --outfile qwen35-multimodal-n4v6-f32.gguf --outtype f32 --no-mtp
  • mmproj: --mmproj --outtype f32 (82 tensor, v.*)
  • quantize: llama-quantize her ikisini Q8_0 → teslim GGUF'lar
  • Dosyalar: MVP/artifacts/gguf-multimodal-fp32-or-q8/

[ ] 6. RX460 + Vulkan çalıştırma kanıtı

  • GPU: AMD Radeon RX 460 (Polaris — FP16 yok)
  • llama-cli --device Vulkan0 --image red.png → anlamlı cevap (KD sonrası)
  • kanıt logları: MVP/evidence/

[ ] 7. Teslim belgeleri + commit

  • ANLASILAN.md güncelle, PROGRESS.md güncel, atomic commit

Kimler geçersiz (kullanma)

  • MVP/artifacts/gguf-multimodal/qwen35-n4v6.gguf → BF16 üretildi, RX460'ta ÇALIŞMAZ — FP32'den yeni üretilecek
  • MVP/artifacts/qwen35-distilled-n4/ (text-only ürün — ayrı, iptal)
  • MVP/qwen35_prune.py + validate_checkpoint.py (text-only hattı — multimodal hat kullanılır)