本次学习分享基于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
安装好lmdeploy
pip install -U lmdeploy[all]
步骤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:使用LMDeploy Chat CLI 工具初步测试llama-3-8b的运行效果
测试命令如下
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct
运行结果如下图
步骤4:使用LMDeploy对模型进行量化
lmDeploy提供KV8量化和W4A16量化,本次实践基于W4A16量化来测试比对步骤2中的显存占比
lmdeploy的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
控制lmdeploy中的cache-max-entry-count的大小来测试量化后模型在实际测试时的显存占比
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq --cache-max-entry-count 0.03
执行上面命令时,量化后的模型测试效果及显存占比如下图
mdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq --cache-max-entry-count 0.1
执行上面命令时,量化后的模型测试效果及显存占比如下图
比对一下上面的显存占比,可以看到随着cache-max-entry-count的参数变化,系统的显存有着明显的变化
步骤4:使用LMDeploy部署本地服务
1. 启动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
2. 启动客户端服务来连接API服务,命令如下
lmdeploy serve api_client http://localhost:23333
3. 服务器上的测试效果如图所示
可以看到模型处理时所占的显存及对话效果
问题及后续处理
问题1:LMDeploy提供多种量化算法和对应参数,由于时间问题,只是简单测试了几个,后续会进行多种测试
问题2:后续会对量化后的模型如何在服务器上的部署方式来逐一实验
总结
**文章总结**本文分享了一次基于Llama3-Tutorial(XTuner、LMDeploy、OpenCompass)的对话模型部署的实践经验,主要围绕`llama3-8b`模型的部署和测试过程展开,同时感谢了InternStudio提供的大模型实训平台和学习群内的帮助。以下是详细步骤总结:
1. **环境设置**:
- 使用conda创建一个新的Python 3.10环境名为`llama3`,并安装相应版本的PyTorch、torchvision、torchaudio及其CUDA依赖。
- 安装`lmdeploy[all]`,这是模型部署的工具包。
2. **下载模型权重**:
- 提供两种方式下载训练好的`llama3-8b`模型权重:
- 通过OpenXLab直接克隆仓库获取。
- 对于使用InternStudio的用户,通过创建模型软链接方式。
3. **模型初步测试**:
- 使用`lmdeploy chat`命令对下载的模型进行初步测试,检查其运行效果。
4. **模型量化**:
- 采用`lmdeploy`工具进行W4A16量化,以减少显存占用并测试量化效果。
- 通过调整`cache-max-entry-count`参数,测试不同缓存设置下的显存占比情况。
5. **部署本地服务**:
- 启动API服务接口与客户端,实现模型在服务端的部署与客户端的访问。
- 通过`lmdeploy serve api_server`和`lmdeploy serve api_client`命令实现了服务的启动与客户端连接。
- 演示了服务部署后的显存占用及对话效果。
6. **问题及后续处理**:
- 指出由于时间限制,仅简单测试了部分量化算法与参数,未来计划进行更全面的测试。
- 提及了将量化后的模型在服务器上部署方式的进一步实验计划。
此次学习分享提供了从模型准备到部署测试的一系列详细步骤,为使用Llama3-Tutorial相关工具进行模型部署的读者提供了有价值的参考。