本文主要是介绍Triton + HF + Qwen 推理经验总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 简介
Triton介绍参考:GitHub - triton-inference-server/tutorials: This repository contains tutorials and examples for Triton Inference Server
2. 实现方案
2.1. docker部署
# 拉取docker镜像
git clone -b r23.10 https://github.com/triton-inference-server/server.git
cd server/docs/examples
./fetch_models.sh# 建立模型仓库目录
mkdir -p /data/triton/model_repository# 构建个人的自定义模型
# 更多模型结构实例参考:https://github.com/triton-inference-server/tutorials/tree/main/HuggingFace
model_repository/
|-- model_name
| |-- 1
| | `-- model.py
| `-- config.pbtxt
# 千问模型的triton配置:# config.pbtxt使用自定义的python环境
parameters: {key: "EXECUTION_ENV_PATH",value: {string_value: "$$TRITON_MODEL_DIRECTORY/llm"}
}
# conda环境打包,存放位置和config.pbtxt同级别目录:
conda pack -n llm --ignore-editable-packages# 启动服务
docker run -it --gpus='"device=0,1"' --rm --net=bridge \
--name chatstore \
-p18000:8000 -p18001:8001 -p18002:8002 \
-v /data/jupyter/LLM:/workspace \
-v /data/triton/model_repository:/models \
nvcr.io/nvidia/tritonserver:23.09-py3 \
bash -c "export PYTHONIOENCODING=UTF-8 && tritonserver --model-repository=/models "
2.2. 踩坑问题
- docker启动要用bridge模型,默认host模式会让端口映射失效;
- tritonserver启动时,要加export PYTHONIOENCODING=UTF-8,不然会导致中文格式乱码;
- mode.py文件中启动qwen如果开启use_cache_quantization和use_cache_kernel需要cache_autogptq_cuda_*,使用os将文件迁移到文件目录(测试时,对面模型目录已存在但是没用)
os.system("cp -r /workspace/models/Qwen-14B-Chat-Int4-hf/cache_autogptq_cuda_* ./")
- qwen的模型batch推理请参考官方:https://github.com/QwenLM/Qwen/blob/main/README_CN.md#batch%E6%8E%A8%E7%90%86
- qwen的kv cache是时间换空间的思路,与平常理解的kv cache空间换时间不太一样,所以关掉qwen的kv cache可以加速。
这篇关于Triton + HF + Qwen 推理经验总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!