llama.cpp prompt lookup: eksik bir ampersand, hızlı hash map'i geçti

llama.cpp prompt lookup drafting'te map'leri referansla okumak 4.5x-25x hız getirdi, flat hash map ise en fazla %13. Önce kopyaları profile edin.

llama.cpp prompt lookup drafting kartı: 16 satırlık diff ile 4.5x-25x hız ve veri yapısını değiştirmeden önce kontroller.

Daha hızlı bir hash map'e geçmek klasik C++ hızlandırmasıdır. llama.cpp'nin prompt lookup drafting'inde ise sayıyı neredeyse hiç kıpırdatmadı.

Hayder Tirmazi tuning çalışmasını cumartesi günü yayınladı. Prompt lookup decoding, token'ları n-gram sayımlarından draft eder, yani draft modeli neredeyse bedavadır. Etrafındaki kod öyle değildi.

En büyük kazanç 16 satırlık bir diff'ti: her draft adımında iç map'leri kopyalamayı bırakıp onları referansla okumak. Drafting 4.5x ile 25x arası hızlandı.

Ardından gelen flat hash map, %13'e varan daha hızlı drafting için yaklaşık 4.500 satırlık vendored kod getirdi. İlk sıralı vector versiyonu, yerini aldığı koddan daha yavaş çalıştı, ta ki binary search'ü yeniden yazana kadar. Daniel Lemire'ın erken eşik çıkışı da toplamı 140x'e taşıdı.

Bir veri yapısını değiştirmeden önce:

  • Önce kopyalar için profiling yapın.
  • Bir key'in kaç kayıt tuttuğunu sayın.
  • Her değişikliği tek başına ölçün.

En ucuz düzeltme çoğu zaman eksik bir ampersand'dır.

Bu yazı İngilizce aslından Türkçeye çevrilmiştir.

Videoyu LinkedIn'de izle ↗