Новая структура основана на возможностях масштабирования 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 для базовых моделей.