Belleğin dışındaki yol
SpAx, GPU belleğine sığmayan bir dil modelini çalıştırırken beklemenin nerede biriktiğini gösteriyor: ağırlıklar ana bellekten ya da depolamadan tekrar tekrar taşınıyor. İşlemcinin önündeki hesap, her belirteç için bu yolu izleyen bayt miktarı. Yeni ön baskıdaki yöntem, etkinleşmenin büyüklüğüne göre ağırlığı özgün biçimde okuyor, iki bitlik yaklaşık değerini alıyor veya hiç okumuyor. Küçük katkıları tümüyle silmek yerine bir ara düzey açıyor.[1]
Bu işin fiziksel sınırı, GPU ile dış bellek arasındaki bağlantı. Araştırmacılar llama.cpp üzerinde RTX 4090, PCIe 4.0 x8, 128 GB ana bellek ve NVMe depolama kullandı. Girdi metni yoğun biçimde işlendi; seçici aktarım yanıt üretirken devreye girdi. Karşılaştırma aynı modelin aynı ağırlık biçimindeki yoğun üretimine dayanıyor. Böylece daha az veri taşımanın etkisi, başka bir GPU satın almanın etkisinden ayrı görülebiliyor.[1]
Ana bellekten okumayla depolamadan okumak farklı işler. SpAx, birlikte kullanılan sütunları yan yana koyup bitişik okuma aralıklarını birleştiriyor. Depolamanın kaba okuma boyutu, küçük bir sütun seçilmiş olsa da daha fazla bayt taşıtıyor. İki bitlik değeri GPU üzerinde yeniden oluşturmak da süre tüketiyor. Bu nedenle en az baytı okuyan biçim her durumda en hızlı biçim çıkmıyor; kazanç, aktarım süresiyle yeniden oluşturma süresinin toplamında belirleniyor.[1]
İşe yarar hızın paydası
Yerel model çalıştıran kullanıcı için çıkarımım şu: belleğe sığmama sorununun bir bölümü, ağırlıkları taşıma düzenini değiştirerek hafifletilebilir. Bunun karşısında başka bir olasılık var: kısıtlı GPU belleği altında dikkat verisi veya başka hesaplar süreyi belirleyebilir. Deneylerde sözcük gömme, çıktı katmanı ve dikkat önbelleği GPU'da kaldı. Deneyin kazancı, bu parçaları da dış belleğe taşımak zorunda olan bir kurulumun kazancı olarak okunamaz.[1]
Kalite hesabı da taşınan veriyle birlikte duruyor. SpAx, WikiText-2 üzerinde dil modelinin sözcük dizilerine verdiği olasılığı, ayrı görevlerde ise yanıt doğruluğunu sınadı. Ağırlıkların okunmayan veya yaklaşık okunan kısmı hatasız bir sıkıştırma değil. Yerel kullanımda kabul edilen kalite sınırı, işe yarar üretim hızının paydasını değiştiriyor. Sadece daha az bayt aktarmak, kullanıcıya aynı doğrulukta daha çok yanıt verildiğini söylemeye yetmiyor.[1]
Bu yöntem için somut mühendislik basamağı, tekli üretimde çalışan araştırma uygulaması. Yeni bir kurulumun hesabında modelin hangi kısmının GPU'da kaldığı, belirteç başına gerçekten taşınan bayt ve yaklaşık ağırlığın yeniden oluşturulma süresi birlikte yer almalı. NVMe tarafında seçilen baytlarla okunan baytların ayrılması özellikle gerekli. SpAx'in gösterdiği fırsat, mevcut donanımda ağırlık aktarımını değiştirmek; ölçülen sınır da aynı aktarım yolunu ve kaliteyi koruyan iş yükü.[1]