Короткий курс по механизмам внимания и проверке памяти

Внимание LLM: головы, KV-кэш и расход памяти

Разберите, как устроены исходный Transformer и GPT-1, как полносвязная сеть обрабатывает позиции и зачем нужно позиционное кодирование. Затем изучите Q/K/V, причинную маску, GQA, KV-кэш, FlashAttention и RoPE; рассчитайте память и проверьте конфигурацию. Выполните CPU-практикум: сравните KV-кэш с полным пересчётом.

База → инженерная практика110 минут8 модулей13 вопросов
После курса

Что вы сможете сделать

  1. Объяснить, откуда берутся Q/K/V и как маска ограничивает связи декодера.
  2. Рассчитать условный объём плотной матрицы и отличить его от KV и полного бюджета памяти.
  3. Сравнить MHA, GQA и MQA по числу голов и прочитать схему из LlamaConfig v4.44.2.
  4. Объяснить, что блочное вычисление FlashAttention меняет, а что оставляет прежним.
  5. Составить приёмочный профиль с фиксированной моделью, нагрузкой, качеством, памятью и задержками.
  6. Рассчитать позиционный поворот RoPE и различить расширение окна и проверку качества модели.
  7. Различить устройство исходного Transformer и GPT-1; объяснить, как FFN использует один набор весов для разных позиций и какое позиционное кодирование выбрали авторы оригинала.
  8. На фиксированных векторах сравнить полный пересчёт причинного префикса с инкрементальным KV-кэшем, раздельно посчитать новые K/V и для каждого decode-запроса — число доступных ключей.
Модуль 1 из 8

1. Архитектура Transformer: исходная модель и GPT-1

Проследите путь входа через кодировщик и декодер исходного Transformer. Сравните его с GPT-1 и разберите, какие вычисления повторяются для каждой позиции.

  • В исходном Transformer кодировщик строит представления входной последовательности. Декодер формирует выход, обращаясь к этим представлениям через отдельный блок внимания. В GPT-1 используется только декодер с маскированным самовниманием. Это сравнение исходной модели 2017 года и GPT-1, а не всех современных моделей.

    Проверить тезис: Трансформер 01 02

  • В каждом слое исходного Transformer есть полносвязная сеть (FFN): она преобразует вектор каждой позиции отдельно. Для всех позиций внутри слоя используется один набор весов; у разных слоёв веса различаются. Поэтому повторное применение FFN к новым позициям добавляет вычисления, а не параметры.

    Проверить тезис: Трансформер 03

  • Чтобы учитывать порядок позиций, исходная модель добавляет к эмбеддингам позиционное кодирование. Авторы выбрали синусы и косинусы, проверив также обучаемый вариант. Этот выбор описывает оригинал; другие модели могут учитывать позиции иначе.

    Проверить тезис: Трансформер 05

Модуль 2 из 8

2. От проекций к взвешенной сумме

Разберите, как из последовательности получают Q, K и V и вычисляют взвешенную сумму значений.

  • При самовнимании запросы Q, ключи K и значения V получают проекциями одной последовательности. Сходство Q с K делят на √dₖ, где dₖ — размер ключа; softmax превращает оценки в веса суммы V. При внимании декодера к кодировщику источники Q и K/V различаются.

    Проверить тезис: Самовнимание 01

  • В многоголовом внимании (MHA) у каждой головы свои проекции Q/K/V; результаты голов объединяются перед выходной проекцией.

    Проверить тезис: Самовнимание 04

Модуль 3 из 8

3. Маска и размер плотной матрицы

Отделите разрешённые связи причинного декодера от условного расчёта одной явно сохранённой матрицы.

  • Причинная маска исключает будущие позиции до softmax. Вход декодера сдвинут относительно целей обучения: на текущей позиции находится предшествующий токен, а не тот, который нужно предсказать. Поэтому чтение текущей позиции входа не раскрывает целевой токен.

    Проверить тезис: Самовнимание 02

  • В примере одной плотной матрицы головы FP16 удвоение длины с 4096 до 8192 увеличивает её объём с 32 до 128 MiB. Это не KV-кэш и не полная память GPU.

    Проверить тезис: Самовнимание 03

Модуль 4 из 8

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 из 8

5. Преобразование — отдельная процедура

Различайте конфигурацию готовой модели и исследованный способ преобразования её контрольной точки.

  • В исследовании веса K/V MHA усредняли внутри группы и продолжали предобучение; это не переключатель сервера и не гарантия прежнего качества.

    Проверить тезис: Групповое внимание (GQA) 03

  • Эксперименты проводили на T5.1.1 с изменениями внимания декодера, включая внимание к кодировщику; самовнимание кодировщика не меняли.

    Проверить тезис: Групповое внимание (GQA) 04

Модуль 6 из 8

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 из 8

7. Разделите вычисление и хранение

Здесь рассматривается FlashAttention из работы 2022 года, arXiv:2205.14135v2. Это версия статьи об исходном алгоритме; FlashAttention-2 в курсе не рассматривается.

  • FlashAttention вычисляет полное внимание блоками, не сохраняя целиком матрицу N×N в основной памяти GPU (HBM). Математическая точность не гарантирует побитового совпадения результатов.

    Проверить тезис: FlashAttention 01

  • Объём вычислений остаётся O(N²d): N — длина последовательности, d — размер головы. При фиксированном d зависимость квадратичная. В обратном проходе промежуточное внимание пересчитывается; число арифметических операций может увеличиться.

    Проверить тезис: FlashAttention 02 03

  • Разреженное блочное расширение описано отдельно как приближение; сам FlashAttention не меняет число голов K/V и не сжимает сохраняемый KV-кэш.

    Проверить тезис: FlashAttention 05 04

  • До сравнения фиксируют модель, среду исполнения, нагрузку и критерии качества. Затем сопоставляют качество ответов, задержки, пропускную способность и ошибки; высокий темп при растущей очереди не доказывает прежнего уровня сервиса.

    Проверить тезис: Приёмочное испытание инференса 01 02 03

Модуль 8 из 8

8. RoPE: как повороты передают порядок токенов

Разберите поворот на плоскости, проверьте общий сдвиг позиций и рассчитайте, как интерполяция меняет позицию для RoPE.

  • Запрос Q и ключ K — векторы, то есть списки чисел. RoPE берёт их координаты попарно и поворачивает каждую пару как стрелку на плоскости. Угол зависит от позиции токена и частоты пары. Из скалярного произведения повёрнутых Q и K получают оценку внимания; значения V в этой операции не поворачиваются.

    Проверить тезис: RoPE 01 04

  • Для одной пары обозначим исходные векторы как 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

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Инженер читает описание Transformer с кодировщиком и декодером и хочет отметить источник Q, K и V в самовнимании декодера. Какую схему следует записать?
02При обучении Transformer цели — «А, Б, В», а вход декодера сдвинут: «начало, А, Б». Какие позиции входа разрешены для позиции i сдвинутого входа декодера после применения причинной маски?
03Для одной головы и одной последовательности сохраняют одну плотную матрицу 4096×4096 FP16. Длину увеличивают до 8192. Как изменится объём именно этой матрицы, без KV и других выделений?
04У модели 32 головы Q и 8 равных групп K/V. Что следует подставить в плотную формулу KV?
05В LlamaConfig v4.44.2 указано num_attention_heads=32, а num_key_value_heads=None. Какой вывод подтверждён этой конфигурацией?
06В отчёт о переходе с MHA на GQA нужно включить результат исследования T5.1.1. Какая запись точно описывает исследованную процедуру и её область?
07Что вычисляет основной FlashAttention из рассмотренной работы 2022 года и как понимать точность результата?
08В полном внимании FlashAttention N — длина последовательности, d — фиксированный размер головы. Каковы порядок числа операций и способ работы обратного прохода?
09Сравнивают основной FlashAttention и переход от MHA к GQA с меньшим числом групп. Как разделить изменения алгоритма и геометрии KV-кэша?
10В учебном примере угол поворота одной пары координат — 90° на позицию, исходные q=k=(1,0). Запрос стоит в позиции 3, ключ — в позиции 1. Чему равно скалярное произведение после поворотов и после общего сдвига обеих позиций на 4? Вариант ответа задаёт результат для обоих случаев.
11В учебном примере модель обучали с окном 2048 токенов. Для окна 8192 токена применяют Position Interpolation. Какой индекс вместо позиции 6000 поступит в расчёт RoPE?
12Инженер взял схему GPT-1 за основу рисунка исходного Transformer 2017 года. Какой путь представлений входной последовательности нужно показать? Выберите путь и роль блока; остальные части архитектуры здесь не рассматриваются.
13Учебный слой исходного Transformer содержит FFN с 200 параметрами. На входе четыре позиции; в отчёте для FFN этого слоя указали 800 параметров. Какое число нужно учесть?

В каталоге

  • Графические ускорители — Сравните полный бюджет памяти выбранной модели с памятью ускорителя; поддержку реализации внимания и результаты запуска проверьте отдельно.
Проверяемая база

Источники курса

Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.

  • Первичная публикация

    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 рассматривают экстраполяцию, интерполяцию и оценку расширенных моделей.

    Открыть первоисточник
Подтвердите действие