Модуль 13. SFT и работа с данными
Сначала попробуйте решить упражнение. Ответы, подробные решения и проектные ориентиры раскрываются отдельно и сохраняют своё состояние при переключении RU/EN.
Скачать файлы курса (.zip) 2588,1 КБАрхив содержит файлы на обоих языках и вспомогательные материалы с сохранением структуры каталогов.
У1. Метки после шаблона диалога
Содержимое system/user/assistant занимает 12/8/20 токенов, служебная часть каждого сообщения — 5 токенов, а перед диалогом стоит BOS. Посчитайте число обучаемых токенов при функции потерь только по ответу ассистента, если завершающий токен ответа входит в цель.
Показать ответ и решение
Решение. BOS добавляет 1 токен, три служебные оболочки сообщений — , а содержимое — . Поэтому полная длина равна . При assistant-only loss метки system, user и их служебных токенов, а также заголовок ассистента, заменяются на -100. В целевой части остаются 20 токенов ответа и его EOT: 21 токен, или . Важно получить границу целевой части уже после применения реального chat template, а не угадывать её по исходным строкам.
У2. Упаковка FFD
Упакуйте в контейнеры ёмкости 2048 последовательности
[403,527,315,180,267,165,425,1347,259,230,626,556,443,174,392,754,120,267,72,126,76,326,128,514]
алгоритмом First-Fit Decreasing. Сравните утилизацию с отдельным дополнением каждого примера до 2048.
Показать ответ и решение
Решение. FFD сначала сортирует длины по убыванию и помещает каждую в первый уже созданный контейнер, где она помещается. Получаются корзины:
[1347, 626, 72] = 2045
[754, 556, 527, 180] = 2017
[514, 443, 425, 403, 259] = 2044
[392, 326, 315, 267, 267, 230,
174, 76] = 2047
[165, 128, 126, 120] = 539Сумма полезных длин — 8692. Отдельное дополнение использует позиций и даёт . FFD использует пять строк: . Число строк фиксированной длины уменьшается в 4.8 раза, но реальный выигрыш времени нужно измерять; между упакованными примерами должна стоять маска внимания с учётом границ примеров.
У3. Вычисления и LoRA
Воспроизведите четыре сценария из §§7, 10, 11 и 16. Для модели 8,03B оцените SFT на 200 тыс. примеров средней длиной 1200 токенов в течение трёх эпох: найдите FLOP, время на одном ускорителе с пиком 990 TFLOP/s и MFU 0,4, затем отношение к претрейну той же модели на 15 трлн токенов.
Для независимых попыток с вычислите покрытие best-of- при . Отдельно оцените FLOP и время одного прохода 32B-модели по 1000 трассам длиной 9000 токенов, используя восемь ускорителей с теми же пиком и MFU. Наконец, найдите число параметров LoRA для 32 слоёв, , , и проекций q/k/v/o, их долю от базы 8,03B и объём состояний при 16 байтах на обучаемый параметр. Объём выразите в MiB.
Показать ответ и решение
Решение. За эпоху проходит млн токенов, за три — млн. По правилу :
Деление на FLOP/s даёт 24.33 часа; заданный претрейн на 15 трлн токенов примерно в 20 833 раза больше. Для независимых попыток best-of- покрытие равно : 0.3000, 0.7599, 0.9424, 0.9967 при .
Сценарий 32B содержит млн токенов, поэтому FLOP; на восьми заданных ускорителях это 9.09 минуты.
Для LoRA матрица добавляет параметров. На слой q/o дают по , k/v — по ; итого 425 984 на слой и 13 631 488 на 32 слоя (0.1698% базы). При учебных 16 байт параметрических состояний на параметр это 208 MiB.
У4 [проект]
Начните с диалогов первого демо на CPU: добавьте второй ход и наблюдение инструмента, сохраните обучаемыми только выбранные действия ассистента. Сравните отдельное и упакованное исполнение по логитам, сумме потерь и градиентам. Затем намеренно разрешите связь между примерами и найдите расхождение. Необязательное расширение — закрепить официальный токенизатор и chat_template небольшой модели и повторить проверку границ по реальным ID.
Демо и критерии проекта
Демо к этому проектному упражнению: русскоязычный демонстрационный ноутбук модуля 13, раздел «Демо 1». Он показывает компактный воспроизводимый пример на малых данных, а не готовое решение полномасштабного проекта.
У5 [проект]
Во втором демо измените истинный ранг обновления и число обучающих примеров. Сравните полное обновление и LoRA по числу параметров и ошибке на отложенных входах; добавьте несколько начальных состояний генератора. Объясните разницу между ограничением ранга и ошибкой конечной оптимизации. Необязательное расширение переносит сравнение на малые наборы проверяемых решений и многоходовых инструментальных диалогов с одной базовой моделью. В нём измеряются также время и память, а для синтетики сохраняются происхождение и решение верификатора.
Демо и критерии проекта
Демо к этому проектному упражнению: русскоязычный демонстрационный ноутбук модуля 13, раздел «Демо 2». Он показывает компактный воспроизводимый пример на малых данных, а не готовое решение полномасштабного проекта.