· kaynak Hacker News – Front Page (native)
ggml 1.0.0, kullanımdan kaldırılan API'leri çıkarıyor, FP8 desteği ve geniş kapsamlı backend hızlandırmaları ekliyor
llama.cpp'nin altında yer alan ggml tensor kütüphanesi 1.0.0 sürümünü yayınladı; kullanımdan kaldırılan API'ler temizlendi, OCP FP8 desteği eklendi ve CUDA, Metal, Vulkan, SYCL, OpenCL dahil neredeyse tüm backend'lerde performans çalışmaları yapıldı.
ggml 1.0'a ulaştı
llama.cpp'nin ve çok sayıda yerel çıkarım aracının temelini oluşturan tensor kütüphanesi ggml, ilk büyük sürümü olan 1.0.0'ı yayınladı. GitHub'daki sürüm notlarına göre bu sürüm, v0.29.0'ın ardından geldi ve uzun süredir sinyalenen bir genel arayüz temizliğini, yeni düşük hassasiyetli formatlarla ve kütüphanenin desteklediği neredeyse her backend'e dokunan performans çalışmalarıyla bir araya getiriyor.
API'de kırıcı değişiklikler
En önemli maddenin, kullanımdan kaldırılan genel API'nin eski DIAG_MASK_INF ve DIAG_MASK_ZERO işlemleriyle birlikte kaldırılması olduğu görülüyor. RPC protokolü de 9. sürüme geçti: uyumsuz sürümler çalıştıran eşler artık doğrudan reddediliyor; yeni protokol daha hızlı yükleniyor ve erişilemeyen uç noktalarla ya da başarısız el sıkışmalarla daha iyi başa çıkıyor. Karışık sürümlü kurulumları işletenler için bu protokol değişikliği tek başına kırıcı bir değişiklik anlamına geliyor.
Eklemeler tarafında ggml_rope_set_truncate ve ggml_rope_get_truncate, YaRN düzeltme sınırındaki yuvarlama üzerinde kontrol sağlıyor; bu ayar artık CUDA, Vulkan, WebGPU ve OpenVINO backend'lerinde tutarlı biçimde uygulanıyor. TRI işlemi geriye doğru geçiş (backward pass) kazandı ve MUL_MAT src1 yolu, ggml_prec_set_acc için geçit mekanizmasıyla birlikte hassasiyet testleri aldı.
Yeni formatlar ve CUDA'da daha hızlı matmul'lar
CUDA, OCP FP8 desteği ve kuantize matmul yolunda GLU'lu birleşik NVFP4 gate/up matris çarpımları kazandı; bunlar en yeni kompakt checkpoint formatlarını hedefliyor. Küçük batch çıkarımı doğrudan ele alınıyor: 2-24 arası batch boyutlarını kapsayan birkaç satırlık MMQ yolu ve az satırlı BF16 matrislerini işleyen MMVF eklendi. FlashAttention, head boyutu 256 için bir sm70 yapılandırmasının yanı sıra 40 ve 72 MMA head boyutları kazandı. Mixture-of-experts modelleri, atlanan boş stream-k tile'ları, doğrusallaştırılmış bir MoE yerleşimi ve bias sonrası NaN temizliğinden yarar sağlıyor. AMD tarafında HIP, düzeltilmiş bir BLAS workspace'i ve CDNA2 donanımı için bir MFMA lightning indexer aldı.
Metal, Vulkan ve Intel GPU'lar
Metal artık MoE yönlendirmesini (routing) birleştiriyor, birleştirilebilir düğüm gruplarını tek bir komut tamponunda tutuyor, 32 ile 64 arası K için bir mul_mm yolu ekliyor ve değerler eşit olduğunda radix Top-K'yı deterministik hale getiriyor. Düzeltmeler, ne03 değeri 1'den büyük GROUP_NORM ile FlashAttention çıktısı ve SOLVE_TRI çekirdeklerindeki sınır dışı erişimleri kapsıyor.
Vulkan, Intel FlashAttention prefill çekirdeği, toplu tensor kopyaları, ReBAR algılama, CM2 ile dequantize KV ve yeni AMD sürücülerinde büyük kooperatif matris matmul'unun yanı sıra RDNA3/4 için large-tile split-K kazandı. MoltenVK için doğruluk düzeltmeleri, GROUP_NORM workgroup sınırları ve FlashAttention scratch boyutlandırması da dahil edildi.
SYCL, mobil ve tarayıcı backend'leri
SYCL, cihaz tarafı bir MoE zamanlayıcısı ekliyor, oneDNN FlashAttention önbelleğini thread-safe hale getiriyor, Intel Alchemist için head_dim 64'te birleşik SDPA'yı etkinleştiriyor ve artık mevcut VRAM'i aşacak buffer ayırma isteklerini reddediyor.
OpenCL, Adreno GPU'lar için geliştirilmiş decode performansına sahip, ayrıştırılmış bir FlashAttention uygulaması ve Adreno X2'de varsayılan olarak etkinleştirilen yeni çok sütunlu GEMV çekirdekleri aldı. WebGPU, toplu tensor API'sinin yanı sıra GROUP_NORM, MEAN, COUNT_EQUAL ve PAD_REFLECT_1D çekirdeklerini ekliyor. Hexagon, Q5_0 ve Q5_1 kuantizasyon desteği, optimize edilmiş bir conv_2d, yeni bir conv_3d ve otomatik libhtp yüklemesi kazandı. Daha küçük backend'lere de dokunuldu: CANN artık desteklenmeyen buffer türlerinde erken hata veriyor ve ZDNN, zdnn olmayan tensor'ları kabul ediyor.
CPU tarafında MUL_MAT src1 için F32'ye geçiyor ve FlashAttention, daha iyi sayısal doğruluk için V terimini F32'de biriktirirken ARM NEON, 4x4 simd_gemm tile'ını etkinleştiriyor.
Daha akıllı zamanlama
Zamanlayıcı (scheduler), bir düğümün hiç okumadığı girdileri artık yükleme iyor ve yalnızca önceki bölümlerin (split) ürettiği girdileri önceden getirerek kaçınılabilir host-cihaz arası trafiği azaltıyor. Ayrıca MoE önbelleği, cache miss'lerin bir bölümünü CPU'da hesaplayıp sonuçları asenkron olarak geri kopyalayabiliyor; bu karma yol, GPU belleğini aşan büyük mixture-of-experts modelleri için önemli olabilir.
Neden önemli
ggml, llama.cpp'nin ve uzun bir aşağı akış araç zincirinin altındaki motor; dolayısıyla 1.0'daki bir API temizliği kozmetik bir değişiklik değil. Kütüphaneye bağlanan her şey, senkronize olduğunda kendini buna uyarlamak zorunda kalacak ve karışık sürümlü RPC kümeleri birbirleriyle konuşmayı reddedecek. Kırılmanın ötesinde, sürüm yerel çıkarımın gittiği yönü çiziyor: daha yeni checkpoint'ler için FP8 ve NVFP4 yolları, uzman modeller için birleşik MoE yürütmesi ve NVIDIA ile AMD ayrık GPU'larından Apple Silicon, Intel Arc, telefon çipleri ve tarayıcılara uzanan optimizasyonlar. 1.0 etiketi, projenin genel arayüzünü artık üzerine inşa edilecek kadar stabil kabul ettiğini gösteriyor ve bu, ona bağımlı çok sayıda araç için anlamlı.
- #llama-cpp
- #machine-learning
- #open-source
- #gpu
- #inference