Один forward создаёт состояния всех позиций
Inference decoder состоит из двух режимов. На prefill вся prompt-последовательность проходит layers параллельно по token dimension; causal attention позиции i использует keys 0..i. Для length n существует n(n+1)/2 разрешённых query-key pairs на head. Это не полный FLOP count: projections, FFN, normalization и memory traffic считаются отдельно.
Prefill обычно лучше насыщает accelerator крупными matrix multiplications, тогда как decode добавляет по одной позиции и чаще ограничен чтением weights/cache. FlashAttention меняет IO-план точного attention и не обязан материализовать всю score matrix в HBM; математический результат при одинаковой точности остаётся тем же. F07, F08.
Что показывает модель. Матрица prefill раскрывает нижний треугольник, после чего decode добавляет одну новую query-строку. Prompt tokens не генерируются заново: модель вычисляет их hidden states и cache. Метрики prefill удобно выражать TTFT и input tokens/s, а decode — time per output token и output tokens/s.
Граница применимости. Формула pairs не учитывает grouped/multi-query attention, padding, packed requests, kernels и parallelism. Более длинный context увеличивает не только arithmetic, но и cache/transfer pressure. Название «prefill параллельный» не означает нулевую зависимость между layers или бесконечное ускорение.