Карта устройства современной LLM
Посмотрите, как токенизация, эмбеддинги, блоки декодера, внимание, ветви прямого распространения, обучение, выбор токена и KV-кэш соединяются в LLM только с декодером.
Версия материала: 5Курс
В каждой переведённой главе общая реализация на Rust дополняется одной проверенной идеей.
Посмотрите, как токенизация, эмбеддинги, блоки декодера, внимание, ветви прямого распространения, обучение, выбор токена и KV-кэш соединяются в LLM только с декодером.
Версия материала: 5Как текст UTF-8 получает ID фиксированного словаря скалярных значений, чем ID отличаются от позиций и почему неизвестные значения теряются.
Версия материала: 7Распределите целые исходные документы по обучающей, валидационной и тестовой выборкам, чтобы обучение, выбор вариантов и итоговый отчёт опирались на предназначенные для них тексты.
Версия материала: 10Построение словаря повторно используемых байтовых токенов по обучающим документам: подсчёт с перекрытиями, выбор по числовым ID при равных частотах, замена без перекрытий и границы документов.
Версия материала: 8Примените зафиксированные ранги слияний, добавьте управляющие токены по краям документа и восстановите исходные байты без потерь.
Версия материала: 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Разберите симметрию скрытых нейронов, выберите начальный масштаб с учётом ширины матрицы и воспроизведите именованные обучаемые веса, различая измеренный разброс и ожидаемую дисперсию линейного сигнала.
Версия материала: 5Создайте обучаемую таблицу токенов, один раз проверьте ID токенов в публичной точке входа, передайте преобразованные селекторы во владение внутреннему проверенному плану выбора строк по индексам и сложите градиенты повторяющихся токенов.
Версия материала: 8Постройте на Rust обучаемый линейный слой, сохраните ведущие оси токенов, сравните аффинную проекцию с проекцией без смещения и проверьте точные градиенты обратного прохода.
Версия материала: 5Соберите применяемый отдельно к каждой позиции слой прямого распространения SwiGLU, проследите его вентильную ветвь с активацией и ветвь расширения и проверьте точные выходы и градиенты.
Версия материала: 3Перемешайте полные каузальные окна и объедините их в мини-пакеты из строк фиксированной длины. Сохраните неполный последний мини-пакет и усредните функцию потерь и градиенты по фактически вошедшим в него целевым токенам.
Версия материала: 3Соберите AdamW на основе градиентов именованных параметров и моментов с поправкой на смещение, примените затухание весов отдельной ветвью, а затем атомарно зафиксируйте все проверенные обновления.
Версия материала: 8Объедините эмбеддинги, скрытый слой SwiGLU, функцию потерь следующего токена с выбором по индексу, мини-пакеты и AdamW в детерминированной нейронной n-граммной модели со снижением валидационных потерь.
Версия материала: 5Проследите остаточное сложение при точном совпадении форм, тождественный путь градиента и путь через обучаемую ветвь, обучение ветви с нулевыми весами и повторные преобразования с остаточными связями и без них.
Версия материала: 3Реализуйте RMSNorm по последней оси, проследите градиенты по входу и коэффициенту масштаба и отделите идеальную инвариантность от поведения вблизи нуля, где преобладает эпсилон.
Версия материала: 5Разберите, как самовнимание Transformer создаёт из одной последовательности скрытых состояний тензоры запросов, ключей и значений с помощью трёх независимых проекций без смещения.
Версия материала: 2Разберите, как одна голова самовнимания Transformer без маски сопоставляет запросы с ключами, нормирует каждую строку и смешивает значения на основе проверяемого примера на Rust.
Версия материала: 2Разберите, как нижнетреугольная каузальная маска с разрешённой диагональю закрывает доступ к будущим ключам Transformer, делает их вероятности внимания строго нулевыми и сохраняет выходы предыдущих позиций.
Версия материала: 2Разберитесь, как ротационное позиционное кодирование поворачивает пары координат запросов и ключей в зависимости от абсолютной позиции, чтобы в скалярных произведениях внимания учитывалось относительное положение, и реализуйте его на Rust.
Версия материала: 3Разберитесь, как полноразмерные проекции запросов, ключей и значений разделяются на головы, в каждой из которых независимо применяются RoPE и каузальное внимание, а затем выходы конкатенируются и проходят через обучаемую выходную проекцию.
Версия материала: 2Разберите, как RMSNorm, каузальное многоголовое внимание, SwiGLU и два остаточных пути образуют блок декодера Transformer, сохраняющий форму тензора.
Версия материала: 2Разберитесь, как эмбеддинги токенов, повторяющиеся каузальные блоки, итоговый RMSNorm и одна общая таблица словаря создают дифференцируемые логиты следующего токена.
Версия материала: 4Разберитесь, как цикл обучения декодера упорядочивает обратное распространение, ограничение нормы градиента, шаги AdamW по расписанию, валидацию без записи графа и выбор состояния без обращения к тестовым данным.
Версия материала: 12Разберитесь, как в пределах одного запуска зафиксировать решения, принятые по валидации, проверить и сохранить упорядоченные пары входных и целевых токенов, а затем отделить корректное сравнение на намеренно выбранном фиксированном примере от независимой оценки способности модели обобщать и от доказательства общего превосходства архитектуры.
Версия материала: 7Разберитесь, как контрольная точка с версией формата сохраняет токенизатор, декодер, состояние AdamW из того же снимка цикла обучения и отдельный генератор для выбора токенов, отклоняет повреждённые байты и даёт одинаковый результат одного обновления, если вызывающий код передаёт обеим ветвям одинаковые входы, цели и скорость обучения.
Версия материала: 5Разберитесь, как положительная температура и фильтрация top-k с однозначным порядком формируют множество кандидатов, почему носитель распределения в f64 может оказаться меньше этого множества и как воспроизвести генерацию LLM без кэша.
Версия материала: 6Разберитесь, как привязанный к слою KV-кэш добавляет по одной строке повёрнутого ключа и значения без поворота и даёт для новой позиции тот же результат внимания, что и расчёт по всему префиксу.
Версия материала: 6Разберитесь, как отдельный KV-кэш (кэш ключей и значений) для каждого блока и один проверенный сеанс для модели и кэша позволяют один раз обработать промпт, затем согласованно декодировать по одному токену, а затем сравнить логиты последней позиции и решения при генерации с эталонными расчётами по полному префиксу.
Версия материала: 6Проследите полный цикл небольшой декодерной языковой модели на Rust: обучение с выбором по валидации, сравнение по целевым позициям перекрывающихся окон, точное восстановление и генерацию с KV-кэшем. Отдельное правило оценивало бы каждый из 442 переходов внутри документов один раз, использовало бы максимально доступный каузальный префикс не длиннее четырёх токенов и только распределение в последней позиции; числовые значения среднего NLL и перплексии по этому правилу не приводятся.
Версия материала: 9