课程文档: https://github.com/SmartFlowAI/Llama3-Tutorial
课程视频:https://space.bilibili.com/3546636263360696/channel/series
1 环境配置
1.1 创建虚拟环境,名为:llama3
conda create -n llama3 python=3.10
1.2 下载、安装 pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
1.3 通过软连接获取 Meta-Llama-3-8B-Instruct模型
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct
1.4 获取Xtuner微调工具
cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .
2 Llama 3 Web Demo 部署
3 XTuner 完成小助手认知微调
3.1 自我认知训练数据集准备
cd ~/Llama3-Tutorial
python tools/gdata.py
以上脚本在生成了 ~/Llama3-Tutorial/data/personal_assistant.json 数据文件格式如下所示:
训练模型
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
模型推理
streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \
/root/llama3_hf_merged
4 Llama 3 图片理解能力微调
获取 Llama3 权重、Visual Encoder 权重、 Image Projector 权重
由上图报错,deepspeed未安装,所以通过 pip install deepspeed。以及也要需要安装 mpi4py
使用pip install mpi4py时,报如下错误出错,解决方法,见:https://blog.csdn.net/weixin_51762856/article/details/134247764
由于显存有限,无法进行模型训练了
5 Llama 3 高效部署实践
安装lmdeploy最新版
直接使用lmdeploy进行推理,显存占有:36G左右
推理结果:
把--cache-max-entry-count
参数设置为0.5 ,显存占有:28G左右
把--cache-max-entry-count
参数设置为0.01,显存占16G左右
使用W4A16量化
lmdeploy lite auto_awq \
/root/model/Meta-Llama-3-8B-Instruct \
--calib-dataset 'ptb' \
--calib-samples 128 \
--calib-seqlen 1024 \
--w-bits 4 \
--w-group-size 128 \
--work-dir /root/model/Meta-Llama-3-8B-Instruct_4bit
使用Chat功能运行W4A16量化后的模型。
启动API服务器
lmdeploy serve api_server \
/root/model/Meta-Llama-3-8B-Instruct \
--model-format hf \
--quant-policy 0 \
--server-name 0.0.0.0 \
--server-port 23333 \
--tp 1
本地需要ssh转发
命令行客户端连接API服务器
网页客户端连接API服务器
pip install gradio==3.50.2
lmdeploy serve gradio http://localhost:23333 \
--server-name 0.0.0.0 \
--server-port 6006