Yerel LLM Üretiminde 3 Tasarım Hatası Neden Birden Çöküyor

Kendi sunucularında çalıştırdığın LLM stack'i 3 a.m.'de aniden sessiz kalıyor. Hata kodu yok, temiz bir timeout da değil, sadece durmuş. Pager çalıyor, SSH'a giriyorsun: bir process %100 CPU yiyor, GPU %0'da oturuyor, loglar ECONNRESET hatalarıyla dolu. Agent fleet'in boş olması gerekiyordu ama aslında retry fırtınasının ortasında. MoE model CPU RAM'e atılmış, swap loop'a girmiş. Ve bütün bunları tetikleyen fetch() çağrısı? 47 dakika asılı kalıyor çünkü timeout'u hiç ayarlanmamış.

Bu yerel LLM üretim tuzağı tek bir bug değil, üç ayrı tasarım kararının kötü etkileşimi. Her biri yalnızca bakıldığında makul, ama birlikte ortaya çıktıkça tam bir felaket.

Birinci sorun: MoE (Mixture of Experts) modelini CPU RAM'e offload etmek. GPU yetersiz geldiğinde çekici gözüküyor. Ama bir expert aktivasyonu başarısız olursa sistem swap'a düşüyor; disk I/O'su CPU'yu boğuyor. İkinci sorun: agent fleet'ler. Bir istek başarısız olunca otomatik retry mekanizması devreye giriyor, ama timeout yoksa veya çok yüksekse binlerce agent aynı anda yeniden denemeye başlıyor. Üçüncü ve en sessiz sorun: fetch() çağrılarında timeout. JavaScript'te (veya Node.js'te) fetch() varsayılan olarak timeout'u desteklemiyor; siz eklemezseniz istek sonsuza kadar bekler.

Bu üçü birlikte olunca ne oluyor? Bir expert loading başarısız agent retry başlıyor fetch() timeout olmadığı için asılı kalıyor daha fazla agent join ediyor CPU ve bellek tükeniyor sistem freeze.

Çözüm basit ama disiplinli: her fetch() çağrısına AbortController ile timeout ekle, agent retry'ında exponential backoff ve maksimum deneme sayısı koy, MoE offloading'de memory pressure monitoring yap. Üretim ortamında "sessiz" hatalar en tehlikeli olanıdır, hata logu olmayan, sadece durmuş bir sistem.

konu hakkında tepkinizi verebilirsiniz