« Tüm yayınlar

Tesla P100'ün llama.cpp'deki yıllık FP16 hatası 3 satırla çözüldü

llama.cpp'deki 3 satırlık CUDA yaması, Tesla P100'ün yıllardır süren gizli FP16 hassasiyet hatasını performans kaybı olmadan gideriyor.

llama.cpp'nin CUDA kod tabanında, bazı GPU mimarilerini hızlı fp16 hesaplama yoluna yönlendiren bir bayrak bulunuyor. GTX 10 serisi ve P40 (sm_61) bu yoldan uzun süre önce muaf tutulmuştu; ancak paradoksal biçimde gerçek fp16 donanımına sahip olan P100 (sm_60) bu muafiyeti hiç almamıştı. Sonuç, yıllardır fark edilmeden çalışan sessiz bir hassasiyet kaybıydı.

Sorun, aynı modelin farklı makinelerde tutarsız kalite tabanları vermesiyle fark edildi ve KL diverjansı ölçümleriyle doğrulandı: medyan KLD 0.0023'ten 0.000001'e geriledi (~2300 kat iyileşme), en üst token uyumu ise %96.5'ten %99.9'a çıktı. Düzeltme performanstan ödün vermiyor; decode hızı aslında yaklaşık %1.4 daha hızlı ölçüldü, çünkü gerçek iş yükleri fp16 vektör yolundan değil GEMM ve bellek bant genişliğinden sınırlanıyor.

3 satırlık yama turboquant v0.3.0 ile yayınlandı ve yalnızca sm_60 mimarisini etkiliyor; diğer mimariler (Volta ve sonrası, P40/1080) bu değişiklikten etkilenmiyor. Yaklaşık 80 dolara satılan P100'ler, 16GB HBM2 belleği ve 732 GB/s bant genişliğiyle bu düzeltmeyle mühendisler için daha da cazip bir seçenek haline geliyor.