Короткий курс по механизмам внимания и проверке памяти
Внимание LLM: головы, KV-кэш и расход памяти
Разберите, как устроены исходный Transformer и GPT-1, как полносвязная сеть обрабатывает позиции и зачем нужно позиционное кодирование. Затем изучите Q/K/V, причинную маску, GQA, KV-кэш, FlashAttention и RoPE; рассчитайте память и проверьте конфигурацию. Выполните CPU-практикум: сравните KV-кэш с полным пересчётом.
Что вы сможете сделать
- Объяснить, откуда берутся Q/K/V и как маска ограничивает связи декодера.
- Рассчитать условный объём плотной матрицы и отличить его от KV и полного бюджета памяти.
- Сравнить MHA, GQA и MQA по числу голов и прочитать схему из LlamaConfig v4.44.2.
- Объяснить, что блочное вычисление FlashAttention меняет, а что оставляет прежним.
- Составить приёмочный профиль с фиксированной моделью, нагрузкой, качеством, памятью и задержками.
- Рассчитать позиционный поворот RoPE и различить расширение окна и проверку качества модели.
- Различить устройство исходного Transformer и GPT-1; объяснить, как FFN использует один набор весов для разных позиций и какое позиционное кодирование выбрали авторы оригинала.
- На фиксированных векторах сравнить полный пересчёт причинного префикса с инкрементальным KV-кэшем, раздельно посчитать новые K/V и для каждого decode-запроса — число доступных ключей.
1. Архитектура Transformer: исходная модель и GPT-1
Проследите путь входа через кодировщик и декодер исходного Transformer. Сравните его с GPT-1 и разберите, какие вычисления повторяются для каждой позиции.
В исходном Transformer кодировщик строит представления входной последовательности. Декодер формирует выход, обращаясь к этим представлениям через отдельный блок внимания. В GPT-1 используется только декодер с маскированным самовниманием. Это сравнение исходной модели 2017 года и GPT-1, а не всех современных моделей.
В каждом слое исходного Transformer есть полносвязная сеть (FFN): она преобразует вектор каждой позиции отдельно. Для всех позиций внутри слоя используется один набор весов; у разных слоёв веса различаются. Поэтому повторное применение FFN к новым позициям добавляет вычисления, а не параметры.
Проверить тезис: Трансформер 03
Чтобы учитывать порядок позиций, исходная модель добавляет к эмбеддингам позиционное кодирование. Авторы выбрали синусы и косинусы, проверив также обучаемый вариант. Этот выбор описывает оригинал; другие модели могут учитывать позиции иначе.
Проверить тезис: Трансформер 05
2. От проекций к взвешенной сумме
Разберите, как из последовательности получают Q, K и V и вычисляют взвешенную сумму значений.
При самовнимании запросы Q, ключи K и значения V получают проекциями одной последовательности. Сходство Q с K делят на √dₖ, где dₖ — размер ключа; softmax превращает оценки в веса суммы V. При внимании декодера к кодировщику источники Q и K/V различаются.
Проверить тезис: Самовнимание 01
В многоголовом внимании (MHA) у каждой головы свои проекции Q/K/V; результаты голов объединяются перед выходной проекцией.
Проверить тезис: Самовнимание 04
3. Маска и размер плотной матрицы
Отделите разрешённые связи причинного декодера от условного расчёта одной явно сохранённой матрицы.
Причинная маска исключает будущие позиции до softmax. Вход декодера сдвинут относительно целей обучения: на текущей позиции находится предшествующий токен, а не тот, который нужно предсказать. Поэтому чтение текущей позиции входа не раскрывает целевой токен.
Проверить тезис: Самовнимание 02
В примере одной плотной матрицы головы FP16 удвоение длины с 4096 до 8192 увеличивает её объём с 32 до 128 MiB. Это не KV-кэш и не полная память GPU.
Проверить тезис: Самовнимание 03
4. Сверьте число голов
Различайте схемы по числу голов Q и K/V, а результат чтения конфигурации ограничивайте конкретной версией.
В GQA несколько голов Q делят головы K/V; при 32 Q и 8 равных группах на одну пару K/V приходится четыре Q.
Проверить тезис: Групповое внимание (GQA) 01
При H головах Q многоголовое внимание MHA имеет H голов K и H голов V; многозапросное внимание MQA — по одной. GQA делит головы Q на группы с общими K/V; границы GQA-H и GQA-1 соответствуют MHA и MQA.
Проверить тезис: Групповое внимание (GQA) 02
Для LlamaConfig v4.44.2 сравните num_attention_heads с num_key_value_heads: при None второе поле получает первое, что задаёт MHA в этой конфигурации. Это не подтверждает запуск движка.
Проверить тезис: Групповое внимание (GQA) 05
5. Преобразование — отдельная процедура
Различайте конфигурацию готовой модели и исследованный способ преобразования её контрольной точки.
В исследовании веса K/V MHA усредняли внутри группы и продолжали предобучение; это не переключатель сервера и не гарантия прежнего качества.
Проверить тезис: Групповое внимание (GQA) 03
Эксперименты проводили на T5.1.1 с изменениями внимания декодера, включая внимание к кодировщику; самовнимание кодировщика не меняли.
Проверить тезис: Групповое внимание (GQA) 04
6. Посчитайте KV-кэш отдельно
Оценка KV использует число голов K/V и длины активных последовательностей; она не равна размеру матрицы внимания.
Для одинаковых слоёв и равных длин плотные K+V занимают M=2×L×Hkv×D×T×s×B байт: L — слои, Hkv — головы K/V, D — размер головы, T — сохраняемые токены, s — байты на значение, B — последовательности. Это логические данные без общих префиксов, заполнения, метаданных и рабочих буферов.
Проверить тезис: KV-кэш языковой модели 02
В GQA для KV используют число голов K/V, а не Q. Полный расход памяти включает также веса, промежуточные данные и рабочие буферы; расчёт KV не заменяет измерение этого расхода.
Проверить тезис: KV-кэш языковой модели 04 · Бюджет памяти GPU для LLM 01
В CPU-опыте для одного слоя и одной головы на фиксированных векторах prefill вычисляет внимание с причинной маской и сохраняет K/V входа; decode рассчитывает новую позицию с использованием K/V доступного префикса. Сравните выходы внимания с полным пересчётом, отдельно посчитайте новые векторы K и V, а для каждого decode-запроса — число доступных ключей. Эти учебные счётчики не оценивают FLOP, время или байты.
Проверить тезис: Самовнимание 02 · Обработка входного контекста LLM 02 · Пошаговая генерация LLM 02
7. Разделите вычисление и хранение
Здесь рассматривается FlashAttention из работы 2022 года, arXiv:2205.14135v2. Это версия статьи об исходном алгоритме; FlashAttention-2 в курсе не рассматривается.
FlashAttention вычисляет полное внимание блоками, не сохраняя целиком матрицу N×N в основной памяти GPU (HBM). Математическая точность не гарантирует побитового совпадения результатов.
Проверить тезис: FlashAttention 01
Объём вычислений остаётся O(N²d): N — длина последовательности, d — размер головы. При фиксированном d зависимость квадратичная. В обратном проходе промежуточное внимание пересчитывается; число арифметических операций может увеличиться.
Разреженное блочное расширение описано отдельно как приближение; сам FlashAttention не меняет число голов K/V и не сжимает сохраняемый KV-кэш.
До сравнения фиксируют модель, среду исполнения, нагрузку и критерии качества. Затем сопоставляют качество ответов, задержки, пропускную способность и ошибки; высокий темп при растущей очереди не доказывает прежнего уровня сервиса.
8. RoPE: как повороты передают порядок токенов
Разберите поворот на плоскости, проверьте общий сдвиг позиций и рассчитайте, как интерполяция меняет позицию для RoPE.
Запрос Q и ключ K — векторы, то есть списки чисел. RoPE берёт их координаты попарно и поворачивает каждую пару как стрелку на плоскости. Угол зависит от позиции токена и частоты пары. Из скалярного произведения повёрнутых Q и K получают оценку внимания; значения V в этой операции не поворачиваются.
Для одной пары обозначим исходные векторы как q и k, их позиции как m и n, а угол на шаг позиции как θ. Если R(α) — поворот на угол α, то R(mθ)q · R(nθ)k = qᵀR((n−m)θ)k. При неизменных q и k важна разность позиций n−m: общий сдвиг обеих позиций сохраняет скалярное произведение.
Проверить тезис: RoPE 02
Учебный пример: q=k=(1,0), угол на шаг позиции — условные 90°. Запрос в позиции 2 превращается в (−1,0), ключ в позиции 1 — в (0,1). Скалярное произведение — сумма произведений соответствующих координат: (−1)×0+0×1=0. Сдвинем обе позиции на 2: в позиции 4 запрос станет (1,0), а в позиции 3 ключ — (0,−1). Результат снова 0. Условные 90° выбраны для удобного счёта и не описывают частоты конкретной модели.
Проверить тезис: RoPE 03
Position Interpolation сжимает шкалу позиций перед расчётом RoPE: вместо m берут m×L/L′, где L — прежнее окно, а L′ — расширенное. Токены остаются в последовательности, меняются числа, которыми RoPE обозначает их позиции. В описанных экспериментах с LLaMA авторы также дообучали модель на расширенном окне.
Проверить тезис: RoPE 06
Вычислить поворот для новой позиции ещё не значит получить полезный ответ на длинный текст. В исследовании Position Interpolation расширенные модели отдельно проверяли на длинных задачах. Практическое применение: выберите задачи и критерии качества для своей модели до сравнения скорости.
Проверить тезис: RoPE 05 · Приёмочное испытание инференса 02
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
В каталоге
- Графические ускорители — Сравните полный бюджет памяти выбранной модели с памятью ускорителя; поддержку реализации внимания и результаты запуска проверьте отдельно.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Первичная публикация
Attention Is All You Need
Ashish Vaswani и соавторы · arXiv:1706.03762v5, 6 декабря 2017; §§3.1–3.5
Прочитаны §§2, 3.1–3.2.3 и 4 (15.10.2026); 26.10.2026 дополнительно сверены §§3.3 и 3.5 для position-wise FFN и позиционного кодирования. Формулы и маска сверены с публикационным PDF NeurIPS 2017, с. 3–5.
Открыть первоисточник - Первичная публикация
Improving Language Understanding by Generative Pre-Training
Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever; OpenAI · 2018; §§3.1–3.2, equations 1–5; §4.1 Model specifications; PDF pp. 3, 5
§3.1, формулы 1–2 описывают авторегрессионную цель обучения. §3.2 относится к конкретному дообучению на размеченных данных; его нельзя переносить на все современные схемы дообучения. 26.10.2026 сверён §4.1: GPT-1 использует decoder-only Transformer с masked self-attention.
Открыть первоисточник - Первичная публикация
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
Tri Dao, Daniel Y. Fu, Stefano Ermon, Atri Rudra, Christopher Ré · arXiv:2205.14135v2, 23 июня 2022; §§2.2–3.3, 5
Прочитаны §§2–3.3 и 5; Algorithm 1 и Theorem 1 сверены с PDF v2, с. 5. На титуле PDF стоит 24 июня; дата версии arXiv — 23 июня. Более поздние FlashAttention не описываются.
Открыть первоисточник - Первичная публикация
GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Joshua Ainslie и соавторы; Association for Computational Linguistics · EMNLP 2023, с. 4895–4901; §§2–3.1, Limitations
Прочитаны §§2.1–2.2, 3.1, таблица 1 и Limitations; схема голов — рисунок 2. Использована версия публикации ACL.
Открыть первоисточник - Официальная документация
Transformers v4.44.2: LlamaConfig
Hugging Face · Transformers v4.44.2; configuration_llama.py: LlamaConfig
Прочитаны описания num_attention_heads и num_key_value_heads, параметры и ветвь None в LlamaConfig.__init__. GitHub и raw-текст открыты; код не исполнялся. Другие конфигурации и версии не проверялись.
Открыть первоисточник - Первичная публикация
Attention Is All You Need
Ashish Vaswani и соавторы · arXiv:1706.03762, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник - Первичная публикация
GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Joshua Ainslie и соавторы · arXiv:2305.13245, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник - Первичная публикация
Efficient Memory Management for Large Language Model Serving with PagedAttention
Woosuk Kwon и соавторы · arXiv:2309.06180, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник - Официальная документация
CUDA C++ Programming Guide
NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник - Официальная документация
Transformers 4.44.2: Generation
Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен.
Открыть первоисточник - Официальная документация
PyTorch 2.9: Numerical accuracy
PyTorch Contributors · PyTorch 2.9; Numerical accuracy; обновлено 16 июля 2025
Прочитаны вступление и Batched computations or slice computations. Общая граница численной воспроизводимости, а не проверка конкретной реализации FlashAttention или требование использовать PyTorch 2.9.
Открыть первоисточник - Официальная документация
vLLM online serving benchmark: benchmark_serving.py
vLLM Project · репозиторий vLLM, тег v0.5.4, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Клиентские метрики; точные timestamps, chunks и знаменатели проверить в этой версии и её request adapter.
Открыть первоисточник - Официальная документация
Service Level Objectives
Google Site Reliability Engineering · Site Reliability Engineering, Chapter 4
Определяет SLI, SLO и SLA и объясняет user-centric latency, error rate, throughput и percentiles.
Открыть первоисточник - Первичная публикация
AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration
Ji Lin и соавторы · arXiv:2306.00978v6, revised 2026-04-25
Полный PDF v6 перечитан 15.10.2026: §2–3 — квантование весов и шкалы; §4 — упаковка и исполнение; §5 — качество и скорость. Результаты отдельных моделей и устройств не обобщаются; формат KV не следует из разрядности весов.
Открыть первоисточник - Первичная публикация
RoFormer: Enhanced Transformer with Rotary Position Embedding
Jianlin Su et al. · arXiv:2104.09864v5, 08 ноября 2023 года; §§3.2.1–3.2.2
§§3.2.1–3.2.2 задают двумерный поворот и обобщение на пары координат; §3.3 описывает свойства механизма.
Открыть первоисточник - Первичная публикация
Extending Context Window of Large Language Models via Position Interpolation
Shouyuan Chen, Sherman Wong, Liangjian Chen, Yuandong Tian · arXiv:2306.15595v2, 28 июня 2023 года; §§2.1–2.3, §3
§2.1 описывает RoPE и зависимость оценки внимания от разности позиций; §§2.2–2.3 и §3 рассматривают экстраполяцию, интерполяцию и оценку расширенных моделей.
Открыть первоисточник