Темы, которые обязательно нужно знать инженеру со степенью магистра права.
От токенизации до оценки: как современные языковые модели работают на практике.
Делиться

Большие языковые модели (LLM) быстро стали основой современных систем искусственного интеллекта — от чат-ботов и помощников пилотов до поиска, программирования и автоматизации. Но для инженеров, переходящих в эту область, кривая обучения может показаться крутой и фрагментарной. Такие понятия, как токенизация, механизм внимания, тонкая настройка и оценка, часто объясняются изолированно, что затрудняет формирование целостной ментальной модели того, как все это взаимосвязано.
Я столкнулся с этим на собственном опыте, когда переходил от компьютерного зрения к LLM. За короткий промежуток времени мне пришлось понять не только теорию трансформеров, но и практические реалии: компромиссы при обучении, узкие места при выводе, проблемы выравнивания и подводные камни оценки.
Данная статья призвана восполнить этот пробел.
Вместо того чтобы углубляться в изучение отдельного компонента, он предоставляет структурированную карту инженерного ландшафта LLM , охватывающую ключевые составляющие, которые необходимо понимать для проектирования, обучения и развертывания реальных систем LLM.
Мы начнем с основ представления текста, рассмотрим архитектуру моделей и стратегии обучения, а также оптимизацию вывода, оценку и системные аспекты, а также практические соображения, такие как разработка подсказок и снижение количества ложных срабатываний.

В итоге у вас должно сложиться четкое представление о том, как строятся современные системы LLM, и как каждая концепция находит применение на практике.
Преобразование букв в цифры

Токенизация
При подаче данных в модель мы не можем просто напрямую передавать ей буквы или слова — нам нужен способ преобразования текста в числа. Интуитивно мы могли бы представить, что каждому слову в языке присваивается уникальный номер, и эти номера передаются модели. Однако в английском языке сотни тысяч слов, и обучение на таком огромном словаре было бы нецелесообразным с точки зрения памяти и эффективности.
Что же можно сделать вместо этого? Можно попробовать кодировать буквы, поскольку в английском алфавите их всего 26. Но это тоже приведет к проблемам — моделям будет сложно уловить значение слов по отдельным буквам, а последовательности станут излишне длинными, что затруднит обучение.
Практическое решение — токенизация . Вместо представления языка на уровне слов или символов, мы разбиваем текст на наиболее часто встречающиеся и полезные субсловарные единицы . Эти субслова выступают в качестве строительных блоков словаря модели: распространенные слова отображаются в виде целых токенов, а редкие слова могут быть представлены в виде комбинаций более мелких субслов.
Распространенным алгоритмом для этого является кодирование пар байтов (BPE). BPE начинается с отдельных символов в качестве токенов, затем многократно объединяет наиболее часто встречающиеся пары токенов в новые токены, постепенно создавая словарь субслов до достижения желаемого размера словаря.
На этом этапе каждому токену присваивается уникальный номер — его идентификатор в словаре.
Эмбеддинги
После токенизации данных и присвоения им идентификаторов необходимо придать этим идентификаторам семантическое значение . Это достигается с помощью текстовых вложений — отображений дискретных идентификаторов токенов в непрерывные векторные пространства. В этом пространстве слова или токены со схожим значением располагаются близко друг к другу, и даже алгебраические операции могут выявлять семантические связи (например: embedding(queen) — embedding(woman) + embedding(man) ≈ embedding(king)).
Как правило, слои встраивания обучаются на приеме идентификаторов токенов в качестве входных данных и выдаче плотных векторов в качестве выходных данных. Эти векторы оптимизируются совместно с целью обучения модели (например, предсказание следующего токена). Со временем модель обучается встраиваниям, которые кодируют как синтаксическую, так и семантическую информацию о словах, подсловах или токенах. Популярные модели встраивания: word2vec, glove, BERT.
Позиционное кодирование
Как правило, модели линейного языка (LLM) по своей природе не учитывают структуру языка. Естественный язык имеет последовательный характер — порядок слов имеет значение, — но в то же время, токены, расположенные далеко друг от друга в предложении, могут быть тесно связаны. Чтобы учесть как локальный порядок, так и дальние зависимости, мы добавляем позиционную информацию о токенах в каждое векторное представление.
Для позиционного подхода характерно несколько общих черт:
- Абсолютное позиционное кодирование — к векторным представлениям токенов добавляются фиксированные шаблоны, такие как синусоидальные и косинусоидальные функции с разными частотами. Это простой и эффективный метод, но он может испытывать трудности с представлением очень длинных последовательностей, поскольку не моделирует явно относительные расстояния.
- Относительные позиционные кодировки — они представляют расстояние между токенами, а не их абсолютные позиции. Популярный метод — RoPE (Rotary Positional Embeddings) , который кодирует позицию в виде векторных вращений. Этот подход лучше масштабируется для длинных последовательностей и более естественно отражает взаимосвязи между удаленными токенами.
- Обучение позиционным кодировкам — Вместо использования фиксированных математических функций, модель напрямую обучается позиционным векторным представлениям в процессе тренировки. Это обеспечивает гибкость, но может снизить обобщаемость на последовательности длиной, не встречавшиеся в процессе обучения.
Модель архитектуры

После токенизации, встраивания и обогащения данных позиционными кодировками, они пропускаются через модель. Современная архитектура для обработки текстовых данных — это трансформер. архитектура, ядро которой основано на механизме внимания. Трансформер обычно состоит из набора блоков-трансформеров:
- Многоголовочное внимание: позволяет модели одновременно фокусироваться на разных частях входной последовательности, улавливая разнообразный контекст. Оно вычисляет запросы (Q), ключи (K) и значения (V) для определения взаимосвязей между словами.
- Позиционно-ориентированная сеть прямого распространения (FFN): полносвязная сеть, применяемая к каждой позиции независимо, с добавлением нелинейности.
- Остаточные связи: Короткие связи, которые помогают градиентам распространяться во время обучения, предотвращая потерю информации.
- Нормализация слоя: Нормализует входные данные для стабилизации процесса обучения.
Внимание

В модели внимания, описанной в статье «Внимание — это всё, что вам нужно», каждый токен проецируется на три вектора: запрос (что он ищет), ключ (что он предлагает) и значение (фактическая информация, которую он несёт). Внимание работает путём сравнения запросов с ключами (с помощью показателей сходства), чтобы определить, сколько каждого значения следует агрегировать. Это позволяет модели динамически извлекать релевантный контекст на основе содержимого, а не позиции.
Многоголовочный механизм внимания запускает несколько механизмов внимания параллельно, каждый со своими собственными изученными проекциями. Представьте, что каждая «голова» фокусируется на разных отношениях (например, синтаксис, кореференция, семантика). Их объединение дает модели более богатое и тонкое понимание, чем один проход механизма внимания.
Существует несколько типов механизмов внимания, различающихся в зависимости от их назначения: самовнимание, скрытое самовнимание и перекрестное внимание.
- Самовнимание работает в рамках одной последовательности, позволяя элементам обращать внимание друг на друга (например, понимание предложения). Маскированное самовнимание похоже на самовнимание, но с ключевым отличием: внимание видит только прошлые элементы, не наблюдая за будущими.
- Механизм перекрестного внимания связывает две последовательности, где одна предоставляет запросы, а другая — ключи/значения (например, декодер обрабатывает закодированный входной сигнал при переводе). Ключевое различие заключается в том, поступает ли контекст из одного и того же источника или из внешнего.
Стандартный механизм внимания сравнивает каждый токен с каждым другим токеном, что приводит к квадратичной сложности O(n²). По мере увеличения длины последовательности вычислительные ресурсы и использование памяти быстро возрастают, что делает очень длинные контексты дорогостоящими и медленными. Это одно из главных узких мест в масштабировании LLM и активно развивающаяся область исследований — например, путем избирательного подхода к тому, какие токены обращают внимание на какие токены.
Типы архитектуры
Задачи языкового моделирования строятся с использованием одной из следующих архитектур трансформеров:
- Модели, использующие только кодировщик — каждый токен может взаимодействовать с каждым другим токеном в последовательности (двунаправленное внимание). Эти модели обычно обучаются с помощью маскированного языкового моделирования (MLM), где некоторые токены во входных данных скрыты, а задача состоит в их предсказании. Такая схема хорошо подходит для задач классификации и понимания (например, BERT ).
- Модели, использующие только декодер — каждый токен может обращать внимание только на те токены, которые предшествуют ему в последовательности (причинно-следственное или однонаправленное внимание). Эти модели обучаются с помощью причинно-следственного моделирования языка, то есть, предсказывают следующий токен, исходя из всех предыдущих. Такая схема идеально подходит для генерации текста (например, GPT ).
- Модели кодировщик-декодировщик — Входная последовательность сначала обрабатывается кодировщиком, а полученные представления затем передаются в декодер через слои перекрестного внимания. Декодер генерирует выходную последовательность по одному токену за раз, с учетом как представлений кодировщика, так и своих собственных предыдущих выходных данных. Такая схема распространена для задач преобразования последовательностей, таких как машинный перевод (например, T5 , BART ).
Предсказание следующего токена и декодирование выходных данных
Модели обучаются предсказывать следующий токен — это делается путем вывода распределения вероятностей по всем возможным токенам в словаре. Выходными данными модели является логит, который затем передается через функцию softmax для прогнозирования вероятности следующего токена в словаре.
В самом простом подходе мы всегда могли бы выбрать токен с наибольшей вероятностью (это называется жадным декодированием). Однако эта стратегия часто оказывается неоптимальной, поскольку локально наиболее вероятный токен не всегда приводит к глобально наиболее связному или естественному предложению.
Для улучшения генерации мы можем использовать выборку из распределения вероятностей. Это вносит разнообразие и позволяет модели исследовать различные варианты продолжения. Кроме того, мы можем разветвить процесс генерации, рассматривая несколько токенов-кандидатов и расширяя их параллельно.
На практике используются несколько популярных стратегий декодирования :
- Поиск по лучу: Вместо следования по одному жадному пути, поиск по лучу отслеживает n лучших последовательностей-кандидатов (лучей) на каждом шаге, расширяя их параллельно и в конечном итоге выбирая последовательность с наибольшей общей вероятностью.
- Метод выборки Top-k: на каждом шаге рассматриваются только k наиболее вероятных токенов, и один из них выбирается в соответствии с их вероятностями. Это позволяет избежать выборки из длинного хвоста крайне маловероятных токенов.
- Выборка методом Top-p (ядерная выборка): Вместо фиксации k мы выбираем наименьший набор токенов, кумулятивная вероятность которых составляет не менее p (например, 0,9). Затем мы выбираем из этого набора, динамически регулируя количество рассматриваемых токенов в зависимости от формы распределения.
Для управления степенью «плоскости» или «пиковости» распределения вероятностей в моделях с линейными зависимостями используется параметр температуры . Низкая температура (<1) делает модель более детерминированной, концентрируя вероятностную массу на наиболее вероятных токенах. Высокая температура (>1) делает распределение более равномерным, увеличивая случайность и разнообразие в генерируемых результатах.
Этапы обучения

Обучение модели LLM обычно состоит из двух этапов: предварительного обучения, на котором модель изучает общие языковые закономерности, такие как грамматика, синтаксис и значение, на основе больших объемов данных, и тонкой настройки, на которой она адаптируется для выполнения конкретных задач, таких как следование инструкциям или ответы на вопросы в желаемом формате, а затем уточняет выходные данные в соответствии с предпочтениями человека и ограничениями безопасности.
Эта последовательность действий начинается с определения возможностей (что модель может делать) и переходит к определению соответствия (что модель должна делать).
Предварительное обучение
Предварительное обучение является наиболее ресурсоемким этапом обучения модели LLM, поскольку модель должна обучаться на чрезвычайно больших и разнообразных наборах данных. Обычно это сотни миллиардов или триллионы токенов, полученных из таких источников, как веб-страницы, книги, статьи, код и разговоры.
Для принятия решений о размере модели, времени обучения и масштабе набора данных исследователи используют законы масштабирования LLM , которые описывают взаимосвязь этих факторов и помогают оценить оптимальные параметры для достижения высокой производительности.
Предварительная обработка данных Это решающий шаг, поскольку использование необработанного текста напрямую может значительно ухудшить производительность LLM. Данные для обучения поступают из множества источников, каждый из которых имеет свои особенности, требующие очистки и фильтрации.
- Веб-страницы часто содержат стандартный контент, такой как реклама, навигационные меню, заголовки и нижние колонтитулы, а также элементы форматирования из HTML, CSS и JavaScript. Они также могут включать дублированные страницы, спам, низкокачественный текст или даже вредоносный контент.
- В книгах могут возникать проблемы, связанные с метаданными (данные об издателе, номера страниц, сноски), ошибками распознавания текста при оцифровке, а также повторяющимися или стилистически несогласованными фрагментами. Кроме того, ограничения, связанные с авторским правом, требуют тщательной фильтрации и соблюдения лицензионных требований.
- В наборы данных кода могут входить автоматически сгенерированные файлы, дублирующиеся репозитории, избыточные комментарии или шаблонный код. Лицензионные ограничения также важны, и низкокачественный или содержащий ошибки код может негативно повлиять на обучение, если его не удалить.
Для решения этих проблем наборы данных обычно фильтруются по языку и качеству, а дисбаланс между источниками корректируется путем расширения или перевзвешивания данных.
Контролируемая тонкая настройка
При контролируемой тонкой настройке мы обычно не обновляем все параметры модели. Вместо этого большинство предварительно обученных весов остаются неизменными, и обучается лишь небольшое количество дополнительных параметров. Это достигается либо путем добавления легковесных адаптерных модулей, либо с помощью методов, эффективных с точки зрения параметров, таких как LoRA, при обучении на небольшом подмножестве отфильтрованных и очищенных данных.
- Адаптация низкого ранга (LoRA) — один из наиболее широко используемых подходов. Вместо обновления всей матрицы весов, LoRA обучается двум меньшим матрицам низкого ранга, A и B, произведение которых аппроксимирует обновление исходных весов. Предварительно обученные веса остаются фиксированными, и обучаются только матрицы A и B. Это делает тонкую настройку гораздо более эффективной с точки зрения памяти и вычислительных ресурсов, сохраняя при этом производительность. (См. также: практические методы обучения LoRA и лучшие практики.)
- Помимо LoRA, к другим методам эффективного использования параметров относятся префиксная настройка, при которой к входным данным добавляется небольшой набор обучаемых «виртуальных токенов», оптимизируемых в процессе обучения, и адаптерные слои, представляющие собой небольшие обучаемые модули, вставляемые между существующими блоками трансформера, в то время как остальная часть модели остается неизменной.
На более высоком уровне, контролируемая тонкая настройка — это этап, на котором мы обучаем модель тому, как вести себя при решении конкретной задачи, используя высококачественные размеченные примеры. Обычно это включает в себя:
- Диалоговые данные : тщательно отобранные диалоги между людьми или между человеком и ИИ, которые обучают модель естественным ответам в интерактивных ситуациях.
- Инструкционные данные : пары «подсказка-ответ», которые обучают модель следовать инструкциям, отвечать на вопросы и выполнять рассуждения или выдавать результаты, специфичные для конкретной задачи.
Вместе эти методы позволяют согласовать предварительно обученную модель с тем поведением, которое нам действительно нужно на этапе вывода.
Обучение с подкреплением
После того как контролируемая тонкая настройка научит модель, что делать, используется обучение с подкреплением для повышения качества ее выполнения, особенно в задачах с открытым концом или субъективных задачах, таких как диалог, рассуждение и безопасность.
В отличие от обучения с учителем и фиксированными целями, обучение с подкреплением вводит обратную связь: результаты работы модели оцениваются, ранжируются и улучшаются с течением времени. Это делает обучение с подкреплением ключевым инструментом для согласования моделей с предпочтениями человека. На практике это помогает: поощрять полезное, безвредное и честное поведение, уменьшать количество токсичных, предвзятых или небезопасных результатов и улучшать следование инструкциям и качество общения.
Поскольку данные для выравнивания меньше по размеру, но имеют более высокое качество, чем данные для предварительного обучения, обучение с подкреплением выступает в качестве механизма точного управления, а не источника новых знаний.
Распространенной парадигмой является обучение с подкреплением на основе обратной связи от человека (Reinforcement Learning from Human Feedback, RLHF) , которое обычно включает три этапа:
- Сбор данных о предпочтениях: поскольку эталонным методом является ранжирование людьми нескольких ответов моделей на один и тот же вопрос (например, какой из них более полезен или безопасен), что приводит к относительным предпочтениям, а не к абсолютным оценкам, в некоторых случаях для генерации данных о предпочтениях или критики более слабых моделей используются более сильные модели, что снижает зависимость от дорогостоящей ручной разметки. На практике сочетание человеческой и автоматизированной обратной связи позволяет масштабировать систему, сохраняя при этом качество.
- Обучение модели вознаграждения (RM): Отдельная модель обучается оценивать ответы в соответствии с предпочтениями человека. Получив подсказку и вариант ответа, модель вознаграждения присваивает скалярную оценку, отражающую, насколько хорош ответ с точки зрения человеческого суждения.
- Оптимизация политики (LLM): Затем языковая модель обучается максимизировать сигнал вознаграждения, то есть генерировать результаты, которые люди с большей вероятностью предпочтут.
Оптимизация стратегии (LLM) часто представляет собой сложную задачу — обучение с подкреплением может разрушить полученные знания, или модель может свестись к прогнозированию одного правдоподобного результата, который обеспечит максимальное вознаграждение без учета разнообразия. Для выполнения этой оптимизации и решения этих проблем используются различные алгоритмы:
- Проксимальная оптимизация политики (PPO) : PPO обновляет модель, ограничивая при этом, насколько далеко она может отклониться от исходной политики за один шаг, предотвращая нестабильность или ухудшение качества языка. Отличное видео с объяснением PPO можно найти здесь.
- Оптимизация прямых предпочтений (DPO): обходит необходимость в явной модели вознаграждения. Она напрямую оптимизирует модель, отдавая предпочтение выбранным ответам перед отклоненными, используя целевую функцию в стиле классификации, что упрощает конвейер обработки и снижает сложность обучения.
- Групповая относительная оптимизация политики (GRPO) : вариант, сравнивающий группы результатов, а не пары, что повышает стабильность и эффективность использования выборки за счет применения более богатых сравнительных сигналов.
- Оптимизация Канемана-Тверски (KTO): KTO учитывает асимметричные предпочтения (например, более жесткое наказание за плохие результаты по сравнению с поощрением за хорошие), что может лучше отражать человеческое суждение в критически важных с точки зрения безопасности сценариях.
Обучение с подкреплением для языковых моделей можно условно разделить на онлайн и офлайн в зависимости от способа сбора и использования данных во время обучения:
- Офлайн-обучение с подкреплением (сегодня доминирующее): модель обучается на фиксированном наборе данных о взаимодействиях. В процессе оптимизации дальнейшее взаимодействие с людьми или окружающей средой отсутствует: после сбора данных о предпочтениях и обучения модели вознаграждения выполняется оптимизация политики (например, PPO или DPO) на этом статическом наборе данных.
- Онлайн-обучение с подкреплением: модель постоянно взаимодействует с окружающей средой (например, с пользователями или людьми-аннотаторами), генерируя новые результаты и получая свежую обратную связь, которая учитывается в процессе обучения. Это создает динамический цикл обратной связи, в котором модель может итеративно исследовать и улучшать свои результаты.
Обучение с подкреплением, учитывающее логические рассуждения (например, обучение с подкреплением по принципу «цепочки мыслей»)
Обучение с подкреплением также может применяться для улучшения логического мышления. Вместо того чтобы вознаграждать только окончательные ответы, модель может получать вознаграждение за создание высококачественных промежуточных этапов рассуждения (цепочки мыслей). Это способствует более структурированному, интерпретируемому и надежному поведению при решении проблем.
Галлюцинации при ЛЛМ

Даже модели LLM, обученные на фактически корректных данных, имеют тенденцию к появлению неверных дополнений, также известных как галлюцинации. Это происходит потому, что модели LLM являются вероятностными моделями, которые предсказывают следующий токен, исходя из обучающего корпуса данных и сгенерированных к настоящему моменту токенов, и не гарантируют точного совпадения с обучающими данными. Однако существуют способы минимизировать влияние галлюцинаций в моделях LLM:
Генерация с расширенным извлечением информации ( Retrieval Augmented Generation , RAG): Включение внешних источников знаний на этапе вывода позволяет модели извлекать релевантную фактическую информацию и основывать свои ответы на проверенных данных, уменьшая зависимость от потенциально устаревших или неполных внутренних знаний. RAG может быть довольно сложной с инженерной точки зрения и обычно включает в себя:
- Разбиение на части: разделение документов на более мелкие, управляемые фрагменты перед индексированием для поиска. Правильное разбиение на части обеспечивает баланс между контекстом и точностью: слишком большие фрагменты снижают релевантность, а слишком маленькие теряют важный контекст.
- Встраивание: преобразование фрагментов текста в плотные векторные представления, отражающие семантическое значение. В RAG запросы и документы встраиваются в одно и то же векторное пространство, что позволяет осуществлять поиск по сходству для получения релевантного контента даже в тех случаях, когда точные ключевые слова не совпадают.
- Поиск: Высококачественный поиск гарантирует передачу в модель релевантных, разнообразных и не избыточных фрагментов, что уменьшает количество ошибок и повышает точность фактов. Он зависит от таких факторов, как качество встраивания, стратегия сегментации, метод индексирования и параметры поиска.
- Переранжирование: второй этап фильтрации, который извлекает фрагменты текста и переупорядочивает их с использованием более точной (часто более дорогой) модели. В то время как первоначальный поиск оптимизирован по скорости, переранжировщики фокусируются на релевантности, помогая определить приоритетный контекст для генерации.
Обучение распознаванию незнания: целенаправленно обучайте модель признавать неопределенность, когда ей не хватает достаточной информации, препятствуя ей генерировать правдоподобные, но неверные утверждения.
Точное сопоставление и последующая оценка : используйте строгое сопоставление или проверку по надежным источникам или внешним верификаторам и критикам, использующим модели. на этапе завершения или постобработки, чтобы гарантировать соответствие сгенерированного контента фактическим данным, особенно в отношении конфиденциальной или точной информации.
Оптимизация

Обучение LLM-моделей само по себе является сложной задачей — для обучения модели требуется огромное количество графических процессоров, поскольку необходимо хранить модель, градиенты и параметры оптимизатора. Однако вывод результатов также представляет собой проблему — представьте себе необходимость обработки миллионов запросов — удержание пользователей будет выше, если модели смогут быстро и качественно выводить текст.
Оптимизация обучения
Обучение больших моделей обычно осуществляется с использованием стохастического градиентного спуска (SGD) или одного из его вариантов. Вместо обновления параметров модели после каждого примера, мы вычисляем градиенты на пакетах данных , что делает обучение более стабильным и эффективным. В целом, чем больше размер пакета, тем точнее оценка градиента, хотя чрезвычайно большие пакеты могут также замедлить сходимость или потребовать настройки.
Для очень больших моделей, таких как LLM, один графический процессор не может хранить все параметры или обрабатывать большие пакеты данных самостоятельно. Для решения этой проблемы обучение распределяется между несколькими графическими процессорами или даже кластерами машин. Это требует тщательного решения вопроса о том, как разделить рабочую нагрузку — либо путем разделения данных , параметров модели , либо вычислительного конвейера .
Хотя распределенное обучение широко изучалось в глубоком обучении, модели с линейными модулями (LLM) создают уникальные проблемы из-за огромного количества параметров и требований к памяти. Для преодоления этих проблем было разработано несколько стратегий:
- Параллельная обработка данных — каждый графический процессор хранит копию модели, но обрабатывает разные пакеты данных, при этом градиенты усредняются по всем графическим процессорам.
- Параллельная обработка моделей — параметры модели распределяются между несколькими графическими процессорами, поэтому каждый графический процессор отвечает за часть модели.
- Параллелизм конвейера — Различные слои модели назначаются разным графическим процессорам, и данные проходят через них, как этапы в конвейере.
- Тензорный параллелизм — отдельные тензорные операции (например, умножение больших матриц) распределяются между несколькими графическими процессорами.
- DeepSpeed / ZeRO — библиотека и набор методов оптимизации для эффективного обучения больших моделей, включая разделение состояний оптимизатора, градиентов и параметров для уменьшения использования памяти.
Как правило, в этих методах мы пытаемся оптимизировать два параметра: сокращение обмена данными между графическими процессорами (например, при обмене градиентами) и обеспечение размещения значимых данных на графических процессорах. Другие методы сокращения памяти во время обучения и повышения скорости включают:
- Градиентное контрольное сохранение: метод обучения, позволяющий экономить память, который сохраняет только подмножество промежуточных активаций во время прямого прохода и пересчитывает остальные во время обратного распространения ошибки. Это приводит к значительному снижению использования памяти графического процессора за счет дополнительных вычислительных ресурсов, что позволяет обучать более крупные модели или более длинные последовательности.
- Обучение со смешанной точностью: использует форматы с более низкой точностью (например, FP16 или BF16) для большинства вычислений, сохраняя при этом критически важные значения (такие как основные веса или накопления) в формате с более высокой точностью (FP32). Это снижает потребление памяти и ускоряет обучение, особенно на современных графических процессорах со специализированным оборудованием, с минимальным влиянием на точность.
Оптимизация вывода
- Дистилляция: Большие модели часто имеют избыточную параметризацию, поэтому мы можем обучить меньшую модель-ученика, чтобы она имитировала большую модель-учителя. Вместо того чтобы обучаться только правильным выходным данным, модель-ученик соответствует полному распределению вероятностей учителя, включая менее вероятные токены, что позволяет выявить более сложные взаимосвязи. Это обеспечивает производительность, близкую к производительности учителя, но при этом значительно меньшую и более быструю модель.
- Flash-attention : оптимизированный алгоритм внимания, который вычисляет точное внимание, значительно сокращая при этом использование памяти. Он избегает материализации всей матрицы внимания, разбивая вычисления на блоки и объединяя операции в одном ядре графического процессора, сохраняя данные в быстрой встроенной памяти. Результат: значительно более быстрое обучение и вывод, особенно для длинных последовательностей, а также поддержка более длинных контекстов без изменения модели.
- Кэширование ключ-значение : При авторегрессивной генерации пересчет механизма внимания для прошлых токенов является неэффективным. Кэширование ключ-значение сохраняет ранее вычисленные ключи и значения и повторно использует их для будущих токенов. Это снижает сложность генерации от квадратичной до линейной по длине последовательности, значительно ускоряя генерацию длинных текстов.
- Обрезка: Нейронные сети часто имеют избыточную параметризацию, поэтому обрезка удаляет избыточные веса. Она может быть структурированной (удаление целых нейронов, головок или слоев) или неструктурированной (удаление отдельных весов). На практике предпочтительнее структурированная обрезка, поскольку она лучше согласуется с аппаратным обеспечением, что делает ускорение реальным.
- Квантование : уменьшает точность вычислений (например, с 32-битных чисел с плавающей запятой до 8-битных целых чисел) для уменьшения размеров моделей и ускорения вычислений. Оно снижает потребление памяти и повышает эффективность на специализированном оборудовании. Применяемое после обучения или во время обучения, оно может незначительно повлиять на точность, но тщательная калибровка сводит это к минимуму. Эффективное квантование также требует контроля диапазонов значений (например, малых значений активации) во избежание потери информации.
- Спекулятивное декодирование: ускоряет генерацию с использованием двух моделей: небольшой, быстрой черновой модели и более крупной, точной целевой модели. Черновая модель предлагает несколько токенов на начальном этапе, а целевая модель проверяет их параллельно — принимая совпадения и пересчитывая несоответствия. Это позволяет генерировать несколько токенов за шаг вместо одного.
- Модель смешанных экспертов (MoE): Вместо активации всех параметров для каждого токена, модели MoE используют множество специализированных «экспертов» и механизм управления, позволяющий выбирать лишь нескольких из них для каждого входного параметра. Это обеспечивает огромную вычислительную мощность модели без пропорционального увеличения вычислительных затрат. К числу известных примеров относятся Switch Transformer, GLaM и Mixtral.
Более подробная статья в блоге NVIDIA об оптимизации инференса, безусловно, станет отличным чтением, если вы хотите использовать более продвинутые методы.
Оперативное проектирование

Разработка алгоритмов с подсказками является ключевой частью работы с LLM, поскольку на практике поведение модели определяется не только ее весами, но и тем, как она обусловлена на этапе вывода. Одна и та же модель может давать совершенно разные результаты в зависимости от того, как сформулированы инструкции, контекст и ограничения.
Разработка подсказок — это не разовый процесс, а итерация. Небольшие изменения в формулировках, порядке или ограничениях могут привести к значительным изменениям в поведении. Относитесь к подсказкам как к коду: тестируйте, измеряйте, дорабатывайте и контролируйте версии, используя их как часть вашей системы.
Что делает подсказку убедительной?
- Четко сформулируйте задачу, а не просто тему: слабый вопрос сформулирует то, что вы хотите услышать («Объясните RAG»). Сильный вопрос укажет, как именно вы хотите это услышать («Объясните RAG в 5 пунктах, сосредоточившись на режимах отказов, для аудитории технического блога»).
- Разделение инструкций, контекста и формата: Четкие подсказки позволяют различать, что должна делать модель, какую информацию она должна использовать и как должен выглядеть результат. Например: инструкции («суммировать»), контекст (полученный текст) и формат («JSON с полями X, Y, Z»).
- Использование примеров (краткое предъявление подсказок): Предоставление 1–3 примеров желаемого поведения ввода-вывода значительно повышает надежность при решении сложных задач. Это особенно полезно для классификации или форматирования.
- Строго ограничьте структуру выходных данных: если вам необходимы машиночитаемые или согласованные выходные данные, определите строгие форматы (например, JSON, схемы).
- Контроль контекста и качества: больше контекста не всегда лучше. Нерелевантные или зашумленные входные данные ухудшают производительность. Приоритизируйте информацию с высоким уровнем сигнала, а в системах RAG обеспечьте точность и фильтрацию извлечения данных.
Практические соображения
- Отслеживайте изменения в подсказках, как в коде. Знайте, кто что изменил, когда и почему. Это позволяет отлаживать и откатывать изменения.
- По возможности используйте шаблоны. Разбейте подсказки на многократно используемые компоненты (инструкции, контекстные поля, правила форматирования).
- Используйте системы маршрутизации . Настраивайте выбор модели и подсказки в зависимости от запросов пользователя.
- Используйте структурированное тестирование. Запускайте тесты на основе фиксированного набора данных и сравнивайте результаты, используя метрики или структурированные критерии оценки (правильность, полнота, стиль).
- Держите человека в курсе. Что касается субъективных качеств, таких как ясность или логика, то отзывы людей по-прежнему являются наиболее надежным источником информации — особенно в исключительных случаях.
- Поддерживайте наличие набора критически важных тестовых примеров, особенно касающихся безопасности.
- Использование методов «красной команды» — и попытки прорвать созданную вами защиту — теперь стали отраслевой нормой.
Оценка

Большие языковые модели используются в самых разных задачах — от структурированного ответа на вопросы до генерации открытых вопросов — поэтому ни одна метрика не может в полной мере отразить производительность во всех случаях. На практике оценка во многом зависит от решаемой задачи. Тем не менее, большинство подходов попадают в несколько четких категорий, охватывающих как традиционные метрики, так и методы оценки на основе больших языковых моделей.
Независимо от используемых метрик, одной из важнейших составляющих оценки является эталонный набор данных для оценки производительности модели. Он должен быть разнообразным, чистым, соответствовать действительности и содержать набор целевых задач для вашей модели.
Общепринятый
Как правило, это сбор статистики на уровне слов, простой в реализации и быстрый, однако имеющий ограничения — он не понимает семантику.
- Расстояние Левенштейна — это показатель, измеряющий минимальное количество изменений отдельных символов (вставок, удалений или замен), необходимых для преобразования одной строки в другую.
- Показатель перплексии измеряет, насколько хорошо языковая модель предсказывает последовательность, при этом более низкие значения указывают на то, что модель присваивает наблюдаемому тексту более высокую вероятность.
- BLEU — оценивает машинный перевод текста, измеряя совпадение n-грамм между предполагаемым переводом и одним или несколькими эталонными переводами, уделяя особое внимание точности.
- ROUGE — оценивает процесс суммаризации (и генерации) текста путем измерения совпадения n-грамм и последовательностей между сгенерированным текстом и эталонными текстами, уделяя особое внимание запоминанию.
- МЕТЕОР — Оценивает сгенерированный текст, сопоставляя его с эталонными текстами с использованием точных, стеммированных и синонимичных совпадений, обеспечивая баланс между точностью и полнотой.
на основе LLM
- BertScore : сравнивает сгенерированный текст с эталонным, используя контекстные эмбеддинги из BERT. Вместо сопоставления точных слов, он измеряет семантическое сходство в пространстве эмбеддингов — насколько близки значения, что делает его эффективным в распознавании перефразирований и тонких различий в формулировках. Это хороший выбор для задач суммаризации и перевода.
- GPTScore : GPTScore использует обширную языковую модель для оценки результатов на основе логических рассуждений — оценивая такие параметры, как правильность, релевантность, связность или даже стиль, без опоры на эталонные данные. Его гибкость делает его идеальным для субъективных задач, не имеющих четкой эталонной истины.
- SelfCheckGPT : Заставляет ту же модель критически оценить собственные результаты, выявляя галлюцинации, логические несоответствия или вводящие в заблуждение утверждения. Полезен в задачах, требующих больших объемов знаний или логического мышления, где важна правильность, но внешняя проверка может быть дорогостоящей или медленной.
- Bleurt : метрика на основе BERT, доработанная для оценки. Она сравнивает текст, используя изученные семантические представления, и выдает единый показатель качества, отражающий беглость чтения, сохранение смысла и перефразирование.
- GEval : В GEval вы задаете модели критерии оценки (например, оцениваете фактическую достоверность или ясность), и она возвращает оценку или подробный отзыв. Это делает ее особенно полезной для субъективных задач, где традиционные метрики не справляются, предлагая оценки, которые ближе к человеческому суждению.
- Направленный ациклический граф (DAG): этот подход разбивает оценку на последовательность более мелких проверок, основанных на правилах. Каждый узел является судьей LLM, ответственным за один критерий, а поток между узлами определяет, как принимаются решения. Такая структура уменьшает неоднозначность и повышает согласованность, особенно когда задачу можно проверить пошагово.
Оценка на основе программы LLM не является абсолютно надежной — у нее есть свои особенности:
- Предвзятость: Модели оценки могут отдавать предпочтение более длинным ответам, определенным стилям письма или результатам, которые напоминают обучающие данные.
- Дисперсия: Поскольку модели являются стохастическими, небольшие изменения (например, температуры) могут приводить к различным значениям для одного и того же входного параметра.
- Чувствительность к подсказкам: даже незначительные изменения в подсказках или оценочных критериях могут существенно повлиять на результаты, делая сравнения ненадежными.
Относитесь к оценке программ магистратуры в области права как к системе, требующей калибровки. Стандартизируйте вопросы, тщательно их тестируйте и выявляйте скрытые предубеждения.
Выходя за рамки традиционных задач — один класс метрик рассматривает оценку конвейеров RAG , которые разделяют процесс поиска информации на этапы поиска и генерации, — и опирается на метрики, специфичные для каждого этапа, а другой класс метрик рассматривает метрики суммирования .
Если вы хотите глубже изучить оценку моделей LLM, я бы порекомендовал этот обзорный документ, охватывающий несколько методов.
Когда следует использовать LLM в качестве критерия оценки, а когда — традиционные показатели?
Не каждый результат можно однозначно оценить с помощью правил. Если вы оцениваете такие вещи, как качество обобщения, тон, полезность или то, насколько хорошо были выполнены инструкции, жесткие метрики оказываются недостаточными. Вот где LLM в роли судьи проявляет себя наилучшим образом: вместо проверки на точное совпадение вы просите другую модель оценить ответы по заданной рубрике.
Тем не менее, не стоит отказываться от традиционных показателей. Когда есть очевидная истина — например, фактическая точность или точные ответы, — они быстрые, дешевые и надежные.
Наилучшие системы сочетают в себе оба подхода: использование традиционных метрик для объективной оценки правильности и судейство LLM для субъективной или нестрогой оценки качества.
Циклы оценки в производственной среде
Эффективная оценка не опирается на один метод — она многоуровневая:
- Офлайн-метрики: начните с размеченных наборов данных и автоматической оценки, чтобы быстро отфильтровать слабые версии моделей.
- Оценка человеком: Привлеките аннотаторов или экспертов для оценки нюансов — реализма, полезности, безопасности и особых случаев, которые не учитываются метриками.
- Онлайн A/B-тестирование: наконец, измерьте реальное влияние — количество кликов, удержание пользователей, удовлетворенность.
После запуска системы ее оценка не прекращается — она развивается. Взаимодействие с пользователями должно постоянно регистрироваться, анализироваться и просматриваться. Эти примеры из реальной жизни выявляют случаи сбоев и изменения в моделях использования. Чем больше данных регистрируется моделью, тем больше инструментов у вас будет для диагностики: встраивания модели, отклик, время отклика и т. д.
Даже если сама модель остается неизменной, ее поведение и производительность все равно могут меняться со временем. Это явление, известное как дрейф поведения, обычно проявляется постепенно по мере развития внешних факторов, таких как изменения в пользовательских запросах, появление нового сленга, смещение акцентов в предметной области или даже небольшие корректировки подсказок и шаблонов. Проблема в том, что это ухудшение часто бывает незаметным и неочевидным, поэтому его легко пропустить, пока оно не начнет влиять на пользовательский опыт.
Чтобы вовремя заметить дрейф, уделяйте пристальное внимание как входным, так и выходным данным.
- Входные данные: Отслеживание изменений в распределении эмбеддингов, длине запросов, шаблонах тем или появлении ранее не встречавшихся токенов.
- Результат : Отслеживание изменений тона, многословности, частоты отказов или сигналов, связанных с безопасностью. Помимо этих прямых сигналов, также полезно отслеживать косвенные показатели оценки с течением времени — такие как оценки LLM как судьи, отзывы пользователей (например, «лайки» или «дизлайки») и эвристические алгоритмы, специфичные для конкретной задачи, за длительные периоды времени, с учетом сезонности поведения пользователей, что приводит к срабатыванию оповещений, когда статистические различия превышают заданные пороговые значения.
Критика LLM
Распространенная критика LLM заключается в том, что они ведут себя как «средние значения информации» : вместо хранения или извлечения дискретных фактов они обучаются сглаженному статистическому распределению по тексту. Это означает, что их результаты часто отражают наиболее вероятное сочетание множества возможных продолжений, а не обоснованное, единственное «истинное» утверждение. На практике это может привести к чрезмерно общим ответам или уверенным на вид утверждениям, которые на самом деле являются просто высоковероятными лингвистическими паттернами.
В основе такого поведения лежит целевая функция кросс-энтропии , которая обучает модели минимизировать расстояние между предсказанными вероятностями токенов и наблюдаемым следующим токеном в данных. Хотя кросс-энтропия эффективна для обучения беглому языку, она вознаграждает только совпадение вероятностей, а не истинность, причинно-следственную связь или согласованность в разных контекстах. Она не различает «правдоподобную формулировку» и «правильное рассуждение» — только соответствие следующего токена распределению обучающей выборки.
Ограничение становится практическим: оптимизация по кросс-энтропии способствует усреднению по модам , где модель предпочитает безопасные, центральные прогнозы точным, проверяемым. Именно поэтому модели с линейной логикой могут быть превосходны в задачах, требующих беглого синтеза, но уязвимы в задачах, требующих точного символического рассуждения, долгосрочной согласованности или фактической основы без внешних систем, таких как поиск или проверка.
Краткое содержание
Создание и внедрение больших языковых моделей — это не освоение какой-то одной прорывной идеи, а понимание того, как множество взаимозависимых систем объединяются для создания целостного интеллекта. От токенизации и эмбеддингов, через архитектуры на основе механизма внимания, до стратегий обучения, таких как предварительное обучение, тонкая настройка и обучение с подкреплением, каждый слой выполняет определенную функцию, превращая необработанный текст в эффективные, управляемые модели.
Сложность и увлекательность разработки LLM-моделей заключается в том, что производительность редко определяется одним компонентом в отрыве от контекста. Эффективные приемы, такие как кэширование ключ-значение, FlashAttention и квантизация, имеют такое же значение, как и такие высокоуровневые решения, как архитектура модели или стратегия выравнивания. Аналогично, успех в производстве зависит не только от качества обучения, но и от оптимизации вывода, строгости оценки, проектирования подсказок и непрерывного мониторинга дрейфа и режимов сбоев.
В совокупности системы LLM представляют собой не столько единую модель, сколько развивающийся комплекс элементов: конвейеры обработки данных, цели обучения, системы поиска, стратегии декодирования и петли обратной связи — все это работает согласованно. Инженеры, которые создают мысленную карту этого комплекса, могут выйти за рамки «использования моделей» и начать проектировать системы, которые являются надежными, масштабируемыми и соответствуют реальным ограничениям.
По мере дальнейшего развития этой области — в сторону более длительных контекстных окон, более эффективных архитектур, более развитых аналитических способностей и более тесной связи с человеком — основная задача остается неизменной: объединение статистического обучения с практическим интеллектом. Именно умение находить этот мост определяет работу инженера с магистерской степенью в области права.
Наиболее примечательные модели в хронологическом порядке
BERT (2018), GPT-1 (2018), RoBERTa (2019), SpanBERT (2019), GPT-2 (2019), T5 (2019), GPT-3 (2020), Gopher (2021), Jurassic-1 (2021), Chinchila (2022), LaMDA (2022), LLaMA (2023)
Автор вам понравился? Оставайтесь на связи!
Если вам понравилась эта статья, поделитесь ею с другом! Чтобы узнать больше о машинном обучении и обработке изображений, подпишитесь на канал !
Я ничего не упустил? Не стесняйтесь оставлять сообщения, комментарии или писать мне напрямую в LinkedIn или Twitter!
Алексей Михайлюк. Все материалы от Алексея Михайлюка.
Источник: towardsdatascience.com

Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.