Gerçekte hangi nicemleme formatının çalıştırılacağı.
Bir sunum yığını, her şeyden önce bir sayı formatı sorar ve verilen cevap, aylık ücretinizi sekiz kat değiştirir. En küçük ağırlıklara sahip format, size her zaman en küçük modeli veren format değildir.
Kısa cevap
- Genel kural
- Ağırlıklar tam olarak adındaki oranda küçülür — BF16 / FP16 2 B/param · FP8 1 B/param · 4-bit (AWQ, GPTQ) 0.5 B/param. Başka hiçbir şey küçülmez.
- Neye değer
- Qwen 3 32B, tam hassasiyette aylık $1,091 fiyatla NVIDIA A100 PCIe gerektirir; 4 bitte ise aylık $125 fiyatla NVIDIA L4 gerektirir. Aynı model, aynı bağlam.
- Tuzak
- Anahtar/değer önbelleği, ağırlıklarla birlikte küçülmez. 128k bağlamında 4 bit bir Llama 3.3 70B modeli 53 % önbellek, yalnızca 47 % ise ağırlıktır.
- 4 bitin açıkça kaybettiği yer
- Llama 3.1 8B, 128k bağlamında 4 bitte 23.0 GB, FP8'te ise 18.4 GB gerektirir — daha kötü kalite için daha fazla bellek
Buradan başlayın
Bu sayfanın büyük bölümü aritmetiktir, o yüzden önce sonucu verelim. Formatı dört soru belirler ve bu sorular şu sırayla sorulur, çünkü her biri tartışmayı tek başına bitirebilir.
Model, bağlamınıza da yer kalacak şekilde zaten tam hassasiyette sığıyor mu? BF16'da çalıştırın ve okumayı burada bırakın. Nicemleme, daha küçük bir makine satın almanın bir yoludur ve siz zaten işe yarayan birini satın aldınız. Sığan bir modeli sıkıştırmanın ödülü yoktur.
Bağlamınız kısa, modeliniz büyük mü? 4 bit ününü tam olarak burada kazanır. Belleğe ağırlıklar hâkimdir ve onları çeyreğe indirmek, makineyi çeyreğe indirmeye çok yaklaşır.
Bağlamınız uzun, modeliniz küçük mü? Bunu destekleyen bir kartta FP8 kullanın. FP8, ağırlıklarla birlikte önbelleği de yarıya indirir ve belirli bir uzunluktan sonra önemli olan bu ikinci yarılanmadır — aşağıdaki tablo, bunun 4 bit seçeneğini tam olarak hangi noktada geçtiğini gösterir.
Tek bir makinede tek bir kişiye mi hizmet veriyorsunuz? Ollama üzerinden GGUF, açık ara en az emek isteyen seçenektir ve vazgeçtiğiniz işlem hacmi, zaten tek bir okuyucunun hiçbir zaman kullanmayacağı işlem hacmidir.
Bundan sonraki her şey, bu dört cevabın neden böyle olduğunu açıklar ve onları bizim değil kendi modelinizle karşılaştırmanız için gereken sayıları verir. Modelinizin ne kadar belleğe ihtiyaç duyduğunu henüz hiç hesaplamadıysanız, o aritmetik ayrı bir rehberdir ve önce onu okumanız gerekir.
Üç format, dört ad
Sunum için yaygın kullanımda yalnızca üç sayı formatı vardır ve bunlar tek bir şeyde farklılaşır: her bir parametrenin kaç bayta mal olduğu. Geri kalan her şey — AWQ, GPTQ, GGUF, bitsandbytes — bu üçünden birini üretmenin bir yöntemidir, dördüncü bir format değildir.
| Format | Ağırlık başına bayt | Önbellek öğesi başına bayt | Kullanım amacı |
|---|---|---|---|
| BF16 / FP16 | 2 | 2 | Referans kalitesi |
| FP8 | 1 | 1 | Referansa yakın, Hopper ve Blackwell |
| 4-bit (AWQ, GPTQ) | 0.5 | 2 | En küçük ağırlıklar, önbellek FP16 kalır |
İki sayısal sütunu bir çift olarak okuyun. İlk iki satırda eşittirler, üçüncü satırda ise eşit değildirler; bu tek asimetri, sayfanın devamındaki sürprizlerin çoğundan sorumludur.
Bir model deposunda gerçekte karşılaşacağınız dört ad, o tabloyla şu şekilde eşleşir.
AWQ ve GPTQ
Aynı 4 bit hedefe giden iki yol. AWQ, aktivasyonları izleyerek hangi ağırlıkların önemli olduğuna karar verir ve onları korur; GPTQ katman katman sıkıştırır ve hatayı yol boyunca düzeltir. İkisi de vLLM ve SGLang'ın doğrudan yüklediği bir checkpoint üretir ve herhangi bir modelde ikisi arasındaki fark, ikisinden birinin 16 bit ile arasındaki farktan daha küçüktür.
GGUF
llama.cpp ailesi ve Ollama'nın altyapıda kullandığı şey. Tek bir yöntemden çok bir kapsayıcıdır: tek bir dosya, ağırlıkları bir düzine hassasiyetten herhangi birinde tutar ve kart çok küçük kaldığında katmanları sistem RAM'ına taşırır. Tek bir makinedeki tek bir kullanıcı için rakipsizdir, ama gerçek eşzamanlılık altında üçünün en zayıfıdır.
FP8
Bir checkpoint formatından çok bir moddur. Bir sunum yığınına 16 bit ağırlıklar verin; yükleme sırasında bunları ayrı bir indirme veya kalibrasyon geçişi olmadan FP8'e dönüştürür. Dördü arasında önbelleği de sıkıştırabilen tek seçenektir, bu yüzden aşağıda beklemediğiniz yerde karşınıza çıkar.
BF16 ve FP16
Yazarların yayımladığı hâliyle ağırlıklar; diğer tüm satırların karşılaştırıldığı referans. Parametre başına iki bayt, kalibrasyon kümesi yok, kontrol edilecek kernel desteği yok, tartışılacak bir kalite sorunu yok. Sığdığında doğru cevap budur ve bu sayfanın geri kalanı dikkat dağıtıcıdır.
Her birini istemek tek bir bayrak meselesidir. Bunlar, vLLM rehberinin ayrıntılı olarak kullandığı seçeneklerin aynısıdır; buradaki asıl mesele, aralarındaki farkın ne kadar küçük olduğudur.
# 1. Reference. The weights as published, nothing to prepare.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct --dtype bfloat16
# 2. FP8, quantised while it loads. No second download, no calibration.
# --kv-cache-dtype is the half everyone forgets: it is what
# halves the CACHE as well as the weights.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct \
--quantization fp8 --kv-cache-dtype fp8
# 3. Four-bit AWQ. A DIFFERENT checkpoint, prepared by someone else.
$ vllm serve casperhansen/llama-3.3-70b-instruct-awq \
--quantization awq_marlin
# 4. Four-bit GPTQ. Same idea, different repository and flag.
$ vllm serve TechxGenus/Llama-3.3-70B-Instruct-GPTQ \
--quantization gptq_marlin
Küçülmeyen yarı
Ağırlıkları 4 bite nicemlemek, anahtar/değer önbelleğini nicemlemez. AWQ ve GPTQ yalnızca ağırlıkları sıkıştırır, başka hiçbir şeyi değil; ayrıca bir FP8 önbelleği istemediğiniz sürece önbellek 16 bitte kalır ve 4 bit bir checkpointte çoğu kişi bunu hiç istemez. Yukarıdaki tablonun üçüncü sütunu budur ve aşağıdaki aritmetiğin kimsenin beklediği gibi gitmemesinin nedeni de budur.
Bu sonucu görmenin en kolay yolu tek bir model üzerindendir. Aşağıda, yapılandırıcının sunduğu her bağlam uzunluğunda, 4 bit hâlindeki Llama 3.3 70B yer alıyor — ağırlıklara karşı önbellek.
| Bağlam | Ağırlıklar | KV önbelleği | Önbellek payı |
|---|---|---|---|
| 4k token | 35.0 GB | 1.3 GB | 3 % |
| 8k token | 35.0 GB | 2.5 GB | 7 % |
| 32k token | 35.0 GB | 10.0 GB | 22 % |
| 128k token | 35.0 GB | 40.0 GB | 53 % |
Ağırlıklar sütunu hiç değişmez — onları nicemlemenin bütün amacı da budur. Önbellek sütunu ise bağlamla birlikte doğrusal olarak büyür; öyle ki son satırda, ait olduğu modelden bile daha büyük hâle gelir.
Bunu yeterince ileri götürün, 4 bit artık hiç kazanmaz olur. FP8 her iki yarıyı da yarıya indirir; 4 bit ise yalnızca bir yarıyı çeyreğe indirir, diğerine dokunmaz. Yani her model için ikisinin kesiştiği bir bağlam uzunluğu vardır ve model küçüldükçe bu nokta daha erken gelir — çünkü küçük bir modelde kazanılacak ağırlık azdır, oysa token başına önbellek büyümesi aynı kalır.
| Model | 4k | 8k | 32k | 128k |
|---|---|---|---|---|
| Llama 3.1 8B | 5.2 | 5.8 | 9.2 | 23.0 |
| Qwen 3 32B | 19.5 | 20.7 | 27.6 | 55.2 |
| Llama 3.3 70B | 41.7 | 43.1 | 51.7 | 86.3 |
Rakamlar gigabayt cinsindendir, iki formattan küçük olanı gösterir; kaybeden format altında belirtilir. Soldan sağa okuyun ve bağlam büyüdükçe avantajın 4 bit sütunundan nasıl eridiğini izleyin.
Son satır liderliğini her yerde korur, çünkü 70 milyar parametre, tasarruf edilecek çok büyük bir ağırlıktır. Orta satır ise berabere biter: 128k bağlamında Qwen 3 32B her iki formatta da tam olarak aynı maliyete sahiptir ve kalite için FP8'i tercih edersiniz. İlk satır ise tamamen tersine döner at 128k; burada 4 bit, FP8'den daha fazla bellek ister ve üstelik ikisinin daha az sadık olanıdır. Bu bileşim — daha fazla bellek ve daha kötü çıktı — gördüğümüz en yaygın tek nicemleme hatasıdır ve yalnızca ağırlık dosyasının boyutuna bakarsanız görünmez kalır.
Kartınızın gerçekte yapabildiği
FP8 önce bir donanım özelliğidir, sonra bir yazılım özelliği. Tensor çekirdekleri bunu desteklemeyen bir kart yine de bir FP8 checkpoint yükler — yığın, çarpma işlemine giderken ağırlıkları 16 bite açar — ama yalnızca indirme tasarrufunu korursunuz, hızdan hiçbir şey kazanmazsınız; bir FP8 önbelleği de size hiç sunulmaz. 4 bit ise tam tersidir: her yerde çalışır, çünkü ağırlıklar zaten aritmetikten önce 16 bite açılır.
| Üretim | Kiraladığımız kartlar | FP8 |
|---|---|---|
| Ampere | NVIDIA RTX A6000 48GB, NVIDIA A100 PCIe 40GB, NVIDIA A100 PCIe 80GB, NVIDIA A100 SXM4 80GB | Donanımda yok — 16 bite açılır |
| Ada Lovelace | NVIDIA L4 24GB, NVIDIA RTX 4090 24GB, NVIDIA L40S 48GB | Tensor çekirdeklerinde — ağırlıklar ve önbellek |
| Hopper | NVIDIA H100 PCIe 80GB, NVIDIA H100 SXM5 80GB, NVIDIA H200 SXM5 141GB | Tensor çekirdeklerinde — ağırlıklar ve önbellek |
| Blackwell | NVIDIA RTX 5090 32GB, NVIDIA B200 SXM6 180GB | Tensor çekirdeklerinde — ağırlıklar ve önbellek |
O sütun donanımı anlatır; bu, FP8'in nerede işe yaradığı sorusuyla tam olarak aynı şey değildir. Kataloğun formatın yanındaki kendi notu Hopper and Blackwell adını verir ve bu, tensor çekirdekleriyle değil sunum yığınlarıyla ilgili bir ifadedir: bunlar, FP8 kernellerin ve FP8 önbelleklerin en çok kullanıldığı ve en az sürprizle karşılaşıldığı nesillerdir. Ada Lovelace bunu çalıştırır. Buna bağımlı bir deploymenti Hopper'a ve Blackwell'e koyardık.
Kart seçmeden önce bilmeye değer bir şey daha. Llama 3.3 70B, FP8'de 8k bağlamda 81.9 GB gerektirir; 80 GB'lık bir kart ise — diğerlerinin yanı sıra NVIDIA A100 PCIe da dâhil — buna 1.9 GB yetersiz kalır. Bir çizelgede fark edilecek kadar büyük bir eksik değildir, ama makinede başarısız olmaya yetecek kadar büyüktür. Bunu tek başına karşılayan kart bir üsttekidir ve yapılandırıcı, ödemeden önce hangisi olduğunu size söyler, sonra değil.
Hız açısından ne kazandırır
Bir token üretmek, etkin ağırlıkları bellekten bir kez okumak demektir. Ağırlık başına daha az bayt, okunacak daha az bayt demektir; bu da saniyede daha fazla token demektir — ve batching uygulanmamış tek bir akışta bu ilişki neredeyse tam olarak doğrusaldır, çünkü kartın başka bekleyeceği bir şey yoktur. Bu, token başına maliyet rehberinin böldüğü bellek bant genişliği üst sınırının aynısıdır ve kasıtlı olarak temkinlidir. Aşağıda bu, kiraladığımız her tek kartlı makinede çalışacak kadar küçük bir modele uygulanır; böylece format ve kart aynı tablodan okunabilir.
| Kart | Bant Genişliği | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) |
|---|---|---|---|---|
| NVIDIA L4 | 300 GB/s | ~ 8 tok/s | ~ 17 tok/s | ~ 34 tok/s |
| NVIDIA RTX A6000 | 768 GB/s | ~ 22 tok/s | ~ 43 tok/s | ~ 86 tok/s |
| NVIDIA L40S | 864 GB/s | ~ 24 tok/s | ~ 49 tok/s | ~ 97 tok/s |
| NVIDIA RTX 4090 | 1008 GB/s | ~ 28 tok/s | ~ 57 tok/s | ~ 113 tok/s |
| NVIDIA A100 PCIe | 1555 GB/s | ~ 44 tok/s | ~ 87 tok/s | ~ 175 tok/s |
| NVIDIA RTX 5090 | 1792 GB/s | ~ 50 tok/s | ~ 101 tok/s | ~ 202 tok/s |
| NVIDIA A100 PCIe | 1935 GB/s | ~ 54 tok/s | ~ 109 tok/s | ~ 218 tok/s |
| NVIDIA H100 PCIe | 2000 GB/s | ~ 56 tok/s | ~ 113 tok/s | ~ 225 tok/s |
Llama 3.1 8B, tek kartta, bir seferde tek akış. Listelenen her makine bunu üç formatın tamamında barındırır; bu yüzden satırlar hem yatayda hem dikeyde karşılaştırılabilir — ve üç sütun arasındaki oran her satırda aynıdır, çünkü bunu belirleyen tek şey ağırlık başına bayt sayısıdır.
O tabloyu okurken dikkat edilmesi gereken iki nokta var. Birincisi, tablonun bir seferde bir isteği tarif etmesi; oysa neredeyse kimse bir seferde tek istek sunmaz: sürekli batching altında ağırlıklar tüm toplu iş için bir kez okunur, böylece sınırlayıcı olan bellek değil aritmetik hâline gelir ve sütunlar arasındaki oran daralır. İkincisi, nicemlemeyi geri almanın bir bedeli olmasıdır. 4 bit ağırlıklar çarpılmadan önce açılmalıdır ve küçük bir modelde düşük toplu iş boyutunda bu açma işlemi, daha küçük okumanın sağladığı kazancın gözle görülür bir bölümünü yiyip bitirebilir. Tablonun yönü güvenilirdir; tam katlar ise bir garanti değildir.
Size neye mal olur
Bu, konunun kendinden emin rakamlara güvenilmemesi gereken kısmıdır; bizimkiler de dâhil. Nicemleme hatası, yöntemden çok modele bağlıdır ve yayımlanmış karşılaştırmalar birbirinden farklı sonuçlar verir, çünkü farklı görevlerde farklı modelleri ölçerler. Dürüstçe söylenebilecek olan, bu hatanın genel eğilimidir.
FP8, tartışmaya yer bırakmayacak kadar yakın bir sonuç verir. Yine de bir kayan noktalı sayı formatıdır — her biri daha az bit içeren bir üs ve bir mantis — ve 4 bit bir checkpointin grup başına ölçeklerle eşleştirilmesi gereken tam sayı ızgarası değildir. Bu yüzden bu kadar yumuşak bozulur ve bu yüzden hiçbir kalibrasyon geçişine ihtiyaç duymaz. Çoğu ekip onu değerlendirme yapmadan benimser ve çoğu bunun yanına kâr kalır.
4 bit gerçek bir ödünleşimdir ve etkisi dengesiz dağılır. Ortalama kıyaslama puanı genellikle çok az değişir. Değişen, kuyruk kısmıdır: uzun akıl yürütme zincirleri, kesin aritmetik, nadir diller, katı çıktı formatları. Çoktan seçmeli bir testte hâlâ iyi puan alan bir model, JSON'u yanlış kapatmaya başlayabilir.
Daha büyük modeller bunu daha iyi kaldırır. 70B üzerinde 4 bit, sıradan bir deploymenttir. Parametrelerinin her biri daha fazla bilgi taşıyan 8B üzerinde 4 bit ise kalite kaybının fark edildiği yerdir — ve yukarıdaki tabloya göre size en az kazandırdığı yer de burasıdır.
Kalibrasyon verisi, adlardan daha önemlidir. AWQ ve GPTQ, ikisi de bir örnek derlem üzerinden sıkıştırma yapar. İngilizce düz yazı üzerinde kalibre edilip kod için kullanılan bir checkpoint, yöntemin hak ettiğinden daha kötü sonuç verir ve hiçbir kıyaslama tablosu size bunu söylemez.
Bu da bizi bu sayfadaki aritmetik olmayan tek öneriye götürür: ikisini de çalıştırın. Üzerinde root olan ve hiçbir şeyi sayaçla ölçülmeyen bir makine kiralıyorsunuz; aynı modeli iki portta çalıştırıp her birine kendi yüz isteminizi göndermek bir akşamınızı alır ve soruyu başkasının değil, sizin iş yükünüz için çözer. Bu, bu tablo dahil herhangi bir tablodan gerçek anlamda daha iyi bir yanıttır — ve size bir puan yerine formülü göstermeyi tercih etmemizin nedeni de budur.
Bunun anlamı hangi makine
Bütün bunların önemli olmasının nedeni makbuzdur. Aşağıda, kataloğumuzdaki her modeli üç formatın her birinde 8k bağlamda bütün hâlde barındıran en ucuz makine yer alıyor — bütün derken, kartlar arasında bölünmeden tek bir kart üzerinde kastediliyor; çünkü kartlar arasında bölünmüş bir model, işin içine ara bağlantıyı katar ve bu da başka bir rehberin konusudur.
| Model | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) |
|---|---|---|---|
| Llama 3.1 8B | NVIDIA L4 | NVIDIA L4 | NVIDIA L4 |
| Qwen 3 32B | NVIDIA A100 PCIe | NVIDIA RTX A6000 | NVIDIA L4 |
| Llama 3.3 70B | 4 × NVIDIA B200 SXM6 | 4 × NVIDIA H200 SXM5 | NVIDIA RTX A6000 |
8k bağlamda, gerçekten kiraladığımız makinelerde. Bir hücre birden fazla kart adı taşıyorsa bu, bölünmüş bir model değil, kartın satıldığı en küçük düğümdür: en büyük kartlar dörtlü ve sekizli satılır, dolayısıyla 70B'yi tam hassasiyette bölmekten kaçınmanın en ucuz yolu, dört tanesini satın alıp yalnızca birini kullanmaktır. Nicemlemenin var olma amacı, tam olarak bu ücretten kaçınmaktır.
Bu tabloyu doğru kullanmakla ona kanmak arasındaki farkı iki alışkanlık belirler. Modelin azami değerine göre değil, gerçekte çalıştıracağınız bağlama göre boyutlandırın — bu sayfadaki ikinci tablo, ikisini karıştıranların başına geleni gösterir. Ve formatı siparişten önce karta göre kontrol edin, sonra değil: hangi bayrağı geçerseniz geçin, NVIDIA RTX A6000, NVIDIA A100 PCIe ve NVIDIA A100 SXM4 size FP8 rakamlarını veremez. Yapılandırıcı, ödeme yapılmadan önce her düğüm ve her format için gereken belleği ve tek karta sığıp sığmadığını bildirir. Kiralamayı API'yi token başına ödemekle karşılaştırıyorsanız bu başabaş noktası ayrıca hesaplanır ve nicemleme bu dengeyi donanımın lehine büyük ölçüde kaydırır.
Formatı ve makineyi birlikte kontrol edin.
Yapılandırıcı, henüz hiçbir ödeme yapmadan, modelinizin her hassasiyette neye ihtiyaç duyduğunu ve hangi düğümlerin onu tek bir kartta barındırdığını bildirir.
Diğer rehberler
- Boyutlandırma · 10 dk
Bir uzman karışımı modelini çalıştırmak
Toplam parametreler makineyi, etkin parametreler hızı belirler. DeepSeek V3 ve Qwen 3 235B için gereken VRAM ve hangi düğümün kiralanacağı.
Rehberi okuyun - Maliyet · 6 dk
Aylık kiralama ne zaman saatlikten üstün olur
Gerçek rakamlar üzerinden hesaplanan başabaş noktası, saatlik fiyatın makbuza kadar gizlediği üç maliyet ve bir tahmini üçe katlayan boşta kalma tuzağı.
Rehberi okuyun - Maliyet · 9 dk
Kendi barındırmaya karşı token bazlı API
API'ye token başına ödemekle GPU kiralamak arasındaki başabaş noktası, kendi fiyat ve hızımıza göre hesaplandı — ve hesabın dışarıda bıraktığı dört şey.
Rehberi okuyun