前言
Llama3模型在4月18日公布后,国内开发者对Llama3模型进行了很多训练和适配,除了中文纯文本模型外,多模态版本也陆续在发布中。考虑到国内用户对Agent场景的需求,魔搭社区LLM&AIGC模型微调推理框架SWIFT基于Llama3-8b-instruct原始版本训练了通用中文模型,并保留且适配了中文Agent能力,这是开源社区中率先完整适配中文环境的通用Agent Llama3模型,后续会有更完整的评测报告产出。
使用方式
推荐用户直接使用swift进行推理或部署:
# 安装依赖
pip install ms-swift -U# 推理
swift infer --model_type llama3-8b-instruct --model_id_or_path swift/Llama3-Chinese-8B-Instruct-Agent-v1# 部署
swift deploy --model_type llama3-8b-instruct --model_id_or_path swift/Llama3-Chinese-8B-Instruct-Agent-v1
下面介绍如何使用SWIFT框架训练Llama3中文Agent模型
环境准备
我们使用了魔搭官方框架SWIFT进行模型训练:https://github.com/modelscope/swift/tree/main,开发者如果希望训练Llama3中文版本可以参考下面的安装方式:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 安装ms-swift
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'
# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试)
pip install -r requirements/framework.txt -U
pip install -r requirements/llm.txt -U
数据准备
为了适配中文及Agent场景,我们针对语料进行了一定混合配比,训练Llama3使用的语料如下:
- COIG-CQIA:
https://modelscope.cn/datasets/AI-ModelScope/COIG-CQIA/summary 该数据集包含了中国传统知识、豆瓣、弱智吧、知乎等中文互联网信息
- 魔搭通用Agent训练数据集:
https://modelscope.cn/datasets/AI-ModelScope/ms-agent-for-agentfabric/summary
- alpaca-en:
https://modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-en/summary
- ms-bench魔搭通用中文问答数据集:
https://modelscope.cn/datasets/iic/ms_bench/summary
SWIFT支持很多其他对训练有帮助的开源数据集,如
- Firefly中文数据集
- DeepCtrl多语数据集
- Alpaca/ShareGPT
将MLP和Embedder加入了lora_target_modules. 你可以通过指定--lora_target_modules ALL在所有的linear层(包括qkvo以及mlp和embedder)加lora. 这通常是效果最好的。
超参数 | 值 |
lr | 5e-5 |
epoch | 2 |
lora_rank | 8 |
lora_alpha | 32 |
lora_target_modules | ALL |
batch_size | 2 |
gradient_accumulation_steps | 16 |
NPROC_PER_NODE=8 \
swift sft \--model_type llama3-8b-instruct \--dataset ms-agent-for-agentfabric-default alpaca-en ms-bench ms-agent-for-agentfabric-addition coig-cqia-ruozhiba coig-cqia-zhihu coig-cqia-exam coig-cqia-chinese-traditional coig-cqia-logi-qa coig-cqia-segmentfault coig-cqia-wiki \--batch_size 2 \--max_length 2048 \--use_loss_scale true \--gradient_accumulation_steps 16 \--learning_rate 5e-5 \--use_flash_attn true \--eval_steps 500 \--save_steps 500 \--train_dataset_sample -1 \--dataset_test_ratio 0.1 \--val_dataset_sample 10000 \--num_train_epochs 2 \--check_dataset_strategy none \--gradient_checkpointing true \--weight_decay 0.01 \--warmup_ratio 0.03 \--save_total_limit 2 \--logging_steps 10 \--sft_type lora \--lora_target_modules ALL \--lora_rank 8 \--lora_alpha 32
推理效果
该模型具备良好的中文问答能力,示例如下:
通用问答:
逻辑题:
评测
使用swift的eval命令对训练模型的前后进行了通用能力评测,结果如下:
评测模型 | ARC | CEVAL | GSM8K |
Llama3-8b-instruct | 0.7645 | 0.5089 | 0.7475 |
Llama3-Chinese-8B-Instruct-Agent-v1 | 0.7577 | 0.4903 | 0.652 |
英文GSM8K能力下降了8个点左右,经过消融实验我们发现去掉alpaca-en语料会导致GSM8K下降至少十个点以上。
也可以使用swift框架对其他模型进行评测,命令非常简单:
swift eval --model_type llama3-8b-instruct --model_id_or_type LLM-Research/Meta-Llama-3-8B-Instruct --infer_backend pt --eval_dataset ceval arc