Open-ChatGPT
— это библиотека с открытым исходным кодом, которая позволяет вам обучать гиперперсонализированную модель искусственного интеллекта, подобную ChatGPT, используя ваши собственные данные и минимально возможный объем вычислений.
Open-ChatGPT
— это общая системная платформа, обеспечивающая комплексное обучение моделям, подобным ChatGPT. Он может автоматически использовать ваши любимые предварительно обученные большие языковые модели через три этапа в стиле OpenAI InstructGPT для создания вашей собственной высококачественной модели в стиле ChatGPT.
Мы внедрили RLHF (обучение с подкреплением с обратной связью с человеком), основанное на библиотеке Transformer и DeepsSpeed. Он поддерживает распределенное обучение и разгрузку, что подходит для очень больших моделей.
Если вам понравился проект, поддержите его, поставив звездочку.
[2023/05] Мы внедряем Стэнфордскую Альпаку Лору .
[2023/05] Мы внедряем Стэнфордскую Альпаку .
[2023/04] Мы выпустили конвейер RLHF (Reinforcement Learning with Human Feedback) .
[2023/03] Мы выпустили код OpenChatGPT: библиотеку с открытым исходным кодом для обучения ChatBot наподобие ChatGPT .
Open-ChatGPT: реализация ChatGPT с открытым исходным кодом.
Недостаточно памяти
Доработка Альпака-7Б
Использование ДипСпид
Доработка Альпаки-7Б с Лорой
Наборы данных инструкций
Наборы данных RLHF
Предварительная обработка данных
Форматирование данных
Введение
Новости
Оглавление
Сбор данных
Установить
Инструкция Финтун
Вывод
Содействие
Лицензия
Благодарности
Цитирование
Коллекция наборов данных по настройке инструкций с открытым исходным кодом для обучения (текстовых и мультимодальных) LLM на основе чата (GPT-4, ChatGPT, LLaMA, Alpaca).
Ссылаясь на это (@jianzhnie), мы пометили каждый собранный набор данных согласно следующим правилам:
(Язык)Лингвальные теги:
RU: Наборы данных инструкций на английском языке
CN: наборы данных инструкций на китайском языке.
ML: [Многоязычный] Наборы данных инструкций на нескольких языках.
(Задача)Теги задач:
MT: [Многозадачность] Наборы данных, содержащие несколько задач.
TS: [Для конкретных задач] Наборы данных, адаптированные для конкретных задач.
(Gen)Метод генерации:
ХГ: [Набор данных, созданный человеком] Наборы данных, созданные людьми.
SI: [Самообучение] Наборы данных, созданные с использованием методов самообучения.
MIX: [Смешанный набор данных] Набор данных содержит как данные, созданные человеком, так и машиной.
COL: [Коллекция набора данных] Набор данных, созданный на основе коллекции других наборов данных.
Проект | Наборы данных | орг. | Числа | Ланг | Задача | Генерал | Тип | источник |
---|---|---|---|---|---|---|---|---|
Цепочка мыслей | cot_data |few_shot_data | 74771 | EN/CN | МТ | ХГ | инструктировать с помощью рассуждений | аннотирование CoT к существующим данным | |
GPT4all | nomic-ai/gpt4all-j-prompt-generations | nomic-ай | 806199 | RU | МТ | КОЛЛЕКЦИЯ | код, истории и диалоги | перегонка из ГПТ-3,5-турбо |
GPTeacher | GPT-4 Общая инструкция | Инструкция по ролевой игре | Кодовая инструкция | Формовщик инструментов | текниум1 | 29013 | RU | МТ | СИ | общий, ролевая игра, инструментарий | GPT-4 и формовщик |
Гуанако | ДжозефусЧунг/ГуанакоDataset | ДжозефусЧунг | 534610 | МЛ | МТ | СИ | различные лингвистические задачи | текст-давинчи-003 |
HC3 | Привет-SimpleAI/HC3 | Привет-SimpleAI | 万得资讯 | 37175 | EN/CN | ТС | СМЕШИВАНИЕ | оценка диалога | человек или ChatGPT |
HC3-китайский | Привет-SimpleAI/HC3-китайский | Привет-SimpleAI|万得资讯 | 13 тыс. | Китай | ТС | СМЕШИВАНИЕ | оценка диалога | человек или ChatGPT |
альпака | Тацу-лаборатория/альпака | Тацу-лаборатория | 52002 | RU | МТ | СИ | общий инструктаж | текст-давинчи-003 |
АльпакаДанныеОчищены | Яхма/альпака-очищенная | Яхма | 52 тыс. | RU | МТ | СИ | общий инструктаж | текст-давинчи-003 |
Китайский-ЛАМА-Альпака | alpaca_data_zh_51k | ymcui (讯飞) | 51 тыс. | Китай | МТ | СИ | общий инструктаж | текст-давинчи-003 |
Луотуо-китайский-LLM 骆驼 | trans_chinese_alpaca_data | LC1332(商汤) | 52 тыс. | Китай | МТ | СИ | общий инструктаж | текст-давинчи-003 |
Естественные инструкции | Аллен AI 61 задание|1,5 тыс. задание | Аллен А.И. | 5040134 | МЛ | МТ | КОЛЛЕКЦИЯ | разнообразные задачи НЛП | сбор аннотированных наборов данных человека |
belle_cn | BelleGroup/train_1M_CN |BelleGroup/train_0.5M_CN | BelleGroup (链 家) | 1079517 | Китай | ТС/МТ | СИ | общее, математические рассуждения, диалог |
Здесь мы приводим лишь небольшую часть списка наборов данных для настройки инструкций. Чтобы найти больше наборов данных, перейдите по следующим ссылкам: jianzhnie/awesome-instruction-datasets: коллекция наборов данных с открытым исходным кодом для обучения LLM, следующих инструкциям (ChatGPT). ,ЛЛАМА,Альпака).
Набор данных «Настройка инструкций/обучение с подкреплением на основе обратной связи с человеком» (RLHF) является ключевым компонентом LLM, следующих за инструкциями, таких как ChatGPT. Follwing — это полный список наборов данных, используемых для настройки инструкций в различных LLM, что упрощает исследователям и разработчикам доступ и использование этих ресурсов.
Проект | орг. | Числа | Ланг | Краткое содержание |
---|---|---|---|---|
webgpt_comparisons | Опенай | 19 578 | Английский | В статье WebGPT авторы обучили модель вознаграждения на основе отзывов людей. Они использовали модель вознаграждения, чтобы обучить модель ответов на длинные вопросы в соответствии с предпочтениями человека. Это набор данных всех сравнений, которые были отмечены как подходящие для моделирования вознаграждений к концу проекта WebGPT. Всего имеется 19 578 сравнений. |
МГП | Стэнфорднлп | 349 К | Английский | SHP — это набор данных, отражающий 385 тысяч коллективных предпочтений людей в отношении ответов на вопросы/инструкции в 18 различных предметных областях, от кулинарии до юридических консультаций. Предпочтения предназначены для отражения полезности одного ответа по сравнению с другим и предназначены для использования для обучения моделей вознаграждения RLHF и моделей оценки NLG (например, SteamSHP). |
наборы данных rlhf-reward | Итинсе | 76,3 тыс. | Английский | |
Дахоас/полный-hh-rlhf | Дахоас | 112 тыс. | Английский | Набор данных HH компании Anthropic переформатирован в быстро выбранные и отклоненные образцы. |
Дахоас/синтетическая-инструкция-gptj-парно | Дахоас | Английский | ||
Дахоас/rm-static | Дахоас | 76,3 тыс. | Английский | Разделение hh-статических данных, используемых для обучения моделей вознаграждения после контролируемой точной настройки. |
Антропный/hh-rlhf | антропный | 22 тыс. | Английский | Этот набор данных RLHF представляет собой итерированный «онлайн» набор данных, который включает данные из 52B языковых моделей. Он содержит 22 тысячи сравнений полезности и не содержит данных о красной команде. |
Инструкция-Настройка-с-GPT-4/GPT-4-LLM | Инструкция-Настройка-с-GPT-4 | 52 тыс. | Английский | Ранжированные ответы (Примечание: данные оцениваются с помощью модели GPT-4 , а не человека) подсказок Альпаки от трех моделей (GPT-4, GPT-3.5 и OPT-IML), когда GPT-4 предлагается оценить качество. Автор считает, что «GPT-4 способна выявлять и исправлять собственные ошибки, а также точно оценивать качество ответов» |
thu-coai/Советы по безопасности | ту-коай | 100 тыс. | китайский | 中文安全подсказки,用于评测和提升大模型的安全性,将模型的输出与人类的价值观对齐。 |
Проект Chatgpt-Сравнение-Обнаружение |
Чтобы найти дополнительные наборы данных, перейдите по следующим ссылкам: jianzhnie/awesome-instruction-datasets: коллекция наборов данных с открытым исходным кодом для обучения LLM, следующих инструкциям (ChatGPT, LLaMA, Alpaca).
Мы разработали код предварительной обработки данных, который предлагает унифицированный интерфейс для различных больших языковых моделей. Этот код можно использовать для предварительной обработки данных для различных целей, таких как настройка инструкций и задачи моделирования RLHF. Если вы хотите узнать больше, перейдите по следующим ссылкам на наш набор данных и утилиты для работы с данными:
Prompt_dataset.py
data_utils.py
В нашей коллекции все данные отформатированы с использованием одних и тех же шаблонов. Каждый образец имеет следующую структуру:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
клон git https://github.com/jianzhnie/open-chatgpt.git pip install -r требования.txt
ПЕФТ
Если вы хотите использовать LORA вместе с другими методами с эффективным использованием параметров, установите peft в качестве дополнительной зависимости.
ДипСпид
Если вы хотите ускорить обучение LLM, используя такие методы, как параллелизм конвейеров, контрольная точка градиента и слияние тензоров. Пожалуйста, установите DeepSpeed.
Мы настраиваем наши модели, используя стандартный обучающий код Hugging Face. Мы настраиваем LLaMA-7B и LLaMA-13B с помощью следующих гиперпараметров:
Гиперпараметр | ЛЛаМА-7Б | ЛЛаМА-13Б |
---|---|---|
Размер партии | 128 | 128 |
Скорость обучения | 2е-5 | 1е-5 |
Эпохи | 3 | 5 |
Максимальная длина | 512 | 512 |
Снижение веса | 0 | 0 |
Вы можете использовать следующую команду для обучения Alpaca-7B с 4 x A100 (40 ГБ).
примеры компакт-дисков /альпака/ python train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/альпака --output_dir рабочий_каталог/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --evaluation_strategy "нет" --save_strategy "шаги" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --warmup_ratio 0,03 --lr_scheduler_type "косинус" --logging_steps 1
Если вы столкнулись с ошибкой OOM, учтите это.
По идее, для точной настройки модели 7B требуется около 7 x 4 x 4 = 112 ГБ видеопамяти. Приведенные выше команды включают сегментирование параметров, поэтому ни на одном графическом процессоре не сохраняется избыточная копия модели. Если вы хотите еще больше уменьшить объем памяти, вот несколько вариантов:
Включите разгрузку ЦП для FSDP с помощью --fsdp "full_shard auto_wrap offload"
. Это экономит VRAM за счет увеличения времени работы.
По нашему опыту, DeepSpeed stage-3 (с разгрузкой) иногда может быть более эффективным использованием памяти, чем FSDP с разгрузкой. Вот пример использования DeepSpeed stage-3 с 4 графическими процессорами с разгрузкой параметров и оптимизатора:
pip install примеры deepspeedcd/alpaca/ torchrun --nproc_per_node=8 train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/альпака --output_dir рабочий_каталог/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradient_accumulation_steps 8 --evaluation_strategy "нет" --save_strategy "шаги" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --warmup_ratio 0,03 --deepspeed "scripts/ds_config_zero3_auto.json"
LoRA точно настраивает низкоранговые фрагменты головок внедрения запроса, ключа и значения. Это может уменьшить общий объем памяти со 112 ГБ до примерно 7x4 = 28 ГБ.
Эта часть воспроизводит результаты Стэнфордской альпаки с использованием низкоранговой адаптации (LoRA).
Для более дешевой и эффективной настройки мы используем PEFT Hugging Face, а также биты и байты Тима Деттмерса.
Этот файл содержит простое применение PEFT к модели LLaMA, а также некоторый код, связанный с созданием подсказок и токенизацией.
python train_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/альпака --output_dir work_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradient_accumulation_steps 8 --evaluation_strategy "нет" --save_strategy "шаги" --save_steps 2000 --save_total_limit 5 --learning_rate 2e-5 --weight_decay 0. --warmup_ratio 0,03 --lr_scheduler_type "косинус" --logging_steps 1
Этот файл считывает модель фундамента из концентратора моделей Hugging Face и веса LoRA из tloen/alpaca-lora-7b
и запускает интерфейс Gradio для вывода на указанном входе. Пользователи должны воспринимать это как пример кода для использования модели и изменять его по мере необходимости.
Пример использования:
Python генерировать_сервер.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
Если вам недостаточно памяти, вы можете включить 8-битное сжатие, добавив --load-8bit
к командам выше. Это может сократить использование памяти примерно вдвое, при этом качество модели несколько ухудшится. Он совместим с процессором, графическим процессором и серверной частью Metal. Alpaca-7B с 8-битным сжатием может работать на одном графическом процессоре NVIDIA 3090/4080/T4/V100 (16 ГБ).
Python генерировать_сервер.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
Наша цель — сделать это репо еще лучше. Если вы заинтересованы в том, чтобы внести свой вклад, пожалуйста, обратитесь ЗДЕСЬ за инструкциями по внесению вклада.
Openn-ChatGPT
выпускается под лицензией Apache 2.0.
Мы ценим работу многих участников открытого исходного кода, особенно:
Альпака-Лора
ЛоРА
Стэнфордская Альпака
Обнимающее лицо
ЛлаМа
Викунья
Пожалуйста, укажите репозиторий, если вы используете данные или код в этом репозитории.
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }