[README] [?HF Repo] [?Веб-версия]
китайский | английский
Большая модель Яи получается путем тонкой настройки инструкций на миллионах высококачественных доменных данных, созданных вручную. Обучающие данные охватывают пять основных областей, таких как реклама в средствах массовой информации, анализ общественного мнения, общественная безопасность, контроль финансовых рисков и городское управление. сотни задач по обучению естественному языку. В ходе итерационного процесса большой модели Яи от весов инициализации перед обучением до моделей предметной области мы постепенно расширяли ее базовые возможности китайского языка и возможности анализа предметной области, а также добавляли несколько раундов диалога и некоторые возможности подключаемых модулей. В то же время, благодаря постоянной оптимизации обратной связи вручную в процессе внутреннего тестирования сотен пользователей, мы еще больше улучшили производительность и безопасность модели.
Благодаря открытому исходному коду большой модели Yayi мы будем способствовать развитию китайского сообщества предварительно обученных крупных моделей с открытым исходным кодом. Благодаря открытому исходному коду мы будем строить экосистему больших моделей Yayi с каждым партнером.
Новости: Yayi Large Model открыла исходный код китайской версии модели оптимизации, основанной на LLaMA 2, для изучения новейших практик, подходящих для китайских многодоменных задач.
Название модели | ?Идентификация модели HF | Скачать адрес |
---|---|---|
YAYI -7B | венге-исследования/ YAYI -7b | Загрузка модели |
YAYI -7B-Лама2 | венге-исследования/ YAYI -7b-llama2 | Загрузка модели |
YAYI -13B-Лама2 | венге-исследования/ YAYI -13b-llama2 | Загрузка модели |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
Не рекомендуется использовать версии torch
и transformers
ниже рекомендованных версий.
Веса моделей (версия 7b) доступны в открытом доступе на нашем складе моделей Huggingface, и вы можете их загрузить и использовать. Ниже приведен пример кода, который просто вызывает YAYI -7b
для вывода последующих задач. Его можно запустить на одном графическом процессоре, например A100/A800/3090. При использовании точного вывода FP16 требуется около 20 ГБ видеопамяти.
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
Обратите внимание, что специальный токен <|End|>
добавляется в качестве конечного символа во время обучения модели, поэтому для eos_token_id
устанавливается идентификатор токена, соответствующий конечному символу в GenerationConfig
приведенного выше кода. Код вывода, основанный на модели точной настройки инструкций LlaMA2, немного отличается. Подробную информацию можно найти в соответствующей версии на нашем складе моделей Huggingface.
Этот проект основан на платформе deepspeed
для обучения модели. После настройки среды выполните соответствующий скрипт, чтобы начать обучение. Поддерживает полную настройку параметров командных данных, точную настройку LoRA данных команд, полнопараметрическую точную настройку данных многораундового диалога и точную настройку LoRA данных многораундового диалога.
Формат данных : см. data/ YAYI _train_example.json
, который использует формат данных jsonline проекта Alpaca. Каждая строка содержит один фрагмент данных json, состоящий из трех полей "instruction"
, "input"
и "output"
. Среди них "instruction"
и "input"
— это ввод инструкции, а "output"
— это выходной ответ.
Инструкции по эксплуатации : Запустите следующую команду, чтобы начать полнопараметрическую точную настройку большой модели Yayi. Эта команда поддерживает обучение на нескольких машинах и нескольких картах. Если вам нужно настроить обучение на нескольких машинах и нескольких картах, обратитесь к официальной документации deepspeed. Рекомендуется использовать аппаратную конфигурацию 4*A100(80G) или выше.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
Формат данных : такой же, как указано выше, см. data/ YAYI _train_example.json
.
Инструкции по эксплуатации : LoRA — это экономичный и эффективный метод точной настройки, при этом одна карта может обучать десятки миллиардов моделей параметров. В этом проекте в основном реализуется тонкая настройка LoRA на основе peft
. Выполните следующую команду, чтобы начать тонкую настройку LoRA большой модели Yayi. Точную настройку можно выполнить с помощью одной карты A100 (80G), а скорость обучения можно настроить на большее значение. Среди них --lora-dim
устанавливает ранг матрицы обновления. Чем больше значение, тем большее количество параметров для обучения устанавливает --lora-module-name
матрицы обновления LoRA, который можно изменить; в зависимости от типа модели.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
Формат данных : см. data/ YAYI _train_example_multi_rounds.json
, который представляет собой стандартный файл JSON. Каждый фрагмент данных состоит из "system"
и "conversations"
, где "system"
— это глобальная информация о настройке роли и может быть пустой строкой. "conversations"
Это многораундовый диалог между двумя персонажами, человеком и YAYI .
Инструкции по эксплуатации : Запустите следующую команду, чтобы начать полнопараметрическую точную настройку большой модели Yayi. Для данных многораундового диалога рассчитывается только потеря ответа, генерируемого моделью. Эта команда поддерживает обучение на нескольких машинах и нескольких картах. Если вам нужно настроить обучение на нескольких машинах и нескольких картах, обратитесь к официальной документации deepspeed. Рекомендуется использовать аппаратную конфигурацию 4*A100(80G) или выше.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
.Большая модель Yayi обучается на основе высококачественного набора данных точной настройки инструкций Чжункэ Венге на миллионном уровне. На этот раз мы открываем исходный код 50 000 наборов обучающих данных, которые можно загрузить из нашего хранилища данных Huggingface. Набор данных в основном охватывает несколько основных областей, таких как финансы, безопасность, общественное мнение и средства массовой информации. Мы добавили отдельные префиксы подсказок к большинству командных данных задач в каждом поле, чтобы различать данные в каждом поле. Кроме того, данные обучения также включают в себя некоторые данные повышения безопасности, данные о возможностях подключаемых модулей, данные многораундового диалога и т. д.
Модель SFT, обученная на основе текущих данных и базовых моделей, по-прежнему имеет следующие проблемы с точки зрения эффективности:
Учитывая вышеуказанные ограничения модели, мы требуем, чтобы разработчики использовали наш открытый исходный код, данные, модели и последующие производные, созданные в рамках этого проекта, только в исследовательских целях, а не в коммерческих целях или других целях, которые могут нанести вред обществу. Пожалуйста, будьте осторожны при идентификации и использовании контента, созданного Yayi Big Model, и не распространяйте созданный вредоносный контент в Интернете. В случае возникновения каких-либо неблагоприятных последствий ответственность будет нести коммуникатор.
Этот проект можно использовать только в исследовательских целях, и разработчик проекта не несет ответственности за любой вред или убытки, причиненные использованием этого проекта (включая, помимо прочего, данные, модели, коды и т. д.). Пожалуйста, обратитесь к отказу от ответственности для получения подробной информации.
Код в этом проекте имеет открытый исходный код в соответствии с протоколом Apache-2.0, данные принимают протокол CC BY-NC 4.0, а использование весов моделей серии YAYI должно соответствовать Лицензии на модель.