Tesla T4 Üzerinde Gemma 4 (Bölüm 3): Int4 Embedding'ler ile E2B Modelini 2.86 GiB Bellekte ve 2.30x Hızla Çalıştırmak

İçindekiler
Bu rehber, Google'ın kuantizasyon farkındalıklı eğitilmiş (QAT) Gemma 4 E2B modelini, embedding tabloları dahil uçtan uca 4-bit ağırlıklara indirgeme ve Compute Engine üzerindeki tek bir Tesla T4 GPU'da vLLM ile sunma adımlarını ele alır. Elde edilen yapı, bf16 referansı ve Google'ın W4A16 çıktısıyla kıyaslandığında şu sonuçları verir:
- VRAM Tüketimi: 9.8 GiB (bf16) yerine yalnızca 2.86 GiB bellek kullanımı.
- KV Cache Kapasitesi: 315.974 token'dan 1.099.587 token düzeyine artış (yüksek eşzamanlılık).
- Üretim Hızı: 512 token'lık tekil istekte saniyede 37.04 yerine 85.28 token (2.30 kat hızlanma).
- Çıktı Doğruluğu: Test edilen sekiz açgözlü (greedy) prompt'un tümünde bf16 embedding'li sürümle birebir aynı token çıktıları.
Neden Bunu Ölçüyoruz?
Önceki testlerde QAT W4A16 sürümünün bf16'ya kıyasla 1.79 kat daha hızlı decode yaptığı görülmüştü. Ancak QAT süreci yalnızca lineer katmanları kuantize eder; embedding tabloları bf16 kalır. E2B modelinde iki kritik tablo yer alır:
embed_tokens_per_layer: E serisi modellere küçük aktif boyutunu kazandıran katman başına embedding (PLE) tablosu (4.375 GiB).embed_tokens: Çıkış katmanına bağlı token embedding tablosu (0.750 GiB).
6.11 GiB'lık metin modelinin 5.1 GiB'ını bu iki tablo oluşturur ve 262.144 token'lık sözlük nedeniyle her decode adımında taranır. QAT eğitimi bu tabloları da kapsadığından, 32'lik grupların tümü zaten 4-bit ızgara üzerindedir; dolayısıyla int4'e paketleme ek hata getirmez.
Bu Aşamada Sahip Olmanız Gerekenler
- Compute Engine VM:
n1-standard-2(2 vCPU, 7.80 GB RAM), bir adet Tesla T4,us-west2-bbölgesi ve veri diskinde 16 GB takas alanı (swapfile). - vLLM: Turing mimarisi attention yaması doğrulanmış vLLM 0.29.0 sürümü.
- Python Ortamı: Yeniden paketleme için
numpyiçeren Python 3 (PyTorch gerekmez). - Depo:
git clone https://github.com/xbill9/gemma4-dev
Adım 1 — Lineer Katmanları Yeniden Paketleme ve Kuleleri Çıkarma
google/gemma-4-E2B-it-qat-q4_0-unquantized modeli, 4-bit ızgaradaki bf16 değerlerini taşır. İlk betik adımları ayrıştırıp compressed-tensors W4A16 formatını oluşturur. İkinci betik ise görüntü/ses kulelerini çıkarıp mimariyi Gemma4ForCausalLM yapar:
cd gemma4-dev/gpu-vllm-t4-2b-w4a16
python3 repack/repack_q4_0.py repack SRC OUT
python3 repack/text_only.py OUT OUT-text
Bu ara çıktı (xbill9/gemma-4-E2B-it-qat-q4_0-w4a16-ct-text), 6.11 GiB boyutunda int4 lineer katmanlar ve bf16 embedding'ler içerir.
Adım 2 — Embedding Tablolarını Paketleme
embed_int4.py betiği PLE tablosunu ve --embed-tokens parametresiyle token embedding tablosunu paketler:
python3 repack/embed_int4.py OUT-text OUT-text-emb4 --embed-tokens
embed_tokens_per_layer: 4.375 GiB -> 1.230 GiBembed_tokens: 0.750 GiB -> 0.211 GiBlm_head(ayrılmış): bağlı -> 0.211 GiB- Tüm model: 6.11 GiB -> 2.64 GiB
vLLM çıkış katmanını bağlarken .weight niteliğini aradığı ve paketli tabloda bu bulunmadığı için betik katmanları ayırır ve int4 lineer katman olarak lm_head adıyla yazar.
Pratik Geliştirici Çıkarımları
Yazılım mühendisleri için bu optimizasyon, maliyetli yeni nesil GPU'lara ihtiyaç duymadan eski Tesla T4 donanımlarında 1 milyondan fazla KV önbellek token'ı saklama ve düşük gecikmeyle üretim seviyesinde LLM sunma imkânı yaratır.
Orijinal kaynağa buradan ulaşabilirsiniz.
Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.
Bu konuyu daha derinlemesine öğrenmek ister misin?
Edumints'teki ücretsiz kursları incele ve bugün başla.
Kurslara Göz At →