- Microsoft'un bitnet.cpp projesi, 1 bit büyük dil modelleri (LLM) için resmî çıkarım çerçevesi olup CPU ve GPU'da hızlı ve kayıpsız çıkarımı destekliyor
- ARM CPU'larda 1,37~5,07 kat hız artışı ve %55,4~70 enerji tasarrufu, x86 CPU'larda ise 2,37~6,17 kat hız artışı ve %71,9~82,2 enerji tasarrufu sağlıyor
- Paralel kernel uygulamaları ve embedding quantization eklenerek önceye kıyasla 1,15~2,1 kat ek performans artışı sunuluyor
- BitNet b1.58 modeli tek bir CPU üzerinde saniyede 5~7 token hızında çalıştırılabiliyor; bu da yerel ortamda çok büyük modellerin çalıştırılması olasılığını genişletiyor
- llama.cpp ve T-MAC tabanlı olarak geliştirildi; düşük bitli LLM çıkarım verimliliği için açık kaynak ekosisteminin büyümesine katkı sağlıyor
bitnet.cpp genel bakış
- bitnet.cpp, 1 bit LLM'ler (ör. BitNet b1.58) için resmî çıkarım çerçevesidir ve CPU ile GPU üzerinde optimize edilmiş kernel'ler sunar
- NPU desteği ileride eklenecek
- İlk sürüm CPU çıkarımını destekliyor ve hem ARM hem de x86 mimarilerinde hız ile enerji verimliliği iyileştirmelerini kanıtlıyor
- ARM CPU: 1,37~5,07 kat hız artışı, %55,4~70 enerji tasarrufu
- x86 CPU: 2,37~6,17 kat hız artışı, %71,9~82,2 enerji tasarrufu
- 100B parametreli BitNet b1.58 modeli, tek bir CPU üzerinde saniyede 5~7 token hızında çalıştırılabiliyor
En yeni optimizasyonlar
- Paralel kernel uygulamaları, tiling yapılandırması ve embedding quantization özellikleri eklenerek önceye kıyasla 1,15~2,1 kat ek hız artışı elde edildi
- Çeşitli donanım platformları ve iş yüklerinde performans iyileşmesi doğrulandı
- Ayrıntılı teknik içerik
optimization guide belgesinde sunuluyor
Demo ve resmî modeller
- Apple M2 üzerinde BitNet b1.58 3B modelini çalıştıran bir demo sunuluyor
- Resmî model olarak BitNet-b1.58-2B-4T Hugging Face'te yayımlandı ve x86 ile ARM CPU'larda destekleniyor
- Desteklenen modeller arasında bitnet_b1_58-large(0.7B), bitnet_b1_58-3B(3.3B), Llama3-8B-1.58, Falcon3, Falcon-E serileri yer alıyor
Kurulum ve derleme
- Gereksinimler: Python 3.9 veya üzeri, CMake 3.22 veya üzeri, Clang 18 veya üzeri
- Windows kullanıcılarının Visual Studio 2022 kurması gerekiyor
- Debian/Ubuntu kullanıcıları için otomatik kurulum betiği sunuluyor
- Conda ortamı kullanılması öneriliyor ve
setup_env.py ile model ortamı yapılandırılabiliyor
- Model, Hugging Face'ten indirildikten sonra yerel yoldan çalıştırılabiliyor
Kullanım ve benchmark
run_inference.py ile quantized model çıkarımı çalıştırılabiliyor
- Başlıca parametreler: model yolu(-m), prompt(-p), thread sayısı(-t), context boyutu(-c), temperature(-temp)
e2e_benchmark.py betiğiyle token sayısı, prompt uzunluğu, thread sayısı belirtilerek performans ölçümü yapılabiliyor
- Herhangi bir resmî model yoksa,
generate-dummy-bitnet-model.py ile dummy model oluşturup benchmark yapılabiliyor
Model dönüştürme ve SSS
.safetensors checkpoint'lerini gguf formatına dönüştüren bir betik sunuluyor
- SSS bölümünde llama.cpp derleme hatası (
std::chrono ile ilgili) için çözüm ve Windows'ta clang ortamı yapılandırma adımları anlatılıyor
- Visual Studio geliştirici komut istemi veya PowerShell'de ortamın başlatılması gerekiyor
1 yorum
Hacker News görüşleri
Microsoft aslında 1.58 bit değil 2 bit kullanıyor
Bu durumda -1, 0, 1, 2 olmak üzere dört değer temsil edilebiliyor
İnhibitör sinapsların %20-30 paya sahip olduğu düşünüldüğünde, bunun biyolojik beynin yapısıyla iyi örtüştüğünü düşünüyorum
Sık sık “asgari işlevli LLM”in nasıl bir şey olacağını merak ediyorum
Yani elinde sadece minimum bilgi olup geri kalanını Google aramasıyla tamamlayarak yine de yeterince makul cevaplar verebilen bir model
Encyclopedia Britannica gibi bir yer verilerini LLM'lere satıp sonuç doğrulama hizmeti sunsa büyük fark yaratabilir gibi geliyor
Wikipedia da iyi ama insan hatası ve önyargısı bakımından zayıf kalıyor
Küçük LLM'ler zaten bu yöne doğru ilerliyor; genel bilgi eksikleri var ama araç kullanma yetenekleri (ör. Google araması) giderek gelişiyor
Yine de neyi bilip neyi bilmediklerini net biçimde ayırt etmek hâlâ zor bir problem
Belirli bir cihazı tanımayan bir mühendis gibi; problem çözme becerisi var ama ayrıntı bilgisi yok
Böyle bir modelin sadece Google araması ya da wiki aramasıyla işi çözüp çözemeyeceğinden emin değilim ama edge LLM mimarisi gelecekte standart olacak gibi duruyor
Eğitim verisinde bulunan bilgiyi aramak ve yorumlamak daha kolay oluyor
Bu yüzden içsel ezber yerine harici bellek (arama vb.) bağımlı eğitim daha pratik olabilir
Ben tam tersini düşünüyorum
Orijinal makaleye (pdf) göre fp16 modele kıyasla yaklaşık 4-5 kat daha fazla parametre gerekiyor
Elle derleyip denenebilir ama baştan eğitmek gerektiği için seçenekler sınırlı
Yine de en güncel 4 bit ve 8 bit kuantizasyonlu modellere göre çıkarım hızı daha yüksek olabilir
Asıl mesele enerji tasarrufu etkisi
CPU çıkarımında %70-82 tasarruf mümkün deniyor
Eğer 1 bit modeller yeterince iyi hâle gelirse, GPU olmadan sıradan donanımlarda LLM çalıştırmak mümkün olacak ve bu da erişilebilirlik dengelerini değiştirecek
bitnet.cpp'nin 1 bit LLM'ler (BitNet b1.58 vb.) için resmi çıkarım çatısı olduğu söyleniyor ama
“1 bit mi 1 trit mi” konusunda bir karışıklık var
İki kavramı birbirine karıştırmak kafa karıştırıcı
Bu projenin geliştirilmeye devam ettiğini görmek sevindirici
Geçen yıl ilgili yazıyı görünce potansiyel hissetmiştim ama yeni model çıkmaması hayal kırıklığı yaratmıştı
Asıl ilginç olan, kayan nokta işlemleri olmadan ikili modelleri doğrudan eğitmek yönü
İlgili makale NeurIPS 2024'te var
“100B BitNet çalıştırabiliyor” demek modelin mevcut olduğu değil, çıkarım çatısının bunu desteklediği anlamına geliyor
“1-bit 100b model” diye aratınca indirilebilir bir model çıkmıyor
Model çıktısının kalitesi daha çok GPT-2 seviyesinde gevezeliğe benziyor ve paragrafları olduğu gibi tekrar ediyor
Hatta
(Jenkins, 2010)gibi uydurma alıntıları sürekli yeniden kullanıyorBaşlık yanıltıcı
Gerçekte eğitilmiş bir 100B model değil, onu işleyebilen bir çıkarım çatısı söz konusu
Ben M2 Max 96GB üzerinde llama.cpp + LiteLLM ile 70B kuantize bir model çalıştırıyorum ve darboğaz bellek bant genişliği
1.58 bit yaklaşımı matris çarpımını toplamalara dönüştüren bir yapı olduğu için CPU'da temelden farklı bir hesaplama deseni kullanıyor
Eğer CPU tek çekirdekte 100B sınıfı bir modeli saniyede 5-7 token hızında çalıştırmak mümkün olursa, bu cihaz üstü çıkarım için dönüm noktası olur
Çatı hazır, şimdi geriye birilerinin gerçekten modeli eğitmesi kalıyor
Tanıtıma kıyasla somut çıktı zayıf
Eğitim için yine GPU gerekir ama çıkarıma özel donanım çok daha basit olabilir
7 token/sn veren bir modeli kullandım ve yavaş yürüyen birinin arkasından gidiyormuşum gibi bunaltıcıydı
Yerel ortamda en az 10 token/sn üstü hedeflenmeli
Modern CPU'lardaki FMA (Fused Multiply-Add) komutları, basit toplamayla neredeyse aynı throughput'a sahip
İleride NPU'lu PC'lerin ne zaman gerçekten sonuç vermeye başlayacağını merak ediyorum
AMD, NPU/iGPU hibrit çıkarım çekirdeklerinde iyi sonuçlar alıyor
Böyle büyük modeller NPU'da çalışırsa CPU'ya kıyasla enerji verimliliği çok daha iyi olur
O günden beri NPU hayranıyım. Elbette RTX 5090 düzeyi değil ama CPU'dan çok daha verimli
Yazılım ekosistemi kararsız olsa da CPU/GPU kullanımı neredeyse sıfır düzeyinde
Ben onların düşük güç odaklı tasarımlar olduğunu sanıyordum