3333
3434### 准备部署镜像
3535
36- 为了方便部署,我们提供了 cuda12.3 的镜像,可以直接拉取镜像,或者使用dockerfile [ 构建自定义镜像] ( #基于dockerfile创建自己的镜像 )
36+ 为了方便部署,我们提供了 cuda12.3 的镜像,可以直接拉取镜像,或者使用我们提供的 ` Dockerfile ` [ 构建自定义镜像] ( #基于dockerfile创建自己的镜像 )
3737```
3838docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2
3939```
4040
4141### 准备模型
4242
4343FastDeploy 为 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+
4445导出后的模型放在任意文件夹下,以 ` /home/workspace/models_dir ` 为例
4546
4647```
@@ -60,6 +61,8 @@ cd /home/workspace/models_dir
6061
6162### 创建容器
6263
64+ 创建容器之前,请检查 Docker 版本和 GPU 环境,确保 Docker 支持 ` --gpus all ` 参数。
65+
6366将模型目录挂载到容器中,默认模型挂载地址为 ` /models/ ` ,服务启动时可通过 ` MODEL_DIR ` 环境变量自定义挂载地址。
6467```
6568docker run --gpus all \
@@ -100,11 +103,11 @@ export CUDA_VISIBLE_DEVICES=0
100103# export DISABLE_STREAMING=1
101104
102105# 配置数据服务。需要自行修改HTTP_PORT、GRPC_PORT、METRICS_PORT和INFER_QUEUE_PORT。(请事先检查端口可用)
103- export HTTP_PORT="8751 " # 探活服务的http端口(当前仅用于健康检查、探活)
104- export GRPC_PORT="8752 " # 模型推服务的grpc端口
105- export METRICS_PORT="8753 " # 模型服务中监督指标的端口
106- export INFER_QUEUE_PORT="8754 " # 模型服务内部使用的端口
107- export PUSH_MODE_HTTP_PORT="8143 " # 服务请求HTTP端口号,如不配置,默认为-1,即服务只支持GRPC协议
106+ export HTTP_PORT="8110 " # 探活服务的http端口(当前仅用于健康检查、探活)
107+ export GRPC_PORT="8811 " # 模型推服务的grpc端口
108+ export METRICS_PORT="8722 " # 模型服务中监督指标的端口
109+ export INFER_QUEUE_PORT="8813 " # 模型服务内部使用的端口
110+ export PUSH_MODE_HTTP_PORT="9965 " # 服务请求HTTP端口号,如不配置,默认为-1,即服务只支持GRPC协议
108111
109112# MAX_SEQ_LEN: 服务会拒绝input token数量超过MAX_SEQ_LEN的请求,并返回错误提示
110113# MAX_DEC_LEN: 服务会拒绝请求中max_dec_len/min_dec_len超过此参数的请求,并返回错误提示
@@ -154,12 +157,12 @@ port = 8811 # 服务配置的GRPC_PORT
154157chatbot = ChatBot(hostname=hostname, port=port)
155158
156159# 非流式接口
157- result = chatbot.generate("你好 ", topp=0.8, max_dec_len=128, timeout=120)
160+ result = chatbot.generate("hello ", topp=0.8, max_dec_len=128, timeout=120)
158161print(result)
159162
160163# 流式接口
161164chatbot = ChatBot(hostname=hostname, port=port)
162- stream_result = chatbot.stream_generate("你好 ", max_dec_len=128, timeout=120)
165+ stream_result = chatbot.stream_generate("hello ", max_dec_len=128, timeout=120)
163166for res in stream_result:
164167 print(res)
165168```
@@ -173,7 +176,8 @@ import uuid
173176import json
174177import requests
175178
176- url = f"http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions"
179+ push_mode_http_port = "9965" # 服务配置的PUSH_MODE_HTTP_PORT
180+ url = f"http://127.0.0.1:{push_mode_http_port}/v1/chat/completions"
177181req_id = str(uuid.uuid1())
178182data_single = {
179183 "text": "Hello, how are you?",
@@ -188,7 +192,7 @@ for line in res.iter_lines():
188192
189193# 多轮对话
190194data_multi = {
191- messages= [
195+ " messages": [
192196 {"role": "user", "content": "Hello, who are you"},
193197 {"role": "system", "content": "I'm a helpful AI assistant."},
194198 {"role": "user", "content": "List 3 countries and their capitals."},
@@ -226,7 +230,8 @@ for line in res.iter_lines():
226230```
227231import openai
228232
229- client = openai.Client(base_url="http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions", api_key="EMPTY_API_KEY")
233+ push_mode_http_port = "9965" # 服务配置的PUSH_MODE_HTTP_PORT
234+ client = openai.Client(base_url=f"http://127.0.0.1:{push_mode_http_port}/v1/chat/completions", api_key="EMPTY_API_KEY")
230235
231236# 非流式返回
232237response = client.completions.create(
0 commit comments