Flash Attention für llama.cpp auf RDNA3: 47 % weniger KV-VRAM gegenüber Vulkan
Der Reddit-Nutzer DrBearJ3w hat für AMDs RDNA3-Architektur einen experimentellen Flash-Attention-Kernel für llama.cpp entwickelt, der den K-Cache nicht als herkömmliche fp16-Tensoren ablegt, sondern vier INT8-Werte in ein einzelnes 32-Bit-Register packt und direkt an die native sudot4-Dot-Product-Instruktion der GPU übergibt. Das Verfahren ist mathematisch verlustlos für die K-Seite: Die fp16-Werte werden pro Block per Absmax skaliert, als INT8 verpackt und beim Attention-Pass exakt dequantisiert. Qualitätsmessungen auf WikiText-2 mit einem 27B-Modell (ctx=512) zeigen mit q4_0-V einen Mean-KLD von 0,00455 und eine PPL-Ratio von 1,002 – beides weit unter der Wahrnehmungsschwelle von 0,01. Mit q8_0-V halbiert sich der KLD auf 0,00283. Der praktisch relevanteste Effekt zeigt sich bei 128k-Kontext mit aktivem MTP-Draft-Modell (zwei volle Kontexte gleichzeitig): ROCm packed16-K benötigt dort 21,76 GiB statt 23,18 GiB (Vulkan f16-K) – eine Ersparnis von 1,42 GiB, die darüber entscheiden kann, ob eine Session überhaupt in den VRAM passt. Der Branch ist unter dem GitHub-Handle DrBearJew öffentlich verfügbar; es handelt sich laut Autor um Teil 1 einer laufenden Entwicklung.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.
Verwandte Beiträge
Flash Attention für llama.cpp auf RDNA3: 47 % weniger KV-VRAM gegenüber Vulkan
Der Reddit-Nutzer DrBearJ3w hat für AMDs RDNA3-Architektur einen experimentellen Flash-Attention-Kernel für llama.cpp entwickelt, der den K-Cache nicht als herkömmliche fp16-Tensoren ablegt, sondern vier INT8-Werte in ein einzelnes 32-Bit-Register packt und direkt an die native sudot4-Dot-Product-Instruktion der GPU übergibt. Das Verfahren ist mathematisch verlustlos für die K-Seite: Die fp16-Werte werden pro Block per Absmax skaliert, als INT8 verpackt und beim Attention-Pass exakt dequantisiert. Qualitätsmessungen auf WikiText-2 mit einem 27B-Modell (ctx=512) zeigen mit q4_0-V einen Mean-KLD von 0,00455 und eine PPL-Ratio von 1,002 – beides weit unter der Wahrnehmungsschwelle von 0,01. Mit q8_0-V halbiert sich der KLD auf 0,00283. Der praktisch relevanteste Effekt zeigt sich bei 128k-Kontext mit aktivem MTP-Draft-Modell (zwei volle Kontexte gleichzeitig): ROCm packed16-K benötigt dort 21,76 GiB statt 23,18 GiB (Vulkan f16-K) – eine Ersparnis von 1,42 GiB, die darüber entscheiden kann, ob eine Session überhaupt in den VRAM passt. Der Branch ist unter dem GitHub-Handle DrBearJew öffentlich verfügbar; es handelt sich laut Autor um Teil 1 einer laufenden Entwicklung.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.