Большие языковые модели: от предобучения до обучения на инструкциях
Это перевод моей статьи об обучении языковых моделей на medium.com. Год назад я подготовил краткое исследование на тему языковых моделей, и для закрепления практики начал пробовать дообучение (fine-tuning) больших языковых моделей (LLM) для различных прикладных задач. Первоначально, я получил противоричивые результаты, это подтолкнуло меня к более глубокому изучению теории обучения. В этой статье я решил описать мои теоретические изыскания, и дополнить рядом примеров, полученных на личном опыте. Для обучения opensource модели используются различные дадасеты, так же они публикуются с разлиных стадий обучения, и успех дообучения зависит от выбора правильной базовой модели. На практике, конвейер обучения больших языковых моделей состоит из нескольких фиксированных этапов: Первый этап — предварительное обучение, которое включает обучение на массивном корпусе текста с использованием задачи предсказания следующего токена. На этом этапе модель учит модель языка или языков. Далее следует обучение с учителем (Supervised fine-tuning) на парах "запрос-ответ”, адаптированных к конкретной задаче. Одной из самых распространенных задач на этом этапе является способность модели отвечать на запросы в формате чата. Наконец, подстройка под пользовательские предпочтения, она проводится с использованием техники обучения с подкреплением на основе обратной связи от человека (Reinforcement Learning from Human Feedback), так же назваемся instruct fine-tuning. Хорошим описанием этого процесса является технический отчет по языковой модели Qwen [1]. Они описали этапы обучения и опубликовали три модели: предварительно обученную базовую модель, обученную с учителем модель чат-модель и модель, дообученную на пользовательских предпочтениях с использованием RLHF.
Архитектура трансформеров: токенизация и позиционное кодирование
Токенизация является фундаментальной частью языковой модели, она напоминает мне генеративную грамматику Ноама Хомского. Хомский предложил разделить предложение на токены и строить граф взаимосвязей, описывающий грамматические отношения в предложении. В архитектуре трансформеров механизм внимания (attention) действует как эффективный детектор взаимозавистмостей токенов. В статье исследователей из Standford и Facebook AI [2] анализируется механизм внимания в трансформерах, они выявили, что разные головки (heads) внимания специализируются на разных типах взаимосвязей. Например, одна головка может сосредоточиться на взаимосвязи между глаголами и объектами, другая на связях между объектами и предлогами, как показано на Схеме 1.
В настоящее время одной из наиболее распространенных техник токенизации является сжатие с кодированием пар байтов (Byte Pair Encoding). Она применяется в решении задачти нейронного машинного перевода (Neural Machine Translation) для эффективной токенизации слов, не входящих в словарь [3]. Токенизатор обучается на корпусе текста, где наиболее частые слова становятся отдельными токенами, менее часто встречающиеся слова токенизируются с использованием комбинаций существующих токенов, в худшем случае — с использованием отдельных буквенных токенов. Если язык не представлен достаточно широко в корпусе или является редким, он может быть недопредставлен в токенизированном словаре, что может повлиять на качество генерации текста моделью на этом языке. После токенизации следующим шагом идет слой латентных представлений (embedding transformation), позиционное кодирование и слои внимания с нормализацией. Существует подробная статья о варианте декодер (decoder only) архитектуры трансформер [4]. Наиболее известные архитектуры декодеров: LLaMA, GPT, а вот BERT является примером енкодер (encode only) архитектуры. T5 это классическая архитектура энкодер-декодер (encoder-decoder). Генерация результата модели состоит из серии шагов, на каждом происходит расчет вероятностей для возможного последующего токена из всех возможных токенов словаря. Для выбора конкретного токена, для включения в текст ответа, может использоваться greedy или beam поиск. Настройка параметров генерации может значительно повлиять на разнообразие результат.
Языковое моделирование (Causal and Masking Language Modeling)
Декодеру при обучении доступны на входе только предшествующие токены. Его важным свойством является авторегрессионное предсказание следующего токена на основе языковой каузальности. Это функционально напоминает рекуррентную нейронную сеть (RNN), но с менее сложной операцией обратного распространения ошибки. Существует статья о способности декодеров моделировать RNN [5].
BERT (Bidirectional Encoder Representations from Transformers) представляет собой архитектуру энкодер. Эта архитектура использует маскированные слова во входе для обучения без учителя [6], вторым этапом следует обучение с учителем, впервые примененное компанией Open AI [7]. Они поясняют, что вычислительная сложность обучения базовой языковой модели значительна, а последующее дообучение с учителем для конкретных задач существенно дешевле. Кроме прочего, BERT превзошел показатели модели GPT от OpenAI на момент публикации статьи в 2018 году. В конечном итоге, декодер архитектура GPT, с ее авторегрессионным и каузальным свойствами, показала лучшие результаты для задачи генерации текста. Энкодер архитектура широко используется для классификации текста, распознавания именованных сущностей и т. д. [8]. На схеме 2 представлена визуализация различных архитектур трансформеров: декодер, энкодер и энкодер-декодер.
С появлением архитектур GPT и BERT исследования в области языковых моделей разделились на два направления: предварительное обучение модели для понимания взаимосвязей токенов и дообучение с учителем, для конкрнетной прикладной задачи. Задачами здесь являются: генерация текста по шаблону чата, классификацию текста, перефразирование и т. д.
Обучение с учителем
В статье Open AI [7] предложено обучение с учителем для оптимизации модели под конкретные прикладные задачи, такие как ответы на вопросы, определение степени свзи двух текстовых последовательностей, семантическое сходство текстовых последовательностей, обобщение текста и т. д. Дообучение проводится на подготовленных парах "вопрос-ответ” путем маскирования вопроса и дообучения с использованием следующего токена в качестве цели. Я провел эксперементы по дообучению с такими моделями как Mistral и LLaMa, они изначально склонны к абстрактному обобщению. Среди прочего, я обнаружил, что модель mosaicml/mpt-7b склонна к экстрактивному обобщению. Я попробовал дообучиь ее с использованием библиотек Hugging Face: TRL, transformers, peft и bitsandbytes на датасете Samsung/samsum, который в основном является абстрактным суммированием. Было легко добиться значительного улучшения в выполнении задачи абстрактного суммирования всего после одной эпохи.
Класс из библиотеки transformers для запуска модели CausalLM называется AutoModelForCausalLM. Класс конфигурации дообучения LoRA называется LoraConfig, а класс для запуска обучения из библиотеки trl называется SFTTrainer. Также есть хороший практический пример дообучения Phi-2 с медицинским датасетом [9].
Обучение с подкреплением на обратной связи (RLHF)
В 2022 году Open AI достиг значительного прогресса публикацией модели InstructGPT [10]. Их целью было привести языковые модели в соответствие с намерениями пользователей, делая их более полезными, точными и безопасными. Подход был простым: были собраны несколько ответов на один и тот же вопрос и представлены людям для ранжирования (Схема 3). Основная идея алгоритма заключается в оценке расстояния Кульбака-Лейблера между желаемым ответом модели и отклоненным. Это расхождение затем интерпретируется как метрика ошибки модели и распространяется на обученную модель в виде коррекции весов.
В 2023 году был опубликован алгоритм Direct Preference Optimization [11]. Суть этого алгоритма заключается в большей стабильности и меньшей вычислительной интенсивности обучения. В настоящее время исследования RLHF развиваются очень быстро. Недавно вышла статья с алгоритмом multiturn chat optimisation [12]. Практически все opensource модели в настоящее время обучаются в три этапа: предварительное обучение языковому моделированию, дообучение с учителем на прикладные задачи, и RLHF оптимизация предпочтений пользователя [13]. Согластно моему пониманию, RLHF почти не улучшает качество, он помогает уменьшить вариативность и сделать ответы модели более стабильными, приводя их в соответствие с предпочтениями пользователя.
Low-Rank Adaptation
В 2021 году был опубликован алгоритм LoRA для дообучения языковых моделей [14]. Он приносит возможность дообучения небольшой части параметров модели, с незначительным падение точности, по отношению к полному дообучению. Полное дообучение модели является операцией, требующей большого объема памяти из-за необходимости хнанения градиента ошибки для каждого параметра модели. Это требует гораздо большего обьема памяти, чем инференс модели. В настоящее время наиболее используемым оптимизатором для языковых моделей является AdamW [15], суть метода заключается в отдельной регуляризации затухания весов.
QLoRA представляет из себя технику квартизации замароженных весов модели, она сделала дообучение еще более доступным, сократив требуемый для запуска модели объем памяти. Это позволило запускать модель с точностью в 8 бита без значительной потери точности инференса [16]. На практике параметры обучения и градиенты используют более высокую точность (16 или 32 бита), в то время как остальные параметры могут быть 8-битными или 4-битными, с минимальной потерей точности. Однако, обычно выполнение модели в режиме 4-бит по сравнению в 8-битами дает более значительное снижение точности. Для сохранения точности применяются различные техники, такие как масштабирование весов и т. д. Эти техники реализованы в библиотеке peft. Еще одна важная библиотека для запуска моделей с квантованной точностью на CUDA-ядрах — bitsandbytes. Существует три основных вида LoRA, они показаны на Схема 4. [19]
В недавней статье, сравнивающей полное дообучение и параметр-эффективное дообучение, говорится, что LoRA также служит естественной техникой регуляризации против катастрофического забывания во время полного дообучения [17]. В моих экспериментах LoRA дает лучшие результаты на моделях с как минимум 7B параметрами, в то время как мои попытки дообучить модель GPT-2 с 1.5B и 774M не дали достойных результатов. Самое свежее исследование применения LoRA решает проблему дообучения больших языковых моделей Mixture-of-Experts (MoE), дополняя отдельную подстройку маршрутизационной части архитектуры MoE [18].
Синтетический датасет
Успех в дообучении больших языковых моделей зависит от качества данных. Различные техники дополнения и преобразования данных, а также измерения качества были тщательно изучены в статье [20]. Примечательно, что Microsoft провело исследование по генерации датасета для дообучения языковой модели инструкциями [21]. Конкретные промпты, используемые в исследовании, представлены в их статье.
Существует подробное пошаговое руководство по преобразованию списка документов в датасет пар "вопрос-ответ" [22]. Наиболее распространенный случай использования обучения с учителем: сначала разбиение на части, затем группировка контекста, далее генерация запросов и генерация ответов на эти запросы с помощью языковой модели.
Пример успешного дообучения языковой модели для задачи преобразования текста в Cypher запрос с использованием базы данных знаний Neo4j можно найти тут [23]. Задача дообучения для задачи геренации по тексту SQL была успешно реализована [24] на основе публичных датасетов запросов SQL.
Ссылки
QWEN TECHNICAL REPORT — 2023 — https://arxiv.org/pdf/2309.16609
What Does BERT Look At? An Analysis of BERT’s Attention — 2019 — https://nlp.stanford.edu/pubs/clark2019what.pdf
Neural Machine Translation of Rare Words with Subword Units — 2016 — https://arxiv.org/pdf/1508.07909
Decoder-Only Transformers: The Workhorse of Generative LLMs — https://cameronrwolfe.substack.com/p/decoder-only-transformers-the-workhorse
How Powerful are Decoder-Only Transformer Neural Models? — 2023 — https://ar5iv.labs.arxiv.org/html/2305.17026v3
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — 2019 — https://arxiv.org/pdf/1810.04805
Improving Language Understanding by Generative Pre-Training — 2018 — https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
Understanding Encoder And Decoder LLMs — https://magazine.sebastianraschka.com/p/understanding-encoder-and-decoder
Fine-tune a Large Language Model — https://medium.com/@prasadmahamulkar/fine-tuning-phi-2-a-step-by-step-guide-e672e7f1d009
Training language models to follow instructions with human feedback — 2022 — https://arxiv.org/pdf/2203.02155
Direct Preference Optimization: Your Language Model is Secretly a Reward Model — 2023 — https://arxiv.org/pdf/2305.18290
Multi-turn Reinforcement Learning from Preference Human Feedback — 2024 — https://arxiv.org/pdf/2405.14655
RLHF Workflow: From Reward Modeling to Online RLHF — 2024 — https://arxiv.org/pdf/2405.07863
LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS — 2021 — https://arxiv.org/pdf/2106.09685
DECOUPLED WEIGHT DECAY REGULARIZATION — 2019 https://arxiv.org/pdf/1711.05101
QLORA: Efficient Finetuning of Quantized LLMs — 2023 — https://arxiv.org/pdf/2305.14314
LoRA Learns Less and Forgets Less — 2024 — https://arxiv.org/pdf/2405.09673
Let the Expert Stick to His Last: Expert-Specialized Fine-Tuning for Sparse Architectural Large Language Models — 2024 — https://arxiv.org/html/2407.01906v1
Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey — 2024 — https://ar5iv.labs.arxiv.org/html/2403.14608
Generative AI for Synthetic Data Generation: Methods, Challenges and the Future — 2024 — https://ar5iv.labs.arxiv.org/html/2403.04190v1
WizardLM: Empowering Large Language Models to Follow Complex Instructions — 2023 — https://arxiv.org/pdf/2304.12244
Using LLMs for Synthetic Data Generation: The Definitive Guide — https://www.confident-ai.com/blog/the-definitive-guide-to-synthetic-data-generation-using-llms
SyntheT2C: Generating Synthetic Data for Fine-Tuning Large Language Models on the Text2Cypher Task — 2024 — https://arxiv.org/pdf/2406.10710
FINE-TUNING LANGUAGE MODELS FOR CONTEXT-SPECIFIC SQL QUERY GENERATION — 2023 — https://arxiv.org/pdf/2312.02251