Fortgeschritten 12 Min.Optimierung

Flash Attention 2: Aktivieren (llama.cpp, Ollama, vLLM)

Flash Attention 2 (FA2) ist die Optimierung, die ein lokales LLM mit langem Kontext von unbrauchbar auf komfortabel verwandelt. Aktiviert über eine Umgebungsvariable in Ollama, über einen Flag in llama.cpp, standardmäßig in vLLM – vorausgesetzt, Ihre GPU unterstützt es wirklich. Dieser Guide zeigt, wie man es in den drei wichtigsten Runtimes aktiviert, den tatsächlichen Gewinn (KV-Cache-Speicher und Tokens/s) je nach Kontextgröße misst und die Fälle identifiziert, in denen es keinen Nutzen bringt.

Von Mohamed Meguedmi·Aktualisierung 2026-08-31·Unter Windows, macOS und Linux getestet
i
Kurz gesagt
Flash Attention 2 berechnet die Attention blockweise im SRAM der GPU neu, statt die gesamte Matrix zu materialisieren, ohne das Ergebnis zu verändern. · Aktivierung in Ollama mit OLLAMA_FLASH_ATTENTION=1, in llama.cpp mit dem Flag -fa und in vLLM standardmäßig seit Version 0.2. · Erfordert eine neuere GPU (NVIDIA Ampere oder neuer, AMD RDNA 3/4 über ROCm); auf Apple Silicon bietet Metal bereits nativ eine entsprechende Funktion. · Gemessener Gewinn auf einer RTX 4090 (Mistral Small 24B Q4_K_M, 16k Tokens): +28 % Geschwindigkeit und -2,8 GB VRAM.

#Warum Flash Attention 2

Die klassische Attention eines Transformers hat eine quadratische Speicherkomplexität in Abhängigkeit von der Kontextlänge. Eine Verdopplung der Kontextlänge vervierfacht den VRAM-Verbrauch der Attention. Bei 32.000 Tokens kann die Attention-Matrix allein bei einem 8B-Modell in FP16 mehr Speicher beanspruchen als die Modellgewichte.

Flash Attention, 2022 von Tri Dao eingeführt und 2023 zu FA2 weiterentwickelt, verändert das mathematische Ergebnis nicht: Es verändert die Art der Berechnung. Die Idee ist, die Attention direkt im SRAM der GPU blockweise (Tiling) zu berechnen, statt die vollständige Matrix im HBM abzulegen. Das Ergebnis ist bis auf Unterschiede durch die Rechengenauigkeit exakt identisch mit dem der naiven Attention-Berechnung.

Praktisch betrachtet bietet FA2 bei einem lokalen LLM im Inferenzmodus zwei Vorteile, die sich gegenseitig verstärken: Der für die Aufmerksamkeit reservierte Speicher wird von quadratisch auf fast linear in Bezug auf die Kontextgröße, was den KV-Cache erheblich reduziert, und der Durchsatz steigt bei langen Kontexten um 2 bis 4-fach, da kostspielige Speichereinheiten eliminiert werden.

i
Was FA2 nicht ist
Das ist keine Kompression. Die Generationsqualität ist bitgenau gleich (bis auf die Reihenfolge der Gleitkommaadditionen). Es handelt sich auch nicht um Quantisierung: FA2 und die Quantisierung des KV-Caches (z. B. Q8_0) sind zwei unterschiedliche Optimierungen, die Sie kombinieren können.

#GPU- und Softwarevoraussetzungen

Das Lokale-KI-Paket

Ihr privates, kostenloses ChatGPT auf Ihrem Rechner in einer Stunde – mit LM Studio, Ollama, Open WebUI und Ihren Dokumenten, ganz ohne Cloud.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Erstattung binnen 30 Tagen

Flash Attention 2 nutzt spezielle Matrixinstruktionen (Tensor Cores), die nur auf bestimmten GPU-Generationen vorhanden sind. Das ist das erste Kriterium, das Sie prüfen sollten, bevor Sie sich mit etwas anderem befassen.

NVIDIA Ampere (RTX 3000, A100) und neuere Architekturen
Vollständige und leistungsfähige FA2-Unterstützung. Das ist der optimale Bereich: Compute Capability 8.0+.
NVIDIA Ada Lovelace (RTX 4000) und Blackwell (RTX 5000)
Optimale native Unterstützung. Maximale Zugewinne auf RTX 4090 / 5090 dank Tensor-Cores der Hopper-Klasse.
NVIDIA Turing (RTX 2000, T4)
Teilweise Unterstützung und geringere Geschwindigkeit. FA2 funktioniert, profitiert aber nicht von den BF16-Instruktionen. Aktivieren Sie es und messen Sie: manchmal ohne Effekt, manchmal mit positivem Effekt.
NVIDIA Pascal (GTX 1080 Ti, P40) und älter
Nicht unterstützt. Es gibt keine Tensor Cores. Das Flag wird ohne Hinweis ignoriert oder verursacht bei der Ausführung einen Fehler.
AMD RDNA 3/4 (RX 7000/9000)
Unterstützung über ROCm mit der offiziellen Portierung von Flash Attention (composable_kernel). Auf der RX 7900 XTX und höher angesiedelten Karten liegt die Leistung nahe an der nativen Ausführung.
Apple Silicon (M1 bis M4)
Kein Flash Attention 2 im eigentlichen Sinne. Metal verfügt über eigene fusionierte Attention-Kernel. Die Laufzeitumgebungen (llama.cpp Metal, MLX) verwenden automatisch eine entsprechende Variante; Sie müssen nichts aktivieren.
!
Erforderliche Präzision: FP16 oder BF16
FA2 funktioniert nicht im FP32. GGUF-Modelle (Q4_K_M, Q5_K_M usw.) werden bei Bedarf dynamisch in FP16 dequantisiert für die Aufmerksamkeitsberechnung, daher funktioniert es. Wenn Sie jedoch ein Modell im FP32 laden (selten bei Inference), deaktivieren Sie FA2 oder der Runtime lehnt es ab.

#Flash Attention 2 in Ollama aktivieren

Seit Version 0.3 unterstützt Ollama Flash Attention über eine Umgebungsvariable. Historisch war die Funktion standardmäßig nicht aktiviert, da ältere Grafikkarten sie möglicherweise nicht unterstützen. Sie müssen sie selbst aktivieren.

Temporäre Aktivierung (Linux/macOS)
OLLAMA_FLASH_ATTENTION=1 ollama serve

Um es über systemd persistent zu machen (typischer Linux-Fall):

systemd drop-in
sudo systemctl edit ollama.service

# Dans l'éditeur, ajoutez :
[Service]
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"

# Puis :
sudo systemctl daemon-reload
sudo systemctl restart ollama

Unter Windows fügen Sie die Benutzerumgebungsvariable über Systemsteuerung > System > Umgebungsvariablen hinzu und starten anschließend Ollama neu. Unter macOS verwenden Sie launchctl setenv oder fügen die Variable in die rc-Datei Ihrer Shell ein.

→
Kombinieren Sie dies mit der Quantisierung des KV-Caches
OLLAMA_KV_CACHE_TYPE=q8_0 quantisiert den KV-Cache auf 8 Bit und halbiert damit erneut seine Größe bei nahezu keinem Qualitätsverlust. In Kombination mit FA2 können Sie die Kontextgröße, die in Ihren VRAM passt, verdreifachen. q4_0 ist noch aggressiver, macht sich bei Reasoning-Modellen aber bereits in der Qualität bemerkbar.

Um zu überprüfen, ob FA2 aktiv ist, starten Sie ollama mit OLLAMA_DEBUG=1 und suchen Sie in den Logs beim Laden des Modells die Zeile flash_attention=true.

#Flash Attention 2 in llama.cpp aktivieren

llama.cpp bietet einen expliziten Schalter und ermöglicht damit mehr Kontrolle als Ollama: -fa (oder --flash-attn in der Langform). Er lässt sich sowohl mit llama-cli als auch mit llama-server verwenden.

llama-cli mit FA2
./llama-cli -m models/mistral-small-24b-instruct-q4_k_m.gguf \
  --flash-attn \
  --ctx-size 32768 \
  -p "Résume ce document..."
llama-server mit FA2
./llama-server -m models/mistral-small-24b-instruct-q4_k_m.gguf \
  -fa \
  --ctx-size 32768 \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --host 0.0.0.0 --port 8080

Die Flags --cache-type-k und --cache-type-v quantisieren die Schlüssel bzw. die Werte des KV-Caches. q8_0 ist die verlässliche Wahl (nahezu kein Qualitätsverlust), q4_0 ist die aggressive Option. Beachten Sie, dass die Quantisierung des KV-Caches aktiviertes FA2 erfordert: Ohne -fa werden diese Flags abgelehnt.

i
Kompilierung erforderlich
Wenn Sie llama.cpp mit -DGGML_CUDA=ON kompiliert haben, ist FA2 automatisch enthalten. Bei Vulkan-Builds ist die FA2-Unterstützung neuer und weniger ausgereift – testen Sie sie vor dem Einsatz in der Produktion. Bei Metal (macOS) ist FA2 nativ integriert; das Flag -fa wird akzeptiert, aber die Implementierung nutzt Apples Kernel.

#Flash Attention 2 in vLLM aktivieren

vLLM verwendet seit Version 0.2 standardmäßig Flash Attention 2 und wechselt auf Hopper (H100) und Blackwell zu FlashAttention-3, wenn dies möglich ist. In der Regel müssen Sie nichts aktivieren. Eingreifen müssen Sie nur, wenn Sie ein bestimmtes Backend erzwingen möchten, beispielsweise für einen Vergleich oder um einen Bug auf einer exotischen GPU zu umgehen.

Die Verwendung des Flash-Attention-Backends erzwingen
VLLM_ATTENTION_BACKEND=FLASH_ATTN \
  vllm serve mistralai/Mistral-Small-24B-Instruct-2501 \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.90

Die verfügbaren Backends sind FLASH_ATTN (FA2), FLASHINFER (bei bestimmten Größen noch schneller, erfordert die Installation von flashinfer), XFORMERS (Fallback für Ampere und ältere Architekturen) und TORCH_SDPA (generischer Fallback). Auf neueren GPUs sind FLASH_ATTN oder FLASHINFER eine gute Wahl.

→
FlashInfer auf Hopper / Blackwell
Wenn Sie Qwen 3.6 35B oder ein größeres Modell auf H100/B200 mit vielen gleichzeitigen Anfragen bereitstellen, installieren Sie flashinfer und setzen Sie VLLM_ATTENTION_BACKEND=FLASHINFER. Der Durchsatzgewinn bei der Batchverarbeitung ist messbar (10–20 % je nach Last), da FlashInfer die paginierten KV-Caches von vLLM besser optimiert.

#Gemessener Gewinn nach Kontextgröße

Der Leistungsgewinn durch Flash Attention 2 hängt stark von der Kontextlänge ab. Bei kurzem Kontext ist er gering oder sogar negativ (Overhead durch Tiling). Bei langem Kontext entscheidet er darüber, ob das Modell überhaupt läuft. Hier sind repräsentative Größenordnungen für eine RTX 4090 mit 24 GB und Mistral Small 24B Q4_K_M.

Kontext: 2k Tokens
Ohne FA2: 40 Tok/s, 14,6 GB VRAM. Mit FA2: 41 Tok/s, 14,4 GB. Zugewinn: ~2 %. Bei dieser Größenordnung unnötig.
Kontext mit 8k Tokens
Ohne FA2: 36 Tokens/s, 16,2 GB. Mit FA2: 39 Tokens/s, 15,0 GB. Verbesserung: 8 % höhere Geschwindigkeit, 1,2 GB weniger Speicherbedarf.
16k-Token-Kontext
Ohne FA2: 29 Tok/s, 18,8 GB. Mit FA2: 37 Tok/s, 16,0 GB. Verbesserung: +28 % Geschwindigkeit, –2,8 GB.
32k-Token-Kontext
Ohne FA2: OOM (>24 GB). Mit FA2: 32 Tok/s, 18,6 GB. FA2 macht einen Kontext von 32k überhaupt erst nutzbar.
Kontext von 64k Tokens (FA2 + KV q8_0)
30 tok/s, 21,5 GB. Ohne FA2 und ohne KV-Quantisierung: mit 24 GB unmöglich.

Bei Qwen 3.5 9B (einem kleineren Modell mit einer anderen Dimension der Attention-Köpfe) ist der Gewinn bei 32k bescheidener (+15 % Geschwindigkeit), weil die Attention einen geringeren Anteil am gesamten Rechenaufwand hat. Bei Qwen 3.8 27B, einem schwergewichtigeren Reasoning-Modell, ist der Gewinn bei 16k enorm (+45 %), da das Verhältnis von Attention zu Feedforward zugunsten von FA2 ausfällt.

i
Messen Sie auf Ihrem eigenen System
Diese Zahlen geben eine Größenordnung an. Die Größe der Aufmerksamkeitsköpfe, die Quantisierung des Modells, die GPU-Taktfrequenz und die Runtime-Version lassen den Leistungsgewinn um ±20 % schwanken. Führen Sie Ihren typischen Prompt mit und ohne -fa aus, um zu entscheiden.

#Fälle, in denen es nicht hilft (oder schadet)

GPU Pascal / Maxwell
GTX 1080 Ti, P40, Tesla M40, Titan X Maxwell. Keine kompatiblen Tensor-Cores. Das Flag wird in Ollama ignoriert und in neueren Versionen von llama.cpp abgelehnt. Kein Leistungsgewinn möglich — verwenden Sie xformers oder verzichten Sie auf eine solche Optimierung.
Sehr kurze Inferenz (Chat 500 Tokens)
Wenn Sie durchgehend kurze Antworten auf kurze Prompts generieren, verursacht FA2 einen Overhead von einigen Prozent, ohne einen Nutzen zu bringen. Das fällt vor allem bei kleinen Modellen mit 1B bis 3B auf.
CPU allein
FA2 ist eine GPU-Optimierung. Bei llama.cpp auf der CPU wird das Flag ignoriert. CPU-Optimierungen erfolgen über andere Wege (ARM SVE, AVX-512 usw.).
Modelle mit nicht standardkonformer Sliding-Window-Attention
Gemma 4 (globale/lokale Aufmerksamkeitsalternierung) und die Varianten Mistral mit rutschender Fenster: Je nach Runtime-Version kann FA2 auf einen Fallback zurückfallen. Prüfen Sie die Protokolle, manchmal unterstützt der Backend dies noch nicht.
Apple Silicon
Auf M1–M4 wird das Flag -fa von llama.cpp akzeptiert, die Implementierung läuft jedoch über Metal, das bereits eigene Optimierungen vornimmt. Der gemessene Leistungsgewinn ist marginal, da die Attention-Berechnung in Metal bereits nativ fusioniert ist.

#FA2 vs xformers vs PyTorch SDPA

Beim Lesen der Dokumentation der Runtimes werden Ihnen diese drei Namen begegnen. Sie erfüllen nicht genau dieselbe Funktion und sind unterschiedlich alt.

xformers (Meta, 2021)
Bibliothek effizienter Kernel einschließlich memory_efficient_attention. Vorläufer von Flash Attention. Wird weiterhin beim Fine-Tuning (Unsloth, Axolotl) verwendet, weil sie mehr Attention-Varianten unterstützt. Bei der Inferenz auf Ampere+ langsamer als FA2.
Flash Attention 2 (Tri Dao, 2023)
Der Nachfolger von Flash Attention 1. Speziell für Inferenz und Training entwickelt, mit handgeschriebenen CUDA-Kernels; am schnellsten auf Ampere und Hopper. 2026 ein De-facto-Standard.
PyTorch SDPA
torch.nn.functional.scaled_dot_product_attention. Seit PyTorch 2.0 wird automatisch auf Flash Attention 2 umgeleitet, wenn möglich, sonst auf xformers, sonst auf die naive Implementierung. Dies ist das, was vLLM und viele Runtime-Systeme intern verwenden.
FlashAttention-3 (Tri Dao + NVIDIA, 2024)
Speziell für Hopper-GPUs (H100) und Blackwell. Nutzt FP8 und Warp-spezialisierte Asymmetrie. Wenn Sie eine H100 verwenden, übertrifft FA3 FA2. Auf RTX-Karten für Endverbraucher bleibt FA2 die Zielversion.
→
In der Praxis müssen Sie sich nicht entscheiden
Die Laufzeitumgebung entscheidet für Sie: vLLM wählt das beste Backend anhand der erkannten GPU, llama.cpp nutzt über das Flag -fa seine eigene FA2-Implementierung, Ollama ebenso. Die oben genannten Unterschiede sind relevant, wenn Sie PyTorch-Code schreiben oder Fine-Tuning durchführen.

#Fehlerbehebung

Das Flag scheint ignoriert zu werden (kein Leistungsgewinn)
Prüfen Sie die Version der Laufzeitumgebung (Ollama ≥ 0.3, aktueller Commit von llama.cpp). Aktivieren Sie die ausführliche Protokollierung: OLLAMA_DEBUG=1 oder llama-cli --verbose. Suchen Sie nach flash_attention=true oder flash_attn=enabled.
Fehler „unsupported head dimension“
Einige Head-Dimensionen (96, 192) werden nicht von allen FA2-Versionen unterstützt. Aktualisieren Sie die Laufzeitumgebung oder wechseln Sie zurück zum Standard-Backend. Das betrifft vor allem exotische Modelle.
Sichtbarer Qualitätsverlust
Sehr selten mit FA2 allein (mathematisch äquivalentes Ergebnis). Wenn Sie eine Qualitätsverschlechterung bemerken, liegt das wahrscheinlich an der Quantisierung des KV-Caches, nicht an FA2. Deaktivieren Sie --cache-type-k/v und prüfen Sie, ob das Problem weiterhin besteht.
OOM trotz aktiviertem FA2
FA2 reduziert den Speicherbedarf der Attention, nicht den der Modellgewichte. Wenn Ihr 30B-Modell in Q5 nicht in 16 GB VRAM passt, hilft FA2 nicht weiter. Gehen Sie bei der Quantisierung eine Stufe herunter (Q4_K_M) oder verwenden Sie ein kleineres Modell.
vLLM greift auf xformers statt auf FA2 zurück
Prüfen Sie die Installation: pip install flash-attn --no-build-isolation. Auf Turing bevorzugt vLLM xformers, weil FA2 dort weniger gut optimiert ist. Das ist das erwartete Verhalten.

#Weiterführende Informationen

Flash Attention 2 ist die erste Maßnahme, um den nutzbaren Kontext bei einer gegebenen VRAM-Kapazität zu erweitern. Wenn Sie bei der Optimierung weitergehen möchten, bieten diese verwandten Leitfäden eine gute Ergänzung:

GGUF-Quantisierung 2026: Q4_K_M vs Q5_K_M vs Q6_K
Die naheliegende Ergänzung: die Modellgröße reduzieren, um VRAM freizugeben, und dies mit FA2 kombinieren, um längere Kontexte zu ermöglichen.
llama.cpp mit CUDA kompilieren
Unverzichtbar, wenn Sie die neueste Version von FA2 in llama.cpp nutzen und saubere Benchmarks durchführen möchten.
vLLM in der Produktion einsetzen
FA2 entfaltet sein volles Potenzial auf einem Server, der mehrere Anfragen gebündelt verarbeitet: Dort steigt der Gewinn enorm.
Häufige Fragen zu Flash Attention
Wie aktiviert man Flash Attention in llama.cpp und LM Studio im Jahr 2026?+
In llama.cpp genügt auf der Kommandozeile das Flag -fa (oder --flash-attn on für den Server). LM Studio aktiviert Flash Attention inzwischen standardmäßig für CUDA, Metal und Vulkan: Wenn Sie eine ältere Version verwenden, aktivieren Sie die Option in den Einstellungen der Inferenz-Engine. In Ollama bleibt die Variable OLLAMA_FLASH_ATTENTION=1 die oben beschriebene Methode.
Macht Flash Attention 3 einen Unterschied für ein lokales LLM?+
Nicht für den Endverbraucherbereich: FA3 richtet sich an Hopper-Rechenzentrums-GPUs (H100) und deren spezielle Instruktionen. Bei Consumer-Hardware (RTX 30/40/50, Mac, Radeon) kommen die Leistungsgewinne durch die in llama.cpp integrierte FA2-Implementierung zustande — es muss kein zusätzliches Flag angegeben werden.
Warum ist Flash Attention auf meiner AMD-GPU langsamer?+
Eine bekannte Stolperfalle bei ROCm/HIP: Der fusionierte Kernel wird nur verwendet, wenn die beiden Typen des KV-Caches symmetrisch sind (zum Beispiel q4_0 sowohl für K als auch für V). Bei einer Kombination wie q4_0 + f16 wird ohne jede Warnung auf einen nicht fusionierten, langsameren Pfad zurückgefallen. Verwenden Sie für beide denselben Typ und führen Sie den Benchmark erneut durch.
Kann ich Flash Attention mit einem quantisierten KV-Cache kombinieren?+
Ja, auf NVIDIA, sofern Ihr llama.cpp-Build mit FA_ALL_QUANTS kompiliert wurde — andernfalls wird die Attention auf der CPU berechnet und die Leistung bricht ein. Auf dem Mac unterstützt LM Studio diese Kombination nativ über Metal. Vergleichen Sie im Zweifelsfall die tok/s mit und ohne Cache-Quantisierung: Der Unterschied ist sofort erkennbar.
Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.