Skip to content

Latest commit

 

History

History
109 lines (82 loc) · 6.67 KB

general_model_inference.md

File metadata and controls

109 lines (82 loc) · 6.67 KB

大模型服务化部署-快速开始教程

该部署工具是基于英伟达 Triton 框架专为服务器场景的大模型服务化部署而设计。它提供了支持 gRPC、HTTP 协议的服务接口,以及流式 Token 输出能力。底层推理引擎支持连续批处理、weight only int8、后训练量化(PTQ)等加速优化策略,为用户带来易用且高性能的部署体验。

快速开始

基于预编译镜像部署,使用飞桨静态图模型部署。本节以a100/v100机器跑 meta-llama/Meta-Llama-3-8B-Instruct bf16 推理为例子。其他模型需按照要求导出为静态图模型格式。更多模型请参考LLaMAQwenDeepSeekMixtral, 更细致的模型推理、量化教程可以参考大模型推理教程

支持镜像

cuda版本 支持硬件架构 镜像地址 支持的典型设备
cuda11.8 70 75 80 86 ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda118-cudnn8-v2.2 V100,T4,A100,A30,A10
cuda12.4 80 86 89 90 ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.2 A100,A30,A10,L20,H20,H800

静态图快速部署

该方法仅支持可一键跑通的模型列表中的模型进行一键启动推理服务。

为了避免模型过大导致的下载时间过长问题,我们直接提供了自动下载的脚本(参考文档服务化部署流程),支持下载后再启动服务进行推理。进入容器后根据单机或多机模型进行静态图下载。

MODEL_PATH 为指定模型下载的存储路径,可自行指定 model_name 为指定下载模型名称,具体支持模型可查看文档

Note:

  1. 请保证 shm-size >= 5,不然可能会导致服务启动失败
  2. 部署前请确认模型所需要的环境和硬件,请参考文档

A100部署示例

export MODEL_PATH=${MODEL_PATH:-$PWD}
export model_name=${model_name:-"deepseek-ai/DeepSeek-R1-Distill-Llama-8B/weight_only_int8"}
docker run  -i --rm  --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE \
-v $MODEL_PATH:/models -e "model_name=${model_name}" \
-dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.2 /bin/bash \
-c -ex 'start_server $model_name && tail -f /dev/null'

V100部署示例

注意:float16精度下可能出现计算溢出,可以使用export FLAGS_blha_use_fp32_qk_sum=1 避免溢出

export MODEL_PATH=${MODEL_PATH:-$PWD}
export model_name=${model_name:-"meta-llama/Meta-Llama-3-8B-Instruct-Block-Attn/float16"}
docker run  -i --rm  --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE \
-v $MODEL_PATH:/models -e "model_name=${model_name}" \ 
-dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda118-cudnn8-v2.2 /bin/bash \
-c -ex 'start_server $model_name && tail -f /dev/null'

服务测试

curl 127.0.0.1:9965/v1/chat/completions \
  -H'Content-Type: application/json' \
  -d'{"text": "hello, llm"}'

用户手动导出静态图部署

不支持一键导出的模型暂时仅支持用户自行导出进行服务化推理,可参考以下内容进行推理服务化部署

模型导出

高性能部署需要先将动态图模型,导出为静态图推理格式,针对A100/V100机器的导出命令如下:

MODEL_PATH #静态图模型存放地址
--dtype #可选择导出精度
--append_attn #仅sm>=80的机器支持
--block_attn #支持sm<80的机器导出,如果append_attn无法推理可直接替换成block_attn
sm对应GPU型号查询

A100部署示例

export MODEL_PATH=${MODEL_PATH:-$PWD}
docker run  -i --rm  --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE \
-v $MODEL_PATH/:/models -dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.2 /bin/bash \
-c -ex 'cd /opt/source/PaddleNLP &&export PYTHONPATH=$PWD:$PYTHONPATH && cd llm && python3 predict/export_model.py --model_name_or_path meta-llama/Meta-Llama-3-8B-Instruct --output_path /models --dtype bfloat16 --inference_model 1 --append_attn 1'\
&& docker logs -f $(docker ps -lq)

V100部署示例

⚠️ v100由于硬件指令限制,仅支持float16

export MODEL_PATH=${MODEL_PATH:-$PWD}
docker run  -i --rm  --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE \
-v $MODEL_PATH/:/models -dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda118-cudnn8-v2.2 /bin/bash \
-c -ex 'cd /opt/source/PaddleNLP &&export PYTHONPATH=$PWD:$PYTHONPATH&& cd llm && python3 predict/export_model.py --model_name_or_path meta-llama/Meta-Llama-3-8B-Instruct --output_path /models --dtype float16 --inference_model 1 --block_attn'\
&& docker logs -f $(docker ps -lq)

服务化推理

具体的部署细节以及参数说明可以查看文档

注意:v100在float16精度下可能出现计算溢出,可以使用export FLAGS_blha_use_fp32_qk_sum=1 避免溢出

export docker_img=ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.2
# v100 export docker_img=ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda118-cudnn8-v2.2
export MODEL_PATH=${MODEL_PATH:-$PWD}
docker run --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE \
-v $MODEL_PATH/:/models -dit $docker_img /bin/bash \
-c -ex 'start_server && tail -f /dev/null'

更多文档