22## 目录
33
44- [ 部署环境准备] ( #部署环境准备 )
5+ - [ 基础环境] ( #基础环境 )
56 - [ 准备部署镜像] ( #准备部署镜像 )
67 - [ 准备模型] ( #准备模型 )
78 - [ 创建容器] ( #创建容器 )
8- - [ 基于dockerfile创建自己的镜像] ( #基于dockerfile创建自己的镜像 )
99- [ 启动服务] ( #启动服务 )
1010 - [ 配置参数] ( #配置参数 )
11- - [ 启动FastDeploy ] ( #启动FastDeploy )
11+ - [ 启动服务 ] ( #启动服务 )
1212 - [ 服务状态查询] ( #服务状态查询 )
1313- [ 服务测试] ( #服务测试 )
1414 - [ Python 客户端] ( #Python-客户端 )
1515 - [ HTTP调用] ( #HTTP调用 )
1616 - [ 返回示例] ( #返回示例 )
17+ - [ 基于dockerfile创建自己的镜像] ( #基于dockerfile创建自己的镜像 )
1718- [ 模型配置参数介绍] ( #模型配置参数介绍 )
1819- [ 请求参数介绍] ( #请求参数介绍 )
1920
2021## 部署环境准备
2122
23+ ### 基础环境
24+ 目前 FastDeploy 仅支持在 Linux 系统下部署,部署之前请确保系统有正确的 GPU 环境。
25+
26+ - 安装 docker
27+ 请参考 [ Install Docker Engine] ( https://docs.docker.com/engine/install/ ) 选择对应的 Linux 平台安装 docker 环境。
28+
29+ - 安装 NVIDIA Container Toolkit
30+ 请参考 [ Installing the NVIDIA Container Toolkit] ( https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-the-nvidia-container-toolkit ) 了解并安装 NVIDIA Container Toolkit。
31+
32+ NVIDIA Container Toolkit 安装成功后,参考 [ Running a Sample Workload with Docker] ( https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/sample-workload.html#running-a-sample-workload-with-docker ) 测试 NVIDIA Container Toolkit 是否可以正常使用。
33+
2234### 准备部署镜像
2335
24- 为了方便部署,我们提供了cuda12.3的镜像 ,可以直接拉取镜像,或者使用dockerfile[ 构建自定义镜像] ( #基于dockerfile创建自己的镜像 )
36+ 为了方便部署,我们提供了 cuda12.3 的镜像 ,可以直接拉取镜像,或者使用dockerfile[ 构建自定义镜像] ( #基于dockerfile创建自己的镜像 )
2537```
26- docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.0
38+ docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2
2739```
2840
2941### 准备模型
3042
31- 模型放在对应文件夹下,以 ` /home/workspace/models_dir ` 为例
43+ FastDeploy 为 PaddleNLP 静态图模型提供了高效的部署方案,模型静态图导出方案请参考:[ LLaMA] ( https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/docs/predict/llama.md ) 、[ Qwen] ( https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/docs/predict/qwen.md ) 、[ Mixtral] ( https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/docs/predict/mixtral.md ) ...
44+ 导出后的模型放在任意文件夹下,以 ` /home/workspace/models_dir ` 为例
45+
3246```
3347cd /home/workspace/models_dir
3448
35- # 模型内目录结构需要整理成特定格式,如下是单卡部署的模型目录结构
49+ # 导出的模型目录结构格式如下所示,理论上无缝支持 PaddleNLP 导出静态图模型,无需修改模型目录结构
3650# /opt/output/Serving/models
3751# ├── config.json # 模型配置文件
3852# ├── xxxx.model # 词表模型文件
@@ -46,33 +60,23 @@ cd /home/workspace/models_dir
4660
4761### 创建容器
4862
63+ 将模型目录挂载到容器中,默认模型挂载地址为 ` /models/ ` ,服务启动时可通过 ` MODEL_DIR ` 环境变量自定义挂载地址。
4964```
5065docker run --gpus all \
5166 --name fastdeploy_serving \
5267 --privileged \
5368 --cap-add=SYS_PTRACE \
5469 --network=host \
55- --shm-size=10G \
56- -v /home/workspace/models_dir:/fastdeploy/ models/ \
57- -dit registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.0 bash
70+ --shm-size=5G \
71+ -v /home/workspace/models_dir:/models/ \
72+ -dit registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2 bash
5873
5974# 进入容器,检查GPU环境和模型挂载是否正常
6075docker exec -it fastdeploy_serving /bin/bash
6176nvidia-smi
62- ls /fastdeploy/models/
63- ```
64-
65- ## 基于dockerfile创建自己的镜像
66-
67- ```
68- git clone https://github.com/PaddlePaddle/FastDeploy.git
69- cd FastDeploy/llm
70-
71- docker build --network=host -f ./dockerfiles/Dockerfile_serving_cuda123_cudnn9 -t llm-serving-cu123-self .
77+ ls /models/
7278```
7379
74- 创建自己的镜像后,可以基于该镜像[ 创建容器] ( #创建容器 )
75-
7680## 启动服务
7781
7882### 配置参数
@@ -118,7 +122,7 @@ export PUSH_MODE_HTTP_WORKERS="1" # HTTP服务进程数,在 PUSH_MODE_HTTP_POR
118122
119123更多请求参数请参考[ 模型配置参数介绍] ( #模型配置参数介绍 )
120124
121- ### 启动FastDeploy
125+ ### 启动服务
122126
123127```
124128cd /opt/output/Serving
@@ -171,14 +175,30 @@ import requests
171175
172176url = f"http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions"
173177req_id = str(uuid.uuid1())
174- data = {
175- "text": "Hello, how are you?",
176- "req_id": req_id,
177- "max_dec_len": 64,
178- "stream": True,
179- }
178+ data_single = {
179+ "text": "Hello, how are you?",
180+ "req_id": req_id,
181+ "max_dec_len": 64,
182+ "stream": True,
183+ }
180184# 逐token返回
181- res = requests.post(url, json=data, stream=True)
185+ res = requests.post(url, json=data_single, stream=True)
186+ for line in res.iter_lines():
187+ print(json.loads(line))
188+
189+ # 多轮对话
190+ data_multi = {
191+ messages=[
192+ {"role": "user", "content": "Hello, who are you"},
193+ {"role": "system", "content": "I'm a helpful AI assistant."},
194+ {"role": "user", "content": "List 3 countries and their capitals."},
195+ ],
196+ "req_id": req_id,
197+ "max_dec_len": 64,
198+ "stream": True,
199+ }
200+ # 逐token返回
201+ res = requests.post(url, json=data_multi, stream=True)
182202for line in res.iter_lines():
183203 print(json.loads(line))
184204```
@@ -268,6 +288,17 @@ for chunk in response:
268288print("\n")
269289```
270290
291+ ## 基于dockerfile创建自己的镜像
292+
293+ 为了方便用户构建自定义服务,我们提供了基于dockerfile创建自己的镜像的脚本。
294+ ```
295+ git clone https://github.com/PaddlePaddle/FastDeploy.git
296+ cd FastDeploy/llm
297+
298+ docker build --network=host -f ./dockerfiles/Dockerfile_serving_cuda123_cudnn9 -t llm-serving-cu123-self .
299+ ```
300+ 创建自己的镜像后,可以基于该镜像[ 创建容器] ( #创建容器 )
301+
271302## 模型配置参数介绍
272303
273304| 字段名 | 字段类型 | 说明 | 是否必填 | 默认值 | 备注 |
0 commit comments