Как настроить большие языковые модели пошаговое руководство

Пошаговое руководство по настройке больших языковых моделей

В 2023 году рост крупных языковых моделей (LLM) таких как Альпака, Сокол, Ллама 2 и GPT-4 указывает на тенденцию к демократизации ИИ. Это позволяет даже малым компаниям позволить себе настраиваемые модели, способствуя широкому принятию. Однако сохраняются и вызовы, такие как ограниченная лицензия на открытые модели и расходы на настройку и обслуживание, которые в основном управляемы для крупных предприятий или научных институтов.

Ключ к максимизации потенциала LLM заключается в настройке и настройке предварительно обученных моделей для конкретных задач. Этот подход соответствует индивидуальным требованиям, предоставляя инновационные и настроенные решения. Настойка не только улучшает эффективность и точность модели, но и оптимизирует использование системных ресурсов, требуя меньшей вычислительной мощности по сравнению с обучением с нуля.

Эффективное управление памятью GPU критично для моделей с большим количеством параметров. Например, загрузка модели с миллиардом параметров с точностью 32 бита требует 4 ГБ оперативной памяти GPU. Чтобы преодолеть это, квантизация позволяет снизить точность параметров и уменьшить потребности в памяти. Преобразование от 32-битной точности до 16-битной может уменьшить память, необходимую как для загрузки, так и для обучения модели, в два раза.

Наиболее часто используемые методы оптимизированной настройки моделей – это PEFT (Parameter Efficient Fine Tuning) и RLHF (Reinforcement Learning with Human Feedback).

Методы параметрически эффективной настройки

В процессе полной настройки больших языковых моделей важно иметь вычислительную систему, которая может эффективно обрабатывать не только значительные веса модели, которые для самых передовых моделей достигают сотен гигабайт, но и управлять рядом других критических элементов. Ниже перечислены категории методов PEFT для оптимизации настройки LLMs.

Метод с добавлением

Этот тип настройки может усиливать предварительно обученную модель дополнительными параметрами или слоями, фокусируясь только на обучении только что добавленных параметров. Метод с добавлением дополнительно делится на подкатегории:

  • Адаптеры: Включение небольших полностью связанных сетей после подслоев трансформатора, с примерами такими как AdaMix, KronA и Компактор.
  • Мягкие подсказки: Точная настройка фрагмента входных эмбеддингов модели с помощью градиентного спуска, с примерами такими как IPT, префиксный настройки и WARP.
  • Другие методы с добавлением: Включают такие техники, как LeTS, AttentionFusion и Ladder-Side настройка.

Выборочный метод

Выборочные PEFT-модели точат ограниченное количество верхних слоев в зависимости от типа слоя и внутренней структуры модели. В эту категорию входят методы такие как BitFit и настройка LN, которые фокусируются на настройке определенных элементов, таких как модельные смещения или отдельные строки.

Методы на основе перепараметризации

Эти методы используют низкоранговые представления для сокращения числа обучаемых параметров, самым известным из которых является low-rank адаптация или LoRA.

LoRA (Low-Rank Adaptation)

LoRA стал прорывным методом PEFT, представленным в статье Эдварда Дж. Хью и других в 2021 году. Он работает в категории перепараметризации, замораживая исходные веса LLM и интегрируя новые обучаемые матрицы с низким рангом в каждый слой архитектуры Трансформера. Этот подход не только уменьшает количество обучаемых параметров, но и уменьшает время обучения и требуемые вычислительные ресурсы, предоставляя более эффективную альтернативу полной настройке.

LoRA использует концепцию Singular Value Decomposition (SVD). По сути, SVD разбивает матрицу на три отдельные матрицы, одна из которых является диагональной матрицей, содержащей сингулярные значения.

LoRA вмешивается в этот процесс, замораживая все исходные параметры модели и вводя пару “матриц разложения ранга” наряду с исходными весами. Эти более маленькие матрицы, обозначаемые как A и B, подвергаются обучению с помощью обучения с учителем. Эта стратегия была успешно реализована с использованием библиотек с открытым исходным кодом, таких как HuggingFace Transformers, облегчающих настройку LoRA для различных задач с выдающейся эффективностью.

QLoRA: Повышение эффективности LoRA

Основываясь на основах, заложенных LoRA, QLoRA дополнительно минимизирует объем потребляемой памяти. Введенный Тимом Деттмерсом и другими в 2023 году, он объединяет низкоранговую адаптацию с квантованием, используя формат квантования 4 бита, называемый NormalFloat или NumericFloat4 (nf4). Квантование по сути является процессом перехода данных от более высокого информационного представления к представлению с меньшей информацией. Этот подход сохраняет эффективность методов оптимизации с точностью 16 бит, деквантовируя 4-битные веса до 16 бит, как требуется во время вычислительных процессов.

QLoRA использует NumericFloat4 (nf4), нацеливаясь на каждый слой в архитектуре трансформера, и вводит понятие двойного квантования для дополнительного сокращения требуемого объема памяти для настройки. Это достигается путем выполнения квантования над уже квантованными константами, стратегией, которая предотвращает типичные пиковые значения памяти при проверке градиента с использованием оптимизаторов с отдельными страницами и унифицированным управлением памятью.

Обучение с подкреплением на основе обратной связи от человека

Обучение с подкреплением на основе обратной связи от человека (RLHF) используется при настройке заранее обученных языковых моделей для более тесного соответствия человеческим ценностям. Процесс RLHF широко использует обратную связь от человека, используя ее для обучения модели вознаграждению. Это динамический и итеративный процесс, в котором модель учится через серию циклов обратной связи, приводящих к вознаграждению в контексте генерации языка. В основе RLHF лежит парадигма обучения с подкреплением, типа машинного обучения, где агент учится, как себя вести в среде, выполняя действия и получая вознаграждение. Это непрерывный цикл действия и обратной связи, где агент стимулируется делать выбор, который приведет к наивысшему вознаграждению. Перенося это на поле языковых моделей, агентом является сама модель, работающая в среде ​​определенного контекстного окна и принимающая решения на основе состояния, которое определяется текущими токенами в окне контекста. “Пространство действий” охватывает все потенциальные токены, которые модель может выбрать, с целью выбрать токен, который наиболее тесно соответствует предпочтениям человека.

Настройка на основе инструкций

Фаза настройки в жизненном цикле Генеративного ИИ характеризуется интеграцией входных и выходных инструкций, а также примеров пошагового рассуждения.

Настройка на одну задачу

Настройка на одну задачу направлена на совершенствование экспертизы модели в конкретной задаче, такой как суммирование. Такой подход особенно полезен для оптимизации рабочих процессов, связанных с значительными документами или потоками конверсации, включая юридические документы и обращения поддержки клиентов. Такая настройка может достичь значительного улучшения производительности с относительно небольшим набором примеров, от 500 до 1000, в отличие от миллиардов токенов, используемых в фазе предварительного обучения.

Шаги для настройки LLM

Вот необходимые шаги для настройки модели LLM с несколькими миллиардами параметров.

В этом примере используется техника QLoRA для настройки модели. Для этого вы можете использовать экосистему библиотек LLM от Hugging Face: transformers, accelerate, peft, trl и bitsandbytes.

1. Начало работы

Начните с установки необходимых библиотек в среду Python на компьютере с требуемой мощностью GPU для настройки на конкретный случай использования. Затем загрузите необходимые модули из этих библиотек.

2. Конфигурация модели

Обратитесь к модели из библиотеки Hugging Face, подайте запрос и получите подтверждение.

Пример формы запроса доступа на Hugging Face для модели Llama 2 с открытым исходным кодом. После подтверждения загрузите модель в вашу среду из онлайн-библиотеки.

Изображение с сайта Hugging Face

3. Загрузка набора данных

Определите набор данных для настройки на основе модели и метода настройки для вашего конкретного случая использования. Пример набора данных называется mlabonne/guanaco-llama2-1k в библиотеке Hugging Face. Загрузите определенный набор данных из хаба Hugging Face в вашу среду.

4. Выполнение конфигурации квантования при необходимости

4-битное квантование с помощью QLoRA позволяет эффективно настраивать огромные модели LLM на устройствах обычного потребления, сохраняя при этом высокую производительность. Это значительно улучшает доступность и удобство использования для реальных приложений.

QLoRA квантует предобученную языковую модель до 4 бит и замораживает параметры. Затем к модели добавляется небольшое число обучаемых слоев низкого ранга адаптера.

5. Загрузка токенизатора

Затем загрузите токенизатор от HuggingFace и настройте сторону заполнения, чтобы исправить любые проблемы.

6. Параметры PEFT

Традиционная настройка предобученных моделей языка (PLM) требует обновления всех параметров модели, что является вычислительно затратным и требует большого объема данных.

Параметр-эффективная настройка (PEFT) работает только с небольшим подмножеством параметров модели, что делает ее более эффективной. Изучите параметры, ознакомившись с официальной документацией PEFT.

7. Параметры обучения

Ниже приведен список гиперпараметров, которые могут быть использованы для оптимизации процесса обучения:

  • output_dir: Директория вывода, где будут храниться предсказания модели и точки контроля.
  • num_train_epochs: Одна эпоха обучения.
  • fp16/bf16: Отключение обучения с использованием fp16/bf16.
  • per_device_train_batch_size: Размер пакета на одном GPU для обучения.
  • per_device_eval_batch_size: Размер пакета на одном GPU для оценки.
  • gradient_accumulation_steps: Это относится к количеству шагов, необходимых для накопления градиентов во время процесса обновления.
  • gradient_checkpointing: Включение чекпоинтинга градиента.
  • max_grad_norm: Обрезка градиента.
  • learning_rate: Начальная скорость обучения.
  • weight_decay: Применение убывания веса ко всем слоям, кроме весов смещения / нормализации слоя.
  • Optim: Оптимизатор модели (оптимизатор AdamW).
  • lr_scheduler_type: Расписание скорости обучения.
  • max_steps: Количество шагов обучения.
  • warmup_ratio: Соотношение шагов для линейного разогрева.
  • group_by_length: Это может значительно улучшить производительность и ускорить процесс обучения.
  • save_steps: Сохранять точку контроля каждые 25 шагов обновления.
  • logging_steps: Запись в журнал каждые 25 шагов обновления.

8. Модельная настройка

Супервизируемая модельная настройка (SFT) является ключевым шагом в обучении с подкреплением от обратной связи человека (RLHF). Библиотека TRL от HuggingFace предоставляет простой в использовании API для создания моделей SFT и их обучения на вашем наборе данных всего лишь несколькими строками кода. Она поставляется с инструментами для обучения языковых моделей с использованием обучения с подкреплением, начиная с супервизируемой модельной настройки, затем моделирования вознаграждения и, наконец, проксимальной оптимизации политики (PPO). После обучения модели сохраните адаптеры и токенизаторы модели. Также вы можете загрузить модель в Hugging Face с использованием аналогичного API.

9. Оценка

Ознакомьтесь с результатами обучения в интерактивной сессии Tensorboard.

Для тестирования модели, подвергнутой модельной настройке, используйте модель конвейера генерации текста от Transformers и задавайте простые вопросы, такие как “Кто такой Леонардо да Винчи?”.

Заключение

В данном руководстве была предоставлена полная информация о модельной настройке модели LLaMA 2 с использованием таких техник, как QLoRA, PEFT и SFT, для преодоления ограничений на память и вычислительные ресурсы. Благодаря использованию библиотек Hugging Face, таких как transformers, accelerate, peft, trl и bitsandbytes, нам удалось успешно провести модельную настройку модели LLaMA 2 с 7 миллиардами параметров на обычном пользовательском GPU.

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