Карта устройства современной LLM
Посмотрите, как токенизация, эмбеддинги, блоки декодера, внимание, ветви прямого распространения, обучение, выбор токена и KV-кэш соединяются в LLM только с декодером.
Версия материала: 5Курс
В каждой переведённой главе общая реализация на Rust дополняется одной проверенной идеей.
Посмотрите, как токенизация, эмбеддинги, блоки декодера, внимание, ветви прямого распространения, обучение, выбор токена и KV-кэш соединяются в LLM только с декодером.
Версия материала: 5Сопоставьте байты UTF-8, скалярные значения Unicode и ID учебного словаря; в следующих главах вместо этого словаря будет построен BPE-токенизатор на уровне байтов.
Версия материала: 6Распределите целые исходные документы между тремя непересекающимися выборками — обучающей, валидационной и тестовой — прежде чем эти документы будут использованы для обучения токенизатора или модели.
Версия материала: 9Постройте по обучающим документам упорядоченную таблицу слияний BPE и явно задайте правила подсчёта, выбора, замены и обработки границ документов.
Версия материала: 7Примените зафиксированные ранги слияний, добавьте управляющие токены по краям документа и восстановите исходные байты без потерь.
Версия материала: 9Научитесь строить по каждому закодированному документу пары для предсказания следующего токена, не пересекая границы документов и частей корпуса.
Версия материала: 8Подсчитать каждый переход между соседними токенами ровно один раз, нормировать строку таблицы и различить два случая: нулевую вероятность отдельного продолжения и отсутствие распределения MLE для всей строки.
Версия материала: 5Преобразуйте вероятности, которые модель приписала наблюдаемым целевым токенам, в среднее NLL и перплексию, явно учитывая число токенов, границы документов и оцениваемые выборки.
Версия материала: 7Разместите матрицы языковой модели и тензоры внимания в одном плоском векторе на Rust, вычисляя построчные шаги с проверкой переполнения и однозначно сопоставляя координатам смещения.
Версия материала: 5Проследите путь от признаков слов в фиксированном контексте к тензорам Q/K/V и разделению внимания на головы, а затем сравните представления общего хранилища с явным копированием в реализации курса.
Версия материала: 6Согласуйте вектор смещения с тензором признаков токенов, затем вычислите сумму, среднее и максимум по явно заданным осям с проверкой их допустимости.
Версия материала: 5Выполните матричное умножение двумерных и пакетных тензоров скалярными циклами на Rust с проверкой внутренних размеров, согласованием форм по осям пакета и флагами транспонирования.
Версия материала: 5Преобразуйте логиты словаря и внимания в устойчивые вероятности, логарифмы вероятностей, значения log-sum-exp и среднее NLL по целевым индексам на Rust без сторонних зависимостей.
Версия материала: 8Сверяйте выбранные производные для обучения LLM по фактически представимым точкам: учитывайте требование локальной гладкости и погрешность с учётом масштаба, а координаты тензора выбирайте детерминированно в Rust.
Версия материала: 6Постройте на Rust скалярное автоматическое дифференцирование в обратном режиме, сложите градиенты повторных вхождений операндов и проверьте результат для обучения LLM.
Версия материала: 6Постройте на Rust ленту автоматического дифференцирования тензоров. Реализуйте для каждого ребра локальное произведение вектора на якобиан (VJP), корректно проводите обратный проход через преобразования формы, согласование форм и редукции и проверяйте градиенты, необходимые для обучения LLM.
Версия материала: 9Реализуйте VJP для матричных произведений, выбора строк эмбеддингов по повторяющимся ID, SiLU, log-softmax и средней функции потерь по токенам. Затем сравните каждое новое локальное правило с производными, оценёнными методом центральных разностей в выбранных координатах.
Версия материала: 7Воспроизводимо инициализируйте матрицы весов с учётом ширины, сравните нулевую инициализацию, равномерную выборку с удвоенной границей и масштаб по схеме Ксавье, а затем проследите ожидаемую дисперсию по глубине.
Версия материала: 4Создайте обучаемую таблицу токенов, один раз проверьте ID токенов в публичной точке входа, передайте преобразованные селекторы во владение внутреннему проверенному плану выбора строк по индексам и сложите градиенты повторяющихся токенов.
Версия материала: 7Постройте на Rust обучаемый линейный слой, сохраните ведущие оси токенов, сравните аффинную проекцию с проекцией без смещения и проверьте точные градиенты обратного прохода.
Версия материала: 5Соберите применяемый отдельно к каждой позиции слой прямого распространения SwiGLU, проследите его вентильную ветвь с активацией и ветвь расширения и проверьте точные выходы и градиенты.
Версия материала: 3Перемешайте полные каузальные окна и объедините их в мини-пакеты из строк фиксированной длины. Сохраните неполный последний мини-пакет и усредните функцию потерь и градиенты по фактически вошедшим в него целевым токенам.
Версия материала: 3Соберите AdamW на основе градиентов именованных параметров и моментов с поправкой на смещение, примените затухание весов отдельной ветвью, а затем атомарно зафиксируйте все проверенные обновления.
Версия материала: 7Объедините эмбеддинги, скрытый слой SwiGLU, функцию потерь следующего токена с выбором по индексу, мини-пакеты и AdamW в детерминированной нейронной n-граммной модели со снижением валидационных потерь.
Версия материала: 4Проследите остаточное сложение при точном совпадении форм, тождественный путь градиента и путь через обучаемую ветвь, обучение ветви с нулевыми весами и повторные преобразования с остаточными связями и без них.
Версия материала: 3Реализуйте RMSNorm по последней оси, проследите градиенты по входу и коэффициенту масштаба и отделите идеальную инвариантность от поведения вблизи нуля, где преобладает эпсилон.
Версия материала: 5Разберите, как самовнимание Transformer создаёт из одной последовательности скрытых состояний тензоры запросов, ключей и значений с помощью трёх независимых проекций без смещения.
Версия материала: 2Разберите, как одна голова самовнимания Transformer без маски сопоставляет запросы с ключами, нормирует каждую строку и смешивает значения на основе проверяемого примера на Rust.
Версия материала: 2Разберите, как нижнетреугольная каузальная маска с разрешённой диагональю закрывает доступ к будущим ключам Transformer, делает их вероятности внимания строго нулевыми и сохраняет выходы предыдущих позиций.
Версия материала: 2Разберитесь, как ротационное позиционное кодирование поворачивает пары координат запросов и ключей в зависимости от абсолютной позиции, чтобы в скалярных произведениях внимания учитывалось относительное положение, и реализуйте его на Rust.
Версия материала: 3Разберитесь, как полноразмерные проекции запросов, ключей и значений разделяются на головы, в каждой из которых независимо применяются RoPE и каузальное внимание, а затем выходы конкатенируются и проходят через обучаемую выходную проекцию.
Версия материала: 2Разберите, как RMSNorm, каузальное многоголовое внимание, SwiGLU и два остаточных пути образуют блок декодера Transformer, сохраняющий форму тензора.
Версия материала: 2Разберитесь, как эмбеддинги токенов, повторяющиеся каузальные блоки, итоговый RMSNorm и одна общая таблица словаря создают дифференцируемые логиты следующего токена.
Версия материала: 4Разберитесь, как цикл обучения декодера упорядочивает обратное распространение, ограничение нормы градиента, шаги AdamW по расписанию, валидацию без записи графа и выбор состояния без обращения к тестовым данным.
Версия материала: 10Разберитесь, как в пределах одного запуска зафиксировать решения, принятые по валидации, проверить и сохранить упорядоченные пары входных и целевых токенов, а затем отделить корректное сравнение на намеренно выбранном фиксированном примере от независимой оценки способности модели обобщать и от доказательства общего превосходства архитектуры.
Версия материала: 7Разберитесь, как контрольная точка с версией формата сохраняет токенизатор, декодер, состояние AdamW из того же снимка цикла обучения и отдельный генератор для выбора токенов, отклоняет повреждённые байты и даёт одинаковый результат одного обновления, если вызывающий код передаёт обеим ветвям одинаковые входы, цели и скорость обучения.
Версия материала: 5Разберитесь, как положительная температура, фильтрация top-k с однозначным порядком и восстановленное состояние генератора псевдослучайных чисел превращают логиты декодера в управляемую и воспроизводимую генерацию LLM без кэша.
Версия материала: 5Разберитесь, как привязанный к слою KV-кэш добавляет по одной строке повёрнутого ключа и значения без поворота и даёт для новой позиции тот же результат внимания, что и расчёт по всему префиксу.
Версия материала: 5Разберитесь, как отдельный KV-кэш (кэш ключей и значений) для каждого блока и один проверенный сеанс для модели и кэша позволяют один раз обработать промпт, затем согласованно декодировать по одному токену, а затем сравнить логиты последней позиции и решения при генерации с эталонными расчётами по полному префиксу.
Версия материала: 6Проследите полный цикл небольшой декодерной языковой модели на Rust: обучение с выбором по валидации, сравнение по целевым позициям перекрывающихся окон, точное восстановление и генерацию с KV-кэшем. Отдельное правило оценивало бы каждый из 442 переходов внутри документов один раз, использовало бы максимально доступный каузальный префикс не длиннее четырёх токенов и только распределение в последней позиции; числовые значения среднего NLL и перплексии по этому правилу не приводятся.
Версия материала: 9