OpenRLHF — это легкая и эффективная среда обучения и выравнивания уровня LLM промышленного уровня.

Легкая и эффективная система обучения и выравнивания LLM промышленного уровняOpenRLHF поддерживает полнопараметрическое и полнопроцессное обучение модели RLHF 70B!

是什么?自После её появления люди обратили внимание на технологию выравнивания RLHF, представленную InstructGPT, и на её основе попытались воспроизвести процесс обучения ChatGPT. Постепенно появились репрезентативные работы по воспроизведению RLHF, такие как ColossalChat и DeepSpeed-Chat. Однако в то время всеобщее понимание технологии выравнивания было в основном сосредоточено вокруг InstructGPT. Поскольку OpenAI в последнее время не был особо открытым, ему фактически не хватало сторонних верификаций. К счастью,Вскоре был запущен, который не только полностью подтвердил эффективность технологии RLHF, но и имел достаточно инноваций (таких как отказ от выборки и мульти-RM и т.д.), что сразу же дало старт всемуСообщество разработчиков ПО с открытым исходным кодом.

Учитывая популярность InstructGPT и LLaMA2, мы, участники сообщества разработчиков ПО с открытым исходным кодом OpenLLMAI, изучили существующие популярные фреймворки для обучения выравниванию и обнаружили, что большинство из них не поддерживают полнопроцессное обучение LLaMA2 по всем параметрам, недостаточно масштабируемы или не обладают достаточной лёгкостью и удобством использования. Поэтому мы стремимся разработать по-настоящему промышленную фреймворк для обучения выравниванию LLM, который воспроизводит процесс обучения на больших моделях, представленный InstructGPT и LLaMA2, поддерживает популярные методы выравнивания, такие как RLHF и DPO, и помогает каждому быстро реализовать свои идеи по выравниванию.

所以,欢迎来到OpenRLHF,快速开启你的对齐工作吧!

https://github.com/OpenLLMAI/OpenRLHF

Введение в проект OpenRLHF

В настоящее время OpenLLMAI работает над двумя крупными проектами:

Остальные проекты будут зависеть от последующих трудозатрат и интересов. В ближайшем будущем мы, возможно, запустим фреймворк KD или SE. Пока что мы, возможно, не очень заинтересованы в обучении небольшой универсальной модели. Главная причина в ограниченности времени, средств и энергии. Поддерживать энтузиазм довольно сложно, поэтому мы часто рассматриваем модели, основанные на интересах. Однако интерес, в конце концов, не съедается, поэтому мы недавно потратили много сил на подготовку этого рекламного материала (одноклассник Сяньюй раньше был слишком буддистом/обсессивно-компульсивным/занятым, и у него было много проблем, ха-ха). Надо признать, что OpenLLMAI всё ещё очень невежественен.OpenRLHF пока не идеаленОднако мы приложили все усилия и надеемся получить более широкое признание и поддержку сообщества. Вместе мы можем добиться большего!

 

Идеи дизайна OpenRLHF

1. Цели дизайна:Легкий и эффективныйизПромышленный классСтруктура обучения и выравнивания LLM

Поскольку в отрасли в настоящее время отсутствует по-настоящему промышленная платформа для выравнивания LLM, большинство производителей могут решить внедрить её самостоятельно (спасибо OpenAI за хорошее начало). В краткосрочной перспективе это понятно, но в долгосрочной перспективе проблема изобретения велосипеда неизбежна.

Поэтому наша цель — создать лёгкую, эффективную систему обучения и адаптации LLM промышленного уровня. Для этого мы тщательно разработали и протестировали первую версию, стремясь к удобству использования. Мы также официально открываем её исходный код для привлечения большего числа единомышленников. Мы твёрдо убеждены, что открытый исходный код — залог долголетия этой системы.

2. Концепция дизайна: простота использования, высокая производительность, масштабируемость и исследовательский характер.

  • Простота использования: Простота использования — главный руководящий принцип при разработке фреймворка OpenRLHF. Поскольку высокая производительность — обязательное условие для квалифицированного фреймворка, мы не придаём этому слишком большого значения. Обеспечивая высокую производительность, мы стремимся к повышению простоты использования.

  • Масштабируемость: основан на 7B, обратно совместим с обучением небольших моделей 1-2B и постепенно поддерживает обучение моделей растущих размеров, таких как 34B/70B/170B.

  • Исследовательский: Помимо обеспечения базовой функциональности фреймворка, мы будем оставаться на передовых позициях в технологиях выравнивания, отслеживая новейшие разработки и оперативно внедряя их. Мы также предоставим доступ к новейшим алгоритмам выравнивания, разработанным нашей командой. Мы также разработаем модуль LLMPipeline для быстрого внедрения и объективного сравнения основных алгоритмов выравнивания и методов обучения моделей.

3. Идеи реализации

  • Простота использования: В качестве базовой платформы для крупномасштабных моделей мы изучили фреймворки для обучения LLM, такие как DeepSpeed и Megatron-LM, и выбрали DeepSpeed за его простоту и удобство использования в первой версии. В качестве библиотеки моделей мы без колебаний выбрали HugBaoHugFace. Для обеспечения распределённой масштабируемости мы выбрали Ray (используемый в основном для планирования ресурсов).

  • Масштабируемость и высокая производительность: Используйте луч, чтобы сделать разумнымПланирование ресурсов графического процессора, назначая модели «Актёр», «Награда», «Ссылка» и «Критик» отдельным графическим процессорам,Изолирующее обучение и выводДля того, чтобы в полной мере использовать прекрасные инструменты сообщества логического вывода и сотрудничать с offload, PEFT и т. д.Сохранение видеопамятиТехнология достижения масштабируемости и эффективного обучения больших моделей.

  • Исследовательский подход: В этой первой версии мы полностью воспроизвели процесс обучения InstructGPT и LLaMA2 и поддержали новые методы выравнивания, такие как Determined Proportional Object (DPO). Мы продолжим придерживаться этого исследовательского подхода и разработаем модули конвейера для поддержки конвейеров основных моделей, таких как InstructGPT Pipeline и LLaMA2 Pipeline, помогая сообществу проводить больше научных сравнений и исследований.

Ключевые моменты OpenRLHF

Ключевые особенности OpenRLHF

  • Первое полное воспроизведение LLaMA2 с открытым исходным кодоми структура выравнивания RLHF InstructGPT;

    • Поддержка полного обучения процессам SFT/RM/PPO;

    • поддерживатьвыборка с отклонением, множественные РМ;

  • Простота использования: OpenRLHF — одна из самых простых высокопроизводительных библиотек RLHF, доступных в настоящее время, и может быть реализована на одном узле DGXA100 с 8 картами. 34Б Обучение модели RLHF можно проводить с помощью сценариевОбучение в один клик;

  • Раздельное обучение и push, распределенный и масштабируемый RLHF;

    • Использование нескольких карт24 ГБ Графический процессор RTX 4090 Полное обучение модели

    • Использование нескольких карт А100 80Г GPU и vLLMМодель 70B+Полное обучение процессу

    • Разделение обучения и подталкивания: разделение обучения и вывода для повторного использования хороших инструментов вывода из сообщества (в конечном итоге мы использовали vLLM) для сокращения задержки вывода;

    • Распределенный и масштабируемыйБлагодаря поддержке Ray/DeepSpeed/VLLM и разумному планированию ресурсов мы добились эффективного и масштабируемого обучения. Ниже приведены два примера:

  • Высокая производительность: благодаря Ray/DeepSpeed и другим технологиям экономии памяти, а также платформам ускорения вывода, наша производительность обучения на модели 13B LLaMA2 более чем в 4 раза превышает производительность DeepSpeedChat.

    • нулевая серия

    • FlashAttention2

    • LoRA, QLoRA

    • разгрузка

    • градиентная контрольная точка

    • Ускорение вывода: vLLM

    • Советы по экономии видеопамяти:

  • Передовые технологии: идя в ногу с передовыми разработками, в настоящее время поддерживает основные технологии выравнивания и основные большие модели;

    • LLaMA

    • байчуань

    • qwen

    • Микстраль 8*7б

    • Новейшие модели:

    • Стандарт RLHF: SFT/RM/PPO;

    • Отбраковочная выборка;

    • DPO (прямая оптимизация предпочтений)/IPO/cDPO;

    • Оптимизация Канемана-Тверски (КТО);

    • Условный SFT (https://arxiv.org/abs/2308.12050);

    • Современная технология выравнивания:

  • Методы обучения с подкреплением: мы интегрировали приемы реализации для PPO, чтобы улучшить стабильность обучения, ссылаясь на «Вопросы реализации» в «Глубоких градиентах политики» и «ppo-implementation-details».

 

Демонстрация производительности OpenRLHF

Матрица поддержки:

Следующая матрица поддержки показывает, как OpenRLHF соотносится с основными учебными системами выравнивания LLM (опрос может быть отложен, поэтому, пожалуйста, свяжитесь с нами, чтобы исправить любые ошибки или упущения):

 Хитрости PPO34B Полное участие/4 A10070B+полные параметры/16 A1007B Full/4 RTX4090QLoRAМикстраль МОЕ 8*7б
OpenRLHF
DeepSpeedChat✖️✖️✖️✖️✖️✖️
ColossalAIChat✖️✖️✖️✖️✖️✖️
ТРЛ✖️✖️✖️✖️
LLaMA-Factory✖️✖️✖️✖️✔(QLoRA)

Основными преимуществами OpenRLHF являются:Хорошая масштабируемостьиЭффективная производительность, который может поддерживать эффективное обучение всего процесса и параметров модели 70B, а также справляться с более масштабным расширением в будущем. Однако такие фреймворки, как LLaMA-Factory/trl/trlx, сталкиваются с аналогичными проблемами. Не поддерживает полнопараметрическую тренировку RLHF 70B.Некоторые фреймворки фокусируются на тонкой настройке моделей уровня 13b Lora, обычно на выборкеОбъединение актерско-критикических решений(Это временная мера для небольших RLHF, позволяющая экономить видеопамять, но она не соответствует стандартной реализации RLHF, а ее масштабируемость очень низкая, поэтому всегда наступит время, когда от нее нельзя будет отказаться.) Конечно, у OpenRLHF есть и некоторые недостатки, такие как неполная документация и тесты производительности.Необходимо улучшить удобство использованияВ частности, мы предлагаем следующее сравнение OpenRLHF с различными популярными фреймворками RLHF (пожалуйста, исправляйте любые ошибки или упущения). Более подробное и полное сравнение можно найти в нашем официальном техническом отчёте, который будет опубликован позже.

  • LLaMA-Factory: Преимущества модели заключаются в эффективной тонкой настройке и простоте использования (чему стоит поучиться, и у неё даже есть веб-интерфейс). Однако она использует объединённый актор-критику, не поддерживает полнопараметрическое обучение PPO на 70B и непроста в масштабировании модели.

  • Colossal-Chat: использует пошаговое обучение с подкреплением, в то время как наш фреймворк использует пошаговое обучение с подкреплением. Подробнее см. в разделе OpenRLHF и Colossal-Chat.

  • trl/trlx: Их преимущество — отличная совместимость с экосистемой Hugging Face, но у них могут быть проблемы с глубокой инкапсуляцией, что затрудняет их модификацию. Кроме того, в настоящее время они не поддерживают полнопараметрическое обучение PPO 70B. Они также используют объединённый актёр-критика для экономии видеопамяти, что не соответствует стандартной реализации.

  • NeMo-Aligner: Эффективность генерации на основе Megatron в настоящее время низкая, что влияет на общую эффективность обучения. Кроме того, она плохо совместима с экосистемой Hugging Face, и модель может потребовать специальных доработок.

Данные о производительности:

Согласно существующим тестам, эффективность обучения нашего фреймворка OpenRLHF на модели 13B примерно в четыре раза выше, чем у DeepSpeedChat. (Из-за ограниченности рабочей силы тестирование может быть отложено. Пожалуйста, сообщите нам данные о производительности других фреймворков для внесения исправлений.)

 7B llama2 RLHF13B llama2 RLHF (50 тыс. образцов)
OpenRLHF-17 часов с 8 А100
DeepSpeedChat-48 часов с 16 А100

Пропускная способность обучения:

  • Конфигурация по умолчанию:

  • 4 A100 80G для актера, 2 A100 80G для критика, 1 A100 80G для RM и 1 A100 80G для InitPolicy

  • ZeRO2 с Adam Offload

  • Максимальная длина последовательности: 2048

  • Производительность пропускной способности (выборок/с в конфигурации по умолчанию, которая позже будет изменена на токены/с):

  • 7B llama2: 0,105 выборок/gpu/сек micro_batch_size = 16/8 (развертывание/обучение), generation_length = 100~300

  • 13B llama2: 0,04 выборки/gpu/сек micro_batch_size = 8/4 (развертывание/обучение), generation_length = 200~400

  • 34B codellama: 0,007 выборок/gpu/сек micro_batch_size = 2/1 (развертывание/обучение), generation_length = 300~800

Данные о производительности основных моделей (из-за нехватки рабочей силы повторное тестирование не представляется возможным. Приведённые здесь данные о производительности получены, когда модель поддерживалась. Текущая версия PPO должна работать намного быстрее. Дополнительные модели и обновлённые данные о производительности будут добавлены в официальный технический отчёт позже):

модельСФТРМППОПримечания
Байчуань2-7Б1 час4 часа71ч 
Qwen-7B--- 

Как использовать OpenRLHF

Официальная документация:

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

  • Домашняя страница проекта

  • Официальная документация

Установка OpenRLHF

Мы поддерживаемnvidia-docker (рекомендуется во избежание потенциальных проблем с окружением)Или установка среды conda (вы можете предоставить настроенную среду conda или образ позже):

Сначала клонируем репозиторий:

Клонируйте репозиторий: git clone https://github.com/openllmai/OpenRLHF.git

 

Затем установите среду nv-docker или conda:

# install nv-docker cd examples/scripts # install nvidia-docker (Необязательно) ./nvidia_docker_install.sh # launch nvidia container ./docker_run.sh # нам понадобится conda conda create -n openrlhf python=3.10 # поэтому нам нужно вручную установить некоторые пакеты: при установке torch install вам может потребоваться сопоставить соответствующую версию cuda. pip install packing ninja pip3 install torch # check ninjia ninja --version echo $? # output: 0 # install flash-attn: может занять некоторое время. # При сетевой ошибке: вы можете загрузить указанную версию с https://github.com/Dao-AILab/flash-attention/releases. pip install flash-attn==2.4.2 ./build_openrlhf.sh # наслаждайтесь! conda активируйте openrlhf

 

 

Обучение OpenRLHF

Сценарий обучения:

После настройки среды перейдите в каталог /openrlhf/examples/scripts, измените сценарий обучения в соответствии с вашими потребностями и запустите обучение одним щелчком мыши. Поддерживается обучение как на одной машине, так и на нескольких машинах.Поддерживает полномасштабное и полнопроцессное обучение моделей 7B-70B+Ниже приведены некоторые важные параметры, которые пользователи могут изменять в соответствии со своими потребностями для поддержки обучения собственной модели:

  • -pretrain: адрес модели предварительного обучения в формате Hugface

  • -dataset: адрес набора данных в формате Hugface

  • -dataset_probs: вероятность выборки нескольких смешанных наборов данных, например: 0,5, 0,4, 0,1

  • -save_path: адрес сохранения модели, формат Hugface

  • -max_epochs: количество эпох обучения

  • -micro_train_batch_size: размер партии для одного графического процессора

  • -train_batch_size: глобальный размер партии

  • -learning_rate: скорость обучения

Сценарий автономного обучения:

cd examples/scripts # установка nvidia-docker (необязательно) ./nvidia_docker_install.sh # запуск контейнера nvidia ./docker_run.sh # cd в контейнере cd /openrlhf/examples/scripts # сборка OpenRLHF (т. е. установка pip) ./build_openrlhf.sh # huggingface вход ~/.local/bin/huggingface-cli вход # продолжение предварительной подготовки ./train_continue_pretrain_llama.sh # тренировка модели SFT ./train_sft_llama.sh # тренировка модели RM ./train_rm_llama.sh # тренировка модели PPO ./train_ppo_llama.sh # тренировка модели DPO ./train_dpo_llama.sh # train KTO model ./train_kto_llama.sh # train Модель выборки отбраковки ./train_rejection_sampling_llama.sh # train Условная модель SFT ./train_conditional_llama.sh

 

Сценарий многомашинного обучения,Полнопараметрическое обучение RLHF на модели A100 70B с 16 картами:

cd examples/scripts # запуск контейнера nvidia ./docker_run.sh # cd в контейнере cd /openrlhf/examples/scripts # сборка OpenRLHF (т. е. установка pip) ./build_openrlhf.sh # из-за совместимости образа nVIDIA PyTorch pip uninstall xgboost transformer_engine -y # huggingface login ~/.local/bin/huggingface-cli login # запуск главного узла ray в контейнере ray start --head --node-ip-address 0.0.0.0 --num-gpus 8 # если вы хотите запустить ray на нескольких узлах, используйте ray start --address {MASTER-NODE-ADDRESS}:6379 --num-gpus 8 # обучение модели ray PPO, по умолчанию требуется 8 графических процессоров config ./train_ppo_llama_ray.sh # для моделей 70B и RLHF на основе vLLM (важно!) pip install vllm==0.3.2 # из-за совместимости vLLM pip uninstall flash_attn -y ./train_ppo_llama_ray_70b.sh

 

рассуждения

Для обоснования и оценки мы рекомендуем использовать инструменты и коды с открытым исходным кодом. Вы можете обратиться к следующим скриптам:

Будущая работа

Дальнейшее развитие OpenRLHF будет сосредоточено на удобстве использования и практичности (документация, обучающие материалы, практический опыт и т. д.), передовых функциях (новые алгоритмы, конвейеры моделей и т. д.) и стабильности. В частности, существуют следующие потенциальные задачи, в решении которых, как мы надеемся, каждый сможет принять участие:

  • Документы: версии на китайском и английском языках

    • Учебное пособие: Обеспечивает хорошееУчебное пособие

    • Окружение: укажите настроенный образ или среду conda.;

  • Тестирование производительности, бенчмаркинг;

    • Тестирование основных функций

    • Сравнение с другими фреймворками

    • Поддержка тестирования модели

    • Тестирование алгоритма выравнивания

  • Дальнейшая оптимизация производительности;

  • Повышение стабильности: регулярный обзор кода;

  • Новые функции и новые алгоритмы;

  • Поддержка новых моделей: новые модели Google и т. д.

  • Модуль оценки обеспечивает более комплексные возможности оценки;

Введение в организацию

Профиль организации

OpenLLMAI: Открытый ИИ для всех.

Возможно, нам ещё далеко до OpenAI, но мы очень близки к открытости. Поэтому мы просим от наших участников лишь двух вещей: открытости и уверенности. Наш девиз: «Пусть ваша страсть сияет». Мы с нетерпением ждём возможности пройти вместе с вами трудный путь развития ИИ. Учёный должен быть решительным и непоколебимым, ведь впереди долгий и трудный путь!

Мы все здесь для двух целей: 1. Обмен методиками LLM (обмен техническими знаниями и их распространение); 2. Разработка инструментов LLM (фреймворки обучения, модели, работа с данными и т. д.). Приглашаем всех желающих присоединиться к нам! Подробное введение об организации см. в предыдущей публикации Zhihu «Знакомство с организацией OpenLLMAI».

Разработчики

За это время проект OpenRLHF привлек более 20 участников, внес более 130 коммитов и получил более 800 звезд. Мы хотели бы поблагодарить всех участников, особенно hijkzzz, wuxibin и Xianyu за их выдающийся вклад в развитие проекта. hijkzzz и Xianyu являются инициаторами этого проекта. Как администратор проекта, hijkzzz представил первую версию кода проекта и посвятил много энергии его поддержке в течение длительного периода времени, внеся незаменимый вклад в развитие проекта. wuxibin, как основной разработчик проекта, в основном отвечает за масштабное расширение фреймворка на основе Ray и посвятил много энергии его ежедневной поддержке в течение длительного периода времени. Xianyu, как администратор проекта, отвечает за разработку части NLP и некоторую работу по планированию проекта. Кроме того, pikaqqqqqq, li-plus, wwxFromTju, jovany-wang, xffxff, dabney777, suc16, Dylancer1998 и другие студенты также внесли важный вклад в развитие проекта (перечислить их всех здесь невозможно, и имена всех разработчиков будут указаны в официальном техническом отчёте/документе позже; также есть много студентов и преподавателей, которые, хотя и не участвовали напрямую в проекте, внесли множество ценных предложений. Большое спасибо всем вам). Мы также рады видеть новых единомышленников и надеемся, что OpenLLMAI будет развиваться вместе со всеми!

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

  • RL: hijkzzz

  • Рэй:уксибинь

  • НЛП: Сяньюй

  • Официальный адрес электронной почты: xianyuai@openllmai.top

Спонсор нас

В настоящее время OpenLLMAI — организация с полностью открытым исходным кодом. Такие проекты, как OpenRLHF/OpenLLMWiki, а также OpenLLM Talk и группа технического обмена, полностью открыты и доступны. Однако в долгосрочной перспективе без финансовой поддержки мы обречены на провал. С нашей страстью к мощи достичь этого непросто. Спасибо всем за вашу поддержку на этом пути. И наконец, мы ищем спонсоров. Мы будем рады финансовой поддержке (вычислительной мощности!!!) или личной поддержке (участию в разработке или другим вкладам). По вопросам спонсорства или сотрудничества обращайтесь по адресу xianyuai@openllmai.top.

Ссылки

https://github.com/OpenLLMAI/OpenRLHF

https://github.com/NVIDIA/Megatron-LM

https://chat.openai.com/

InstructGPT

LLaMA2

https://github.com/facebookresearch/llama

Обнимающие Трансформеры

DeepSpeed

https://github.com/microsoft/DeepSpeed/tree/master/blogs/deepspeed-chat

Рэй

https://github.com/hpcaitech/ColossalAI/tree/main/applications/Chat

https://github.com/CarperAI/trlx

https://github.com/NVIDIA/NeMo-Aligner

https://github.com/hiyouga/LLaMA-Factory

https://github.com/OpenLLMAI/OpenLLMWiki

【OpenLLMAI】Верьте в силу открытого исходного кода: у нас есть своя организация! Впереди долгий путь, но если мы продолжим идти, мы достигнем цели! - Статьи OpenLLMAI - Zhihuhttps://zhuanlan.zhihu.com/p/647882819

Как правильно воспроизвести Instruct GPT / RLHF? - Статья Snail in the Garden Parkour - Zhihu https://zhuanlan.zhihu.com/p/622134699

Начало тренировочного пути: создание полномасштабной тренировочной платформы RLHF с открытым исходным кодом для моделей 70B+ на основе Ray и vLLM — статья Snail in the Garden Parkour — Zhihuhttps://zhuanlan.zhihu.com/p/678828949

[OpenLLM 006] LoRA: Низкоранговая адаптация больших моделей — Что же представляет собой LoRA, ставшая в последнее время популярной? Почему используются как стабильная диффузия, так и воспроизведение с открытым исходным кодом ChatGPT? — Статья OpenLLMAI — Zhihu

https://zhuanlan.zhihu.com/p/620327907

https://arxiv.org/abs/2005.12729

https://iclr-blog-track.github.io/2022/03/25/ppo-implementation-details/

https://github.com/baichuan-inc/Baichuan2

https://github.com/QwenLM/Qwen

https://mistral.ai/news/mixtral-of-experts/

https://github.com/OpenLLMAI/OpenRLHF/issues/221

 

1/5 - (2 голоса)

Ответить

Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены *