【AI大模型开发者指南】llama3命令行部署、量化、作为服务——lmdeploy实战
核心三要素
lmdeploy
- 测试/演示(命令行)
- 模型量化
- 后端服务
环境配置不在此再赘述,相关内容可以查看往期内容
lmdeploy介绍
命令行互动(一键启动)
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct
如果遇到
Engine main loop stopped
报错,考虑切换启动命令
lmdeploy chat turbomind /root/model/Meta-Llama-3-8B-Instruct

命令行部署可能会因为lmdeploy版本不同导致效果不一样,如以上使用了旧版本deploy,模型推理牛头不对马嘴
以下使用最新版lmdeploy

推理正常
模型量化
通过最大kv缓存大小来控制显存占用
--cache-max-entry-count
默认为0.8,设置越小,模型占用显存越小,但是非线性
设置为0.01时,模型显存占用约为初始50%,但推理速度显著降低
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 chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq
4bit输出如下

比较量化效果
原始模型
kv0.5

kv0.01

在这个程度上推理速度下降并不明显,和满血状态差别不大
kv0.0001


kv太过小时,没有输出
4b量化

kv0.5

kv0.01

此时显存仅占有约7g,推理效果依然相当可观,速度并没有明显下降
kv0.0001


kv0.0001的4b同样不会说话了
量化总结
0.80.50.010.0001origin68g/80g48g/80g16g/80g16g/80g4bit66g/80g43g/80g7g/80g6g/80g
注意,当kv0.0001时模型均不会输出,最小可用模型为4bit+kv0.01,简单问答效果和origin+kv0.8相当
后端服务
一键启动
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\--tp1
转发到本地端口(本地terminal打开,输入以下)
ssh-CNg-L23333:127.0.0.1:23333 [email protected] -p{你的ssh端口号}
转发成功后,打开本地23333端口,可以看到swagger UI

除此之外,还可以回到远程服务器
lmdeploy serve api_client http://localhost:23333

cli chat
lmdeploy serve gradio http://localhost:23333 \
--server-name 0.0.0.0 \
--server-port 6006
gradio chat
当vscode跳出以下提示

这意味着端口已经转发到本地,无需再手动转发

lmdeploy的gradio demo有些跟不上版本了,所以text区域的更新出错了
此外,还可能遇到如下报错

这种情况需要删除原有的concurrency参数
textbox的报错
调整源代码中的update函数为postprogress,self为txtbox即可


版权归原作者 kv-chiu 所有, 如有侵权,请联系我们删除。