Google'ın Gemma-4 31B modelinin bir AWS Inferentia2 inf2.24xlarge üzerine taşınması, CPU referansı ile token bazında mükemmel bir eşleşme sağladı; ancak üretilen her cümle anlamsızdı. "Eşleşme" ile "çalışma" arasındaki bu fark, devasa LLM'leri Amazon'un özel çıkarım (inference) çiplerine sığdırmaya çalışan herkes için bir uyarı niteliği taşıyor.

Neden token bazlı bir eşleşme yeterli değildir

Geliştirici, Inferentia cihazından gelen her bir çıktı token'ını, modelin CPU üzerinde çalıştırılmasıyla üretilen token ile karşılaştırdı. Akışlar özdeşti, bu nedenle donanım referans uygulamasını tam olarak yeniden üretmiş gibi görünüyordu. Gerçekte ise her iki akış da, sohbet şablonu (chat template) kaldırılmış ve yanlış dönüş işaretleyicileri (turn markers) ile beslenmiş bir modele hatalı biçimlendirilmiş bir istem (prompt) gönderiyordu. Eksik şablon, modeli sonsuz bir döngüye sokarak anlamsız çıktılar üretmesine neden oldu. Donanım görevini yaptı; referans kodda mevcut olan bir hatayı yeniden üretti.

Ders basit: SEQ_MATCH (ardışık token eşitliği) doğruluk anlamına gelmez. Eğer referans uygulama bozuksa, donanımın sadık bir kopyası da aynı hatayı devralır. Doğrulama, token düzeyindeki paralitenin ötesine geçmeli; düzgün biçimlendirilmiş girdilerle uçtan uca fonksiyonel kontroller gerektirmelidir.

Parametre kılığına girmiş tamponlar (buffers)

Yükleme aşamasında model yükleyici, layer_scalar adlı bir bileşeni atladı. Kod, PyTorch model tanımında bu nesneyi bir parametre yerine bir buffer (tampon) olarak kaydetti. Buffer'lar, eğitimin güncellemediği statik tensörlerdir ve birçok yükleyici, Neuron uyumlu formatlara dönüştürürken bunları görmezden gelir. Bu bileşenin atlanması, birkaç katman için ölçeklendirme faktörlerini varsayılan değerlerinde bırakarak tüm ağ genelindeki matematiksel işlemleri bozdu. Hiçbir hata oluşmadı; model derlendi ve çıkarım hattı (inference pipeline) çalıştı, ancak sayısal sonuçlar hatalıydı.

Büyük modelleri Inferentia'ya taşıyan herkes, parametre olmayan her tensörü denetlemelidir. Bir tensör öğrenilmek üzere tasarlanmamış olsa bile, doğru ileri geçiş (forward-pass) hesaplaması için hala gerekli olabilir. Buffer dahil edilmesini manuel olarak doğrulamak, aksi takdirde teşhis edilmesi zor olan sessiz ölçeklendirme hatalarını önleyebilir.

Spot instance oynaklığı ve 39 dakikalık derleme süreci

31 milyar parametreli bir modeli bir spot instance üzerinde çalıştırmak ucuz görünür, ancak tasarruf, öngörülemeyen geri alma (reclaim) olaylarıyla birlikte gelir. Geliştiricinin modeli Neuron uyumlu koda dönüştürmek için harcadığı yaklaşık 39 dakikalık derleme süresi, AWS örneği geri aldığında yok olup gitti. Kesintilere dayanabilmek için üç kollu bir güvenlik ağı oluşturdular:

  • ModelBuilder bellek kullanımını 384 GB ana makine sınırı içinde tutarak yeniden başlatmaya zorlayacak çökmeleri önledi.
  • Hem ham ağırlık dosyalarının hem de derlenmiş “neffs” (Neuron yürütülebilir dosyaları) dosyalarının anlık S3 aynalaması (mirroring), yeni bir örneğin tam olarak bir öncekinin kaldığı yerden devam etmesini sağladı.
  • Bir çok bölgeli tarayıcı (multi-region poller), mevcut spot kapasitesi için AWS bölgelerini taradı ve uygun bir kapasite görünür görünmez yeni bir örnek başlattı.

Bu adımlar, kırılgan ve tek noktaya bağlı bir derleme sürecini, spot piyasaların dalgalanmalarına dayanan dayanıklı bir boru hattına (pipeline) dönüştürdü.

Karmaşık attention düzenleri ile sharding tuzakları

Gemma-4 31B iki attention konfigürasyonu kullanır. Bazı katmanlar dört anahtar-değer (KV) başlığı (head) kullanırken, diğerleri farklı bir sayı kullanır. Bir katmanın KV başlığı sayısı tam bölünemediğinde, modeli sekiz paralel rank arasında eşit olarak bölmek (sharding) başarısız olur. 4 başlıklı bir katmanı sekiz rank arasında bölmeye çalışmak, her bir rank'ın yarım bir başlığı işlemesine neden olur; bu da şekil uyumsuzluklarını (shape mismatches) ve çalışma zamanı hatalarını tetikleyen matematiksel bir imkansızlıktır.

Çözüm, küresel olarak bölünmüş katmanları (başlık sayıları uyumlu olanlar) tüm rank'lar arasında çoğaltmak ve yalnızca başlık sayıları eşit bölünmeye izin veren "kayan" (sliding) katmanları bölmekti. Bu hibrit strateji, KV başlıklarının yasadışı bölünmesini önlerken tensör-paralel verimliliğini korudu ve önceki girişimleri engelleyen tensör paralelleştirme hatalarını ortadan kaldırdı.

Sonuç

Dev bir LLM'yi Inferentia'ya taşımak, sadece bir "derle ve çalıştır" egzersizinden daha fazlasıdır. Token eşitliğinin ötesinde titiz fonksiyonel testler, her tensörün (parametre veya buffer) doğru şekilde işlendiğine dair dikkatli bir doğrulama ve spot instance geri almalarını öngören bir dağıtım stratejisi gerektirir. Son olarak, sharding, modelin dahili attention geometrisine saygı duymalıdır; aksi takdirde, hız vaat eden paralellik, sessiz bir başarısızlık kaynağına dönüşür.