pass 1 — causal self-attention on prompt slice
packed input
prompt (1,000 tok)
resp₁
resp₂
resp₃
↓
slice [:prompt_len]
prompt slice
↓
Q, K, V projection · flash_attn_varlen(causal=True)
causal attention — each prompt token attends to all preceding prompt tokens
token i attends to tokens 0 … i (lower triangle)
↓
output
cached → pass 2
k_prompt · v_prompt