BitNet b1.58: Ternary Ağırlıklar, CPU Üstünde Çalışan Modeller

552 kelime3 dk okuma

BitNet b1.58, ağırlıklarını -1, 0 ve +1 olmak üzere üç değerin birine indirgeyen yerel düşük bitli bir dil modelidir; ağırlık başına yaklaşık 1,58 bit demek olan bu tasarım, Nisan 2025’te yayımlanan 2B4T sürümünde 4 trilyon tokenlik eğitimle birleşti ve ayrılmış çekirdeklerle çıkarımda 0,4 GB bellek ile token başına yaklaşık 29 milisaniye işlemci gecikmesi sağladı.

1,58 bit nereden çıkıyor?

Üç durumlu bir sembol, bilgi kuramında log₂(3) ≈ 1,585 bit taşır. Model ağırlıkları eğitimin başından itibaren tam bu üç değer üzerinden tutuluyor; sabit nokta bir modelin sonradan kuantalanması değil, baştan düşük bitli kurulması söz konusu.

Pratikteki çekicilik aritmetikten geliyor. Ağırlık yalnızca işaret ve sıfır taşıyınca çarpma işlemi yerini toplama, çıkarma ve kaydırma gibi ucuz işlemlere bırakıyor. Bu, GPU kadar genel amaçlı işlemcilerin de iyi yaptığı bir iş.

Kağıttan ölçeğe

İlk BitNet çizgisi 2023 sonu ile 2024 başında geldi ve iki bitin altına inen dil modellerinin eğitilebilir olduğunu savundu. Microsoft Research’in Şubat 2024 bildirimi, bu rejimin tam sayı doğrultusunda ölçeklenebilir bir yol olduğunu iddia etti.

Nisan 2025’te yayımlanan BitNet b1.58 2B4T bildirimi ise iddiayı ölçekte sınamak için yazıldı: 2 milyar parametre ölçeği, sıfırdan 4 trilyon token eğitim, Llama 3 tokenize’ı ve W1.58A8 şeması. Bağlam uzunluğu 4 bin token ile sınırlı tutuldu.

İşlemcide ölçülen rakamlar

Model kartının CPU ölçümleri, gömme katmanları dışındaki ağırlıklar için 0,4 GB bellek bildiriyor; karşılaştırılan tam doğruluklu akranlarda bu değer gigabaytlara çıkıyor. Ölçülen işlemci gecikmesi token başına yaklaşık 29 milisaniye ve listedeki kıyas modellerinden düşük.

Enerji tarafında adım başına yaklaşık 0,028 jul bildiriliyor; karşılaştırılan küçük modellerin bir kısmında bu değer kat kat yüksek. Kritik not: kazançlar ayrılmış bitnet.cpp çekirdekleriyle ölçüldü, standart kütüphanelerle aynı verim elde edilemiyor.

Kalite ve ölçek sınırları

Açıklanan kıyaslama ortalaması, aynı ölçeğin en iyi tam doğruluklu açık modellerinin ne gerisinde ne önünde; üstelik kıyaslanan model çok daha uzun bir eğitimden geçmişti. Yani ternary ağırlıklar kaliteyi bedava korumuyor, ama kabul edilebilir tutabiliyor.

Model kartı ayrıca daha dikkatli bir dil kullanıyor: gerçek uygulama öncesi test öneriliyor, İngilizce dışı dillerde ve az temsil edilen alanlarda zayıflık bildiriliyor, seçimle ilgili sorgularda hata oranının yükseldiği belirtiliyor. Bağlam tavanı ve küçük parametre ölçeği de kullanım alanını daraltıyor.

Neden bu kadar ciddiye alındı?

Sektör, çıkarım maliyetini büyük ölçüde bellek aktarımının belirlediği bir döneme girdi. Ağırlıklar onda bir ölçüsünde küçülünce, darboğazın tam kalbine dokunan bir kazanç doğuyor; bu durum bellek teknolojisi ve veri merkezi enerji tartışmalarıyla doğrudan bağlantılı.

İkinci etki coğrafi ve donanımsal: modele erişim için ayrılmış hızlandırıcı gerekmemesi, dil modelini telefonda, gömülü cihazda ve enerji kısıtı olan ortamlarda konuşlandırma hayalini somutlaştırdı. Tartışma artık “mümkün mü” değil, hangi ölçekte ve hangi kalite düzeyinde sürdürülebilir sorusuna dönmüş durumda.

  • Ağırlıklar üç durumda tutulur, ağırlık başına 1,58 bit
  • Amaç sonradan kuantalama değil, baştan düşük bitli eğitim
  • 2B4T sürümü 0,4 GB bellek ve token başına ~29 ms CPU gecikme bildirdi
  • Kazanç ayrılmış çekirdeklere bağlı; kalite ve bağlam tavanı tartışmalı

Sık sorulan sorular

BitNet ile sıradan 4-bit kuantalama arasındaki fark nedir?

Kuantalama önceden eğitilmiş tam doğruluklu bir ağırlık matrisini sonradan sıkıştırır. BitNet b1.58 ise eğitimin başından itibaren üç değerli ağırlıklarla ilerler; bu sayede düşük bitin yarattığı doğruluk kaybı eğitim sırasında modele öğretilir.

Gerçekten hızlandırıcıya ihtiyaç yok mu?

Modelin çıkarımı işlemcide ölçüldü ve ağırlık belleği 0,4 GB civarında. Ancak bu sonuçlar ayrılmış bitnet.cpp çekirdekleriyle alınıyor; standart kütüphanelerle çalıştırınca bildirilen hız ve enerji kazançları elde edilemiyor.

Neden “1-bit” deniyor ama 1,58 bit deniyor?

İsim geleneksel ve yanıltıcı olabilir. Ağırlıklar üç değerden birini aldığı için bilgi kuramı karşılığı log₂(3) ≈ 1,585 bit. Model kartındaki W1.58A8 şeması da bunu, yani düşük bitli ağırlık ile sekiz bitlik etkinleştirmeyi anlatıyor.

Büyük modellerde işe yarar mı?

Açıkça kanıtlanmış değil. Bildirilen sonuç 2 milyar ölçeği ve 4 bin token bağlamla sınırlı; kalite farkları ve dil kapsamı uyarıları da aynı ölçekte raporlandı. Ölçek büyüdükçe davranışı hakkında tartışma sürüyor.

Kaynakça

  1. BitNet b1.58 2B4T Technical ReportarXiv
  2. microsoft/bitnet-b1.58-2B-4T model cardHugging Face
  3. microsoft/BitNet: Official inference framework for 1-bit LLMsGitHub
  4. The Era of 1-bit LLMs: All Large Language Models are in 1.58 BitsarXiv

Bu konuyla ilgili haberler