xtuner微调internlm2-chat-1_8b–xtuner中文文档快速上手案例
- 设备:百度飞桨免费算力平台16GB显存
1. 安装库
- conda
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
将model的conda保存到本地防止丢失
conda env list #参考env在那个路径
cp -r /home/aistudio/.conda/envs/xtuner-env .
- 安装 XTuner
pip install -U xtuner
pip install -U 'xtuner[deepspeed]'
- 验证
xtuner list-cfg
2.加载数据–ModelScope
- llm模型权重
pip install -U modelscope# 拉取模型至当前目录
python -c "from modelscope import snapshot_download; snapshot_download('Shanghai_AI_Laboratory/internlm2-chat-1_8b', cache_dir='.')"
- 数据权重
Colorist 数据集(HuggingFace 链接;ModelScope 链接)是一个根据颜色描述提供颜色选择与建议的数据集,经过该数据集微调的模型可以做到根据用户对于颜色的描述,从而给出16进制下的颜色编码,如用户输入“宁静而又相当明亮的浅天蓝色,介于天蓝色和婴儿蓝之间,因其亮度而带有一丝轻微的荧光感。”,模型输出
,该颜色很符合用户的描述。以下是该数据集的几条样例数据:
git clone https://www.modelscope.cn/datasets/fanqiNO1/colors.git
3. 准备配置文件
xtuner list-cfg
查看配置+将配置文件复制到本地
其中internlm2_chat_1_8b_qlora_alpaca_e3
符合条件
xtuner copy-cfg internlm2_chat_1_8b_qlora_alpaca_e3 .
- 修改配置文件
internlm2_chat_1_8b_qlora_alpaca_e3_copy.py
参数
--15行
- from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory
+ from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory,colors_map_fn #这个是添加自定义的colors数据
--27行更换
+ pretrained_model_name_or_path = 'Shanghai_AI_Laboratory/internlm2-chat-1_8b'
--31行
- alpaca_en_path = 'alpaca'
+ alpaca_en_path = 'colors'
--58行
- SYSTEM = SYSTEM_TEMPLATE.alpaca
+ SYSTEM = SYSTEM_TEMPLATE.colorist
--105行
- dataset_map_fn= alpaca_map_fn,
+ dataset_map_fn=colors_map_fn,
-
参考:开源指令微调数据集(LLM) — XTuner 0.1.23 文档
-
colors_map_fn
:是数据的预处理;
-
pretrained_model_name_or_path
:LLM模型的路径 -
alpaca_en_path
:数据的路径 -
SYSTEM_TEMPLATE.colorist
:系统提示词
4. 启动微调
internlm2_chat_1_8b_qlora_alpaca_e3_copy.py
所在的路径下运行
xtuner train internlm2_chat_1_8b_qlora_alpaca_e3_copy.py
5. 模型转换 + LoRA 合并
5.1 模型转换
- 我跑了1000次,所以有两个.pth文件
mkdir work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_500_hfxtuner chat Shanghai_AI_Laboratory/internlm2-chat-1_8b --adapter work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_500_hf --prompt-template internlm2_chat --system-template coloristxtuner convert pth_to_hf internlm2_chat_1_8b_qlora_alpaca_e3_copy.py work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_1000.pth work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_500_hf/
- 报错解决weight_only不安全
vim /home/aistudio/.conda/envs/xtuner-env/lib/python3.10/site-packages/xtuner/model/utils.py
- 使用/torch.load进行vim的搜索
- 再添加上
weights_only=False
- 保存并退出:esc键+:wq
5.2 LoRA 合并
mkdir work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/merged
xtuner convert merge Shanghai_AI_Laboratory/internlm2-chat-1_8b work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_500_hf work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/merged --max-shard-size 2GB
6. 与模型对话
6.1 不合并权重
xtuner chat Shanghai_AI_Laboratory/internlm2-chat-1_8b --adapter work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/iter_500 --prompt-template internlm2_chat --system-template colorist
6.2 合并权重
xtuner chat work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/merged --prompt-template internlm2_chat --system-template colorist
7. 参考
- 快速上手 — XTuner 0.1.23 文档
- 百度飞桨算力平台
- 【保姆级教程】Anaconda环境迁移:直接将之前搭建好的环境从一个机子迁移到另一个机子-CSDN博客
-cn/latest/get_started/quickstart.html) - 百度飞桨算力平台
- 【保姆级教程】Anaconda环境迁移:直接将之前搭建好的环境从一个机子迁移到另一个机子-CSDN博客
- InternLM/xtuner: An efficient, flexible and full-featured toolkit for fine-tuning LLM (InternLM2, Llama3, Phi3, Qwen, Mistral, …)