Новая структура основана на возможностях масштабирования DeepSpeed ​​для оптимизации конвейеров RLHF.

Недавно я запустил образовательный информационный бюллетень, посвященный ИИ, у которого уже более 150 000 подписчиков. TheSequence — это информационный бюллетень, ориентированный на машинное обучение, без BS (то есть без шумихи, без новостей и т. д.), чтение которого занимает 5 минут. Цель состоит в том, чтобы держать вас в курсе проектов машинного обучения, научных работ и концепций. Пожалуйста, попробуйте, подписавшись ниже:



Обучение с подкреплением с человеческими предпочтениями (RLHF) стало одним из краеугольных камней нового поколения больших языковых моделей (LLM). Модели на основе RLHF, такие как InstructGPT, стали основой ChatGPT и вдохновили на создание альтернатив, таких как Dolly от Databricks. Несмотря на свою неоспоримую ценность, тонкая настройка LLM с использованием конвейера RLHF остается очень сложной задачей из-за отсутствия основных фреймворков. Недавно Microsoft Research открыла исходный код DeepSpeed-Chat, платформу для демократизации доступа к конвейерам RLHF.

Неудивительно, что Microsoft решила использовать возможности платформы DeepSpeed. Выпущенный несколько лет назад, DeepSpeed ​​стал одним из наиболее популярных стеков для крупномасштабного обучения LLM. Использование этой основы для трубопроводов RLHF кажется естественным.

С функциональной точки зрения DeepSpeed-Chat предоставляет следующие возможности:

(i) Оптимизированный процесс обучения и логического вывода для моделей ChatGPT: Система DeepSpeed-Chat включает использование одного скрипта, чтобы взять предварительно обученную модель Huggingface и запустить ее через все три этапа обучения InstructGPT, используя Система DeepSpeed-RLHF.

(ii) Тщательный конвейер DeepSpeed-RLHF: конвейер DeepSpeed-Chat предназначен для воспроизведения конвейера обучения из документа InstructGPT с упором на обеспечение полноты и однозначного соответствия трем шаги: контролируемая тонкая настройка (SFT), тонкая настройка модели вознаграждения и обучение с подкреплением с обратной связью с человеком (RLHF). Наша система также включает возможности абстрагирования и смешивания данных, что позволяет проводить обучение с использованием нескольких источников данных.

(iii) Надежная система DeepSpeed-RLHF: система DeepSpeed-Chat объединяет возможности обучения и вывода DeepSpeed ​​в единый унифицированный гибридный движок (DeepSpeed-HE) для RLHF. Hybrid-Engine сложный и способен плавно переходить между режимами логического вывода и обучения в RLHF, используя различные оптимизации из DeepSpeed-Inference, такие как тензорный параллелизм и высокопроизводительные ядра преобразователя для поколения.

Архитектура

Архитектуру Deep-Seed можно разделить на два разных компонента.

1) Конвейер обучения RLHF

Модель InstructGPT служит основой для конвейера обучения RLHF, используемого DeepSpeed-Chat. Этот конвейер следует трем основным этапам.

На первом этапе предварительно обученная языковая модель Supervised Finetuning (SFT) настраивается с использованием тщательно отобранных человеческих ответов на различные запросы. Второй шаг, тонкая настройка модели вознаграждения, включает в себя обучение отдельной, меньшей модели с набором данных, содержащим ранжирование нескольких ответов на один и тот же запрос, предоставленное человеком. На третьем этапе, обучении RLHF, модель SFT дополнительно настраивается с использованием обратной связи с вознаграждением от модели RW. В этом процессе используется алгоритм оптимизации проксимальной политики (PPO).

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

2) Гибридный двигатель

Конвейеры RLHF требуют эффективной обработки на двух этапах: а) этап вывода для генерации токенов/опыта, создания входных данных для обучения и б) этап обучения для обновления весов моделей актеров и вознаграждений, а также взаимодействия и планирования между ними. их. Это приводит к двум основным затратам.

Чтобы решить эту проблему, DeepSpeed-Chat представил концепцию HybridEngine. Компонент HybridEngine использует оригинальные механизмы DeepSpeed ​​для режима быстрого обучения, в то же время беспрепятственно применяя механизм логического вывода DeepSpeed ​​для режима генерации/оценки.

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

Во время обучения Hybrid Engine задействует методы оптимизации памяти, такие как семейство технологий DeepSpeed ​​ZeRO и низкоранговая адаптация (LoRA). Эти системные оптимизации предназначены для совместимости друг с другом и могут быть объединены вместе для обеспечения максимальной эффективности обучения в рамках унифицированного гибридного движка.

Hybrid Engine может беспрепятственно изменять разделение модели при обучении и выводе, чтобы поддерживать вывод на основе тензорного параллелизма и механизмы сегментирования на основе ZeRO для обучения.

Использование DeepSpeed-чата

Использование DeepSpeed-Chat принципиально просто. Следующий код создает модель типа ChatGPT на основе модели OPT-13B. Все это может быть достигнуто с помощью одной строки кода.

pip install deepspeed>=0.9.0

git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r requirements.txt

python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --deployment-type single_node

Точно так же стратегию обучения RLHF можно настроить с помощью API-интерфейсов DeepSpeed-Chat, как показано в следующем коде.

engine = DeepSpeedRLHFEngine(
  actor_model_name_or_path=args.actor_model_name_or_path,
  critic_model_name_or_path=args.critic_model_name_or_path,
  tokenizer=tokenizer,
  num_total_iters=num_total_iters,
  args=args)

trainer = DeepSpeedPPOTrainer(engine=engine, args=args)

for prompt_batch in prompt_train_dataloader:
  out = trainer.generate_experience(prompt_batch)
  actor_loss, critic_loss = trainer.train_rlhf(out)

DeepSpeed-Chat представляет собой важную разработку для упрощения интеграции конвейеров RLHF с LLM. Подобно тому, как DeepSpeed ​​стал широко использоваться для предварительного обучения LLM, DeepSpeed-Chat может стать основным стеком для создания конвейеров RLHF для базовых моделей.