# 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)