1、环境配置
显卡利用率
torch ok
lmdeploy 已安装
2、服务部署
TurboMind 是一款关于 LLM 推理的高效推理引擎,基于英伟达的 FasterTransformer 研发而成。它的主要功能包括:LLaMa 结构模型的支持,persistent batch 推理模式和可扩展的 KV 缓存管理器。
使用 TurboMind 推理模型需要先将模型转化为 TurboMind 的格式,目前支持在线转换和离线转换两种形式。在线转换可以直接加载 Huggingface 模型,离线转换需需要先保存模型再加载。
2.1.1 在线转换
# 需要能访问 Huggingface 的网络环境(略)
#lmdeploy chat turbomind internlm/internlm-chat-20b-4bit --model-name internlm-chat-20b
#lmdeploy chat turbomind Qwen/Qwen-7B-Chat --model-name qwen-7b
# 直接启动本地的 Huggingface 模型
lmdeploy chat turbomind /share/temp/model_repos/internlm-chat-7b/ --model-name internlm-chat-7b
明显lmdeploy比xtuner启动的快多了,有空比较下和ollama的速度,目测是差不多
2.1.2 离线转换
lmdeploy convert internlm-chat-7b /root/share/temp/model_repos/internlm-chat-7b/
可以看到internlm-chat-7b有32层。(0-31)
确实比我在p40上用ollama部署的要快。
interlm-chat-7b和llama3-8b对快速排序的回答都是10秒左右。interlm-chat-7b略微快一些,9秒多。以后有空我陪再同等引擎比对吧。
2.3 TurboMind推理+API服务
# ApiServer+Turbomind api_server => AsyncEngine => TurboMind
lmdeploy serve api_server ./workspace \
--server_name 0.0.0.0 \
--server_port 23333 \
--instance_num 64 \
--tp 1
# ChatApiClient+ApiServer(注意是http协议,需要加http)
lmdeploy serve api_client http://localhost:23333
ssh -CNg -L 23333:127.0.0.1:23333 root@ssh.intern-ai.org.cn -p 41867
# Gradio+ApiServer。必须先开启 Server,此时 Gradio 为 Client
lmdeploy serve gradio http://0.0.0.0:23333 \
--server_name 0.0.0.0 \
--server_port 6006 \
--restful_api True
2.4.2 TurboMind 推理作为后端
# Gradio+Turbomind(local)
lmdeploy serve gradio ./workspace
2.5 TurboMind 推理 + Python 代码集成
三、最佳实践
这一节很有价值,实际在企业内部部署大模型,可以根据这节的内容学到更多知识。比如kv cache量化,参数量化,批处理大小,外推能力开关等。
之前只了解llama.cpp上一些int4,int8,float16之类的量化。现在了解到了量化更多的含义,不光参数,kv cache也可以量化。
不过,由于1个参数大约记2bit的知识,所以int4的效果不太好。实际上int4确实性能下降较多。我认为比较合理的还是看显卡,int8活着bfloat16吧,这样基本量化的同时,性能损耗比较少。
3.1 KV Cache 量化
3.2 W4A16 量化