Geri Dön

On yaşındaki bir Xeon yeter de artar
SiTech AI Team3 dk okuma

On yaşındaki bir Xeon yeter de artar

Yeni bir yazı, 2016 model DDR3 bellekli ve GPU'suz bir Xeon'un 26 milyar parametreli uzman karışımı modelini okuma hızında çalıştırdığını gösteriyor — özel bir çatalla ve 25 komut satırı bayrağıyla.

Bunu çalıştırmaması gereken donanım

Christina Emilie Sørensen'in Gemma 4'ün MTP drafterları üzerine üçüncü yazısı, sonucu bunu başarmaması gereken geri dönüştürülmüş bir sunucuda çalıştırmayı ele alıyor. Makinede 128 GB RAM var, ama DDR3 — bugünün en iyi dizüstü belleğinden beş-altı kat yavaş. İşlemci, 2016'dan tek bir Intel Xeon E5-2620 v4: 8 fiziksel çekirdek, 16 iş parçacığı, yalnızca AVX2 — AVX-512 ve BF16 yok — 20 MiB L3 ve 2 MiB L2 önbellek ve hiç GPU yok. ollama ve standart llama.cpp yeterince "ayar düğmesi" sunmuyor, dolayısıyla çözüm ik_llama.cpp çatalı ve 25 bayraklı bir komut satırı. CPU'da üretim bellek bant genişliğine takılıyor: işlemci matris işlemlerini bitiriyor, sonra ağırlıkların RAM'den önbelleğe taşınmasını bekliyor.

CPU'da spekülatif kod çözme ve MoE yönlendirmesi

Gemma 4 26B-A4B bir uzman karışımı modeli: 128 uzman, token başına 8 aktif, yani yaklaşık 25,2 milyar parametre içinde yaklaşık 3,8 milyar aktif parametre. --spec-type mtp, --draft-max 3, --draft-p-min 0.0 ve --spec-autotune bayrakları 26 milyarlık doğrulayıcıyı küçük MTP drafterıyla eşleştiriyor. Sørensen'e göre spekülatif kod çözme CPU'da GPU'dakinden daha çok kazandırıyor: doğrulayıcının ağırlıklarını önbellekten geçirmenin maliyetine kıyasla CPU döngüleri ucuz ve drafterın çalışma kümesi L3'e sığıyor. --cpu-moe, uzman yönlendirmesini CPU önbellek hiyerarşisine uydurarak 128 uzman arasındaki atlayışların önbelleği hırpalamasını önlüyor; --merge-up-gate-experts ise uzman başına iki projeksiyonu tek bir matmulda birleştiriyor (günlüklerde fused_up_gate = 1). İş parçacığı sayısı, -t 8, 16 SMT iş parçacığı yerine fiziksel çekirdekleri eşliyor, çünkü belleğe bağlı bir iş yükünde fazla iş parçacığı yalnızca planlama maliyeti ekliyor.

Sabitleme, yeniden paketleme ve sessizce başarısız olan bayraklar

--mlock çekirdekten ~27 GB ağırlığı fiziksel RAM'de tutmasını istiyor ve varsayılan olarak bu istek başarısız oluyor: "failed to mlock 27628376064-byte buffer ... Try increasing RLIMIT_MEMLOCK". Bayrak doğru, memlock sınırı değil; kara kutu araçları bu optimizasyonu hiç istemez ve modeli diske takas edilmeye bırakır. --run-time-repack, ağırlık matrislerini çıkarımdan önce CPU önbellek düzenine uyacak şekilde yeniden düzenliyor (günlükler: 265 tensör yeniden paketlendi), --no-kv-offload ise KV önbelleği için GPU arayışını kısa devre yapıyor. Grafik bölme bayrağı MTP ile karşılaşınca dayanmıyor: motor "Split mode 'graph' is not supported for Gemma4 external MTP => changing split mode to 'layer'" diyerek sıralı katman bölmeye düşüyor.

CPU'da Flash Attention ve bellek hesabı

ik_llama.cpp'nin yazarı ikawrakow, Flash Attention için özel CPU çekirdekleri yazdı: dikkat softmax'ını matmul'larla birleştiriyor, böylece N×N matris hiç RAM'e yazılmıyor — başlangıçta GPU için tasarlanmış bir optimizasyon. --mla-use 3, KV önbelleğini daha küçük bir gizli temsile sıkıştıran Multi-Head Latent Attention'ı etkinleştiriyor. İkisi de tuttu: flash_attn = 1, fused_moe = 1, fused_up_gate = 1. Nihai hesap 82.355 MiB — tam 262K bağlamda yaklaşık 25 GB ağırlık ve 56 GB KV önbelleği; önbellek modelin kendisinden büyük. Sørensen'in sonucu: yerel açık modellerin önündeki engel silikon değil — çıkarım motorunu derinlemesine anlamak gerekiyor.

SiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.