基础任务
使用 XTuner 微调 InternLM2-Chat-1.8B 实现自己的小助手认知,记录复现过程并截图。
任务结果截图
1. 创建虚拟环境
# 安装一些必要的库
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖
pip install transformers==4.39.3
pip install streamlit==1.36.0
2. 安装 XTuner
# 创建一个目录,用来存放源代码
mkdir -p /root/InternLM/codecd /root/InternLM/codegit clone -b v0.1.21 https://github.com/InternLM/XTuner /root/InternLM/code/XTuner# 进入到源码目录
cd /root/InternLM/code/XTuner
conda activate xtuner0121# 执行安装
pip install -e '.[deepspeed]'
3. 模型准备
# 创建一个目录,用来存放微调的所有资料,后续的所有操作都在该路径中进行
mkdir -p /root/InternLM/XTunercd /root/InternLM/XTunermkdir -p Shanghai_AI_Laboratoryln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b Shanghai_AI_Laboratory/internlm2-chat-1_8b
4. 开始微调
# 复制一个预设的配置文件
xtuner copy-cfg internlm2_chat_1_8b_qlora_alpaca_e3 .# 启动微调
xtuner train /root/InternLM/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train_deepspeed --deepspeed deepspeed_zero2# 格式转换
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert pth_to_hf ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py ${pth_file} ./hf# 模型合并
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/InternLM/XTuner/Shanghai_AI_Laboratory/internlm2-chat-1_8b ./hf ./merged --max-shard-size 2GB
5. streamlit部署
streamlit run /root/InternLM/Tutorial/tools/xtuner_streamlit_demo.py
6. 最终效果
进阶任务
用自己感兴趣的知识对基座模型进行增量预训练微调
在资源允许的情况下,尝试实现多卡微调与分布式微调
将自我认知的模型上传到 OpenXLab,并将应用部署到 OpenXLab
OpenXLab 部署教程:https://github.com/InternLM/Tutorial/tree/camp2/tools/openxlab-deploy