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可以加速。

你可能感兴趣的:(大语言模型)