VKВлад КуликовОткрытые лекции
Современные LLM3 / 20

Модуль 3. Базовый Transformer

Сначала попробуйте решить упражнение. Ответы, подробные решения и проектные ориентиры раскрываются отдельно и сохраняют своё состояние при переключении RU/EN.

Скачать файлы курса (.zip) 2588,1 КБ

Архив содержит файлы на обоих языках и вспомогательные материалы с сохранением структуры каталогов.

Упражнение 1. Softmax по правильной оси

Дан scores формы [B, h, T_q, T_k] = [2, 4, 3, 5].

  1. Какую форму имеет weights?

  2. Какая сумма должна быть равна единице?

  3. Что произойдёт при softmax(dim=-2)?

Показать ответ и решение

Решение. Форма остаётся [2,4,3,5]. Для каждого фиксированного (b, head, query) сумма по последней оси ключей равна 1. dim=-2 нормирует три query-позиции для каждого ключа; код выполнится, но операция больше не соответствует attention.

Упражнение 2. Масштабирование dot product

Пусть dk=64d_k=64, координаты независимы, имеют нулевое среднее и единичную дисперсию. Оцените дисперсию q⊤kq^\top k до и после масштабирования.

Показать ответ и решение

Решение. При указанных предположениях дисперсия до масштабирования равна 64, а после деления на 64=8\sqrt{64}=8 равна 64/82=164/8^2=1. Ноутбук оценивает дисперсии на 50 000 случайных пар с seed=18 и проверяет отклонение не более 8%; конкретные эмпирические значения печатаются при запуске.

Упражнение 3. Attention руками

Для матриц из §4.5 восстановите вторую строку выхода каузального внимания.

Показать ответ и решение

Решение. Логиты [0,0.707], softmax [0.330238,0.669762]. Поэтому

Z2≈0.330238[1,0]+0.669762[0,2]≈[0.330238,1.339523].Z_2\approx0.330238[1,0]+0.669762[0,2] \approx[0.330238,1.339523].

Упражнение 4. LayerNorm

Нормируйте x=[1,2,3,4]x=[1,2,3,4] при γ=1\gamma=1, β=0\beta=0, ε=0\varepsilon=0.

Показать ответ и решение

Решение. μ=2.5\mu=2.5, σ2=1.25\sigma^2=1.25, стандартное отклонение 1.25≈1.1180\sqrt{1.25}\approx1.1180. Ответ:

[−1.3416,−0.4472,0.4472,1.3416].[-1.3416,-0.4472,0.4472,1.3416].

Упражнение 5. Параметры слоя

Для dmodel=512d_{model}=512, dff=2048d_{ff}=2048 посчитайте веса MHA и FFN без смещений.

Показать ответ и решение

Решение. MHA: 4⋅5122=1 048 5764\cdot512^2=1\,048\,576. FFN: 2⋅512⋅2048=2 097 1522\cdot512\cdot2048=2\,097\,152. Вместе 3 145 7283\,145\,728; доля FFN равна 2/32/3.

Упражнение 6 [проект]. Поймайте утечку будущего

Реализуйте блок decoder с каузальной маской и без неё. Возьмите две последовательности, одинаковые на первых трёх позициях и разные на четвёртой. Сравните логиты первых трёх позиций.

Демо и критерии проекта

Ожидаемый результат. С маской логиты совпадают до численной погрешности. Без маски хотя бы часть ранних логитов различается. Ноутбук модуля содержит воспроизводимый вариант этого теста.

Упражнение 7 [проект]. Нарисуйте блок по памяти

На пустом листе восстановите:

  1. полный слой encoder;

  2. полный слой decoder оригинала;

  3. decoder-only блок с нормализацией перед подслоями.

Для каждой стрелки подпишите форму тензора. Затем сравните с VIZ 02 и VIZ 08.

Демо и критерии проекта

Критерий готовности. Вы не забыли отдельный Add & Norm после каждого подслоя, указали cross-attention QQ из decoder и K,VK,V из encoder и сохранили dmodeld_{model} в остаточном потоке.

Упражнение 8 [проект]. Мини-языковая модель

Оберните один DecoderBlock токенными и позиционными эмбеддингами на входе, финальной нормой и проекцией словаря на выходе. Обучите её воспроизводить маленькую периодическую последовательность. Проверьте:

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

Граница вывода. Следующий токен этого периода определяется одним предыдущим: успех не доказывает необходимость внимания или умение использовать длинный контекст. Опыт проверяет обучение и генерацию на простой задаче, без отдельной проверки обобщения.