本次学习分享基于Llama3-Tutorial(Llama 3 超级课堂)分享,git地址如下
GitHub - SmartFlowAI/Llama3-Tutorial: Llama3-Tutorial(XTuner、LMDeploy、OpenCompass)gLlama3-Tutorial(XTuner、LMDeploy、OpenCompass). Contribute to SmartFlowAI/Llama3-Tutorial development by creating an account on GitHub.https://github.com/SmartFlowAI/Llama3-Tutorial/此外感谢InternStudio提供的大模型实训平台,还有学习群内小伙伴的相互帮助。
llama3-8b对话模型部署
步骤1:conda环境设置,命令如下
conda create -n llama3 python=3.10
conda activate llama3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
步骤2:下载已经训练好的llama3的权重
情况1:单独下载:通过从OpenXLab中获取权重
方法:安装 git-lfs 依赖
# 如果下面命令报错则使用 apt install git git-lfs -y
conda install git-lfs
git-lfs install
下载模型
git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
情况2:软链接 InternStudio 中的模型(用于InternStudio平台)
方法:
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct
步骤3:Llama3-Tutorial及XTuner项目部署
部署SmartFlowAI/Llama3-Tutorial
cd ~
git clone https://github.com/SmartFlowAI/Llama3-Tutorial
部署InternLM/XTuner时需要安装对应的库
cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e [all]
步骤4:微调数据准备
在Llama3-Tutorial项目中使用tools/gdata.py来创建自我认知训练数据集,脚本运行结果如下
从运行结果来看,所有数据都是相同的(后面有时间可以使用其他数据,写一个脚本更改成相同格式即可)
步骤5:使用XTuner来微调模型
cd ~/Llama3-Tutorial
# 开始训练,使用 deepspeed 加速,A100 40G显存 耗时24分钟
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth
# Adapter PTH 转 HF 格式
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
/root/llama3_pth/iter_500.pth \
/root/llama3_hf_adapter
# 模型合并
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
/root/llama3_hf_adapter\
/root/llama3_hf_merged
其中如果直接使用官方提供的命令,在显存有限的环境下会报错,所有需要对xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth这条命令进行修改,修改如下
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth --deepspeed deepspeed_zero2
或者
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth --deepspeed deepspeed_zero2_offload
可以在显存受限的环境下进行微调训练,但是也要保证自身的显存配置在此之上,如下图所示
下图为训练中的损失及训练完成后的测试效果
步骤5: web端部署测试
streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \ /root/llama3_hf_merged
测试效果如下图
存在问题
问题1:模型保存路径
由于使用的是InternStudio平台,所以模型保存的路径在部署或者微调训练到其他平台时会有不同,需要对此注意
问题2:Xtuner工具微调
Xtuner提供不同的微调策略及对应的适配模型,本次微调只是使用了部分微调策略,后续会对Xtuner项目中的微调策略及适配模型进行进一步测试和学习,Xtuner的git地址如下
https://github.com/InternLM/xtunerhttps://github.com/InternLM/xtuner
问题3:大量相同的训练样本导致测试效果不佳
对此后续会使用开源或者自行收集的数据集来进行训练