From f0ca7fd4a0f619852cafb44a8ea3e820b8affba0 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 05:29:21 +0000 Subject: [PATCH 1/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index cbc0e39828..c086c50d34 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -49,6 +49,8 @@ cd /home/workspace/models_dir ``` docker run --gpus all \ --name fastdeploy_serving \ + --privileged \ + --cap-add=SYS_PTRACE \ --network=host \ --shm-size=10G \ -v /home/workspace/models_dir:/fastdeploy/models/ \ @@ -93,8 +95,7 @@ export CUDA_VISIBLE_DEVICES=0 # 默认关闭 # export DISABLE_STREAMING=1 -# 配置数据服务。需要自行修改HTTP_PORT、GRPC_PORT、METRICS_PORT和INFER_QUEUE_PORT。 -# 请事先检查端口可用:执行`netstat -tuln | grep <端口号>`,如果没有log输出,则表示该端口未被占用。 +# 配置数据服务。需要自行修改HTTP_PORT、GRPC_PORT、METRICS_PORT和INFER_QUEUE_PORT。(请事先检查端口可用) export HTTP_PORT="8751" # 探活服务的http端口(当前仅用于健康检查、探活) export GRPC_PORT="8752" # 模型推服务的grpc端口 export METRICS_PORT="8753" # 模型服务中监督指标的端口 From f8b215cf8771ec8b4b7857980dcaf711cf17df7e Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 05:53:08 +0000 Subject: [PATCH 2/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index c086c50d34..f4078f8704 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -299,7 +299,8 @@ print("\n") | 字段名 | 字段类型 | 说明 | 是否必填 | 默认值 | 备注 | | :---: | :-----: | :---: | :---: | :-----: | :----: | | req_id | str | 请求ID,用于标识一个请求。建议设置req_id,保证其唯一性 | 否 | 随机id | 如果推理服务中同时有两个相同req_id的请求,会返回req_id重复的错误信息 | -| text | str | 请求的文本 | 是 | 无 | | +| text | str | 请求的文本 | 否 | 无 | text 和 messages 必须有一个 | +| messages | str | 多轮对话文本 | 否 | 无 | 多轮对话以list方式存储 | | max_dec_len | int | 最大生成token的长度,如果请求的文本token长度加上max_dec_len大于模型的max_seq_len,会返回长度超限的错误信息 | 否 | max_seq_len减去文本token长度 | | | min_dec_len | int | 最小生成token的长度,最小是1 | 否 | 1 | | | topp | float | 控制随机性参数,数值越大则随机性越大,范围是0~1 | 否 | 0.7 | | From 3ff625b832dd8a1c7b279def31da3d224b3407c4 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 05:56:11 +0000 Subject: [PATCH 3/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index f4078f8704..f2443b12cf 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -278,7 +278,7 @@ print("\n") | GRPC_PORT | int | 模型推服务的grpc端口 | 是 | 无 | | | METRICS_PORT | int | 模型服务中监督指标的端口 | 是 | 无 | | | INFER_QUEUE_PORT | int | 模型服务内部使用的端口 | 否 | 56666 | | -| PUSH_MODE_HTTP_PORT | int | 服务请求HTTP端口号 | 否 | -1 | 如不配置,服务只支持GRPC协议 | +| PUSH_MODE_HTTP_PORT | int | 服务请求HTTP端口号 | 否 | -1 | 如不配置,服务只支持GRPC协议 | | DISABLE_STREAMING | int | 是否使用流式返回 | 否 | 0 | | | MAX_SEQ_LEN | int | 最大输入序列长度 | 否 | 8192 | 服务会拒绝input token数量超过MAX_SEQ_LEN的请求,并返回错误提示 | | MAX_DEC_LEN | int | 最大decoer序列长度 | 否 | 1024 | 服务会拒绝请求中max_dec_len/min_dec_len超过此参数的请求,并返回错误提示 | @@ -300,7 +300,7 @@ print("\n") | :---: | :-----: | :---: | :---: | :-----: | :----: | | req_id | str | 请求ID,用于标识一个请求。建议设置req_id,保证其唯一性 | 否 | 随机id | 如果推理服务中同时有两个相同req_id的请求,会返回req_id重复的错误信息 | | text | str | 请求的文本 | 否 | 无 | text 和 messages 必须有一个 | -| messages | str | 多轮对话文本 | 否 | 无 | 多轮对话以list方式存储 | +| messages | str | 多轮对话文本 | 否 | 无 | 多轮对话以list方式存储 | | max_dec_len | int | 最大生成token的长度,如果请求的文本token长度加上max_dec_len大于模型的max_seq_len,会返回长度超限的错误信息 | 否 | max_seq_len减去文本token长度 | | | min_dec_len | int | 最小生成token的长度,最小是1 | 否 | 1 | | | topp | float | 控制随机性参数,数值越大则随机性越大,范围是0~1 | 否 | 0.7 | | From 68e6654d2889f69796b2aef6ec16bfaa97d7107f Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 06:54:11 +0000 Subject: [PATCH 4/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 89 ++++++++++++++++++--------- 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index f2443b12cf..6ffc2b0a08 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -2,37 +2,51 @@ ## 目录 - [部署环境准备](#部署环境准备) + - [基础环境](#基础环境) - [准备部署镜像](#准备部署镜像) - [准备模型](#准备模型) - [创建容器](#创建容器) - - [基于dockerfile创建自己的镜像](#基于dockerfile创建自己的镜像) - [启动服务](#启动服务) - [配置参数](#配置参数) - - [启动FastDeploy](#启动FastDeploy) + - [启动服务](#启动服务) - [服务状态查询](#服务状态查询) - [服务测试](#服务测试) - [Python 客户端](#Python-客户端) - [HTTP调用](#HTTP调用) - [返回示例](#返回示例) +- [基于dockerfile创建自己的镜像](#基于dockerfile创建自己的镜像) - [模型配置参数介绍](#模型配置参数介绍) - [请求参数介绍](#请求参数介绍) ## 部署环境准备 +### 基础环境 + 目前 FastDeploy 仅支持在 Linux 系统下部署,部署之前请确保系统有正确的 GPU 环境。 + + - 安装 docker + 请参考 [Install Docker Engine](https://docs.docker.com/engine/install/) 选择对应的 Linux 平台安装 docker 环境。 + + - 安装 NVIDIA Container Toolkit + 请参考 [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。 + + 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 是否可以正常使用。 + ### 准备部署镜像 -为了方便部署,我们提供了cuda12.3的镜像,可以直接拉取镜像,或者使用dockerfile[构建自定义镜像](#基于dockerfile创建自己的镜像) +为了方便部署,我们提供了 cuda12.3 的镜像,可以直接拉取镜像,或者使用dockerfile[构建自定义镜像](#基于dockerfile创建自己的镜像) ``` -docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.0 +docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2 ``` ### 准备模型 -模型放在对应文件夹下,以 `/home/workspace/models_dir` 为例 +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) ... +导出后的模型放在任意文件夹下,以 `/home/workspace/models_dir` 为例 + ``` cd /home/workspace/models_dir -# 模型内目录结构需要整理成特定格式,如下是单卡部署的模型目录结构 +# 导出的模型目录结构格式如下所示,理论上无缝支持 PaddleNLP 导出静态图模型,无需修改模型目录结构 # /opt/output/Serving/models # ├── config.json # 模型配置文件 # ├── xxxx.model # 词表模型文件 @@ -46,33 +60,23 @@ cd /home/workspace/models_dir ### 创建容器 +将模型目录挂载到容器中,默认模型挂载地址为 `/models/`,服务启动时可通过 `MODEL_DIR` 环境变量自定义挂载地址。 ``` docker run --gpus all \ --name fastdeploy_serving \ --privileged \ --cap-add=SYS_PTRACE \ --network=host \ - --shm-size=10G \ - -v /home/workspace/models_dir:/fastdeploy/models/ \ - -dit registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.0 bash + --shm-size=5G \ + -v /home/workspace/models_dir:/models/ \ + -dit registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2 bash # 进入容器,检查GPU环境和模型挂载是否正常 docker exec -it fastdeploy_serving /bin/bash nvidia-smi -ls /fastdeploy/models/ -``` - -## 基于dockerfile创建自己的镜像 - -``` -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/llm - -docker build --network=host -f ./dockerfiles/Dockerfile_serving_cuda123_cudnn9 -t llm-serving-cu123-self . +ls /models/ ``` -创建自己的镜像后,可以基于该镜像[创建容器](#创建容器) - ## 启动服务 ### 配置参数 @@ -118,7 +122,7 @@ export PUSH_MODE_HTTP_WORKERS="1" # HTTP服务进程数,在 PUSH_MODE_HTTP_POR 更多请求参数请参考[模型配置参数介绍](#模型配置参数介绍) -### 启动FastDeploy +### 启动服务 ``` cd /opt/output/Serving @@ -171,14 +175,30 @@ import requests url = f"http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions" req_id = str(uuid.uuid1()) -data = { - "text": "Hello, how are you?", - "req_id": req_id, - "max_dec_len": 64, - "stream": True, - } +data_single = { + "text": "Hello, how are you?", + "req_id": req_id, + "max_dec_len": 64, + "stream": True, + } # 逐token返回 -res = requests.post(url, json=data, stream=True) +res = requests.post(url, json=data_single, stream=True) +for line in res.iter_lines(): + print(json.loads(line)) + +# 多轮对话 +data_multi = { + messages=[ + {"role": "user", "content": "Hello, who are you"}, + {"role": "system", "content": "I'm a helpful AI assistant."}, + {"role": "user", "content": "List 3 countries and their capitals."}, + ], + "req_id": req_id, + "max_dec_len": 64, + "stream": True, + } +# 逐token返回 +res = requests.post(url, json=data_multi, stream=True) for line in res.iter_lines(): print(json.loads(line)) ``` @@ -268,6 +288,17 @@ for chunk in response: print("\n") ``` +## 基于dockerfile创建自己的镜像 + +为了方便用户构建自定义服务,我们提供了基于dockerfile创建自己的镜像的脚本。 +``` +git clone https://github.com/PaddlePaddle/FastDeploy.git +cd FastDeploy/llm + +docker build --network=host -f ./dockerfiles/Dockerfile_serving_cuda123_cudnn9 -t llm-serving-cu123-self . +``` +创建自己的镜像后,可以基于该镜像[创建容器](#创建容器) + ## 模型配置参数介绍 | 字段名 | 字段类型 | 说明 | 是否必填 | 默认值 | 备注 | From 1b3e69c50a0c46230650a35c5106cab48bd8b7a9 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 07:20:34 +0000 Subject: [PATCH 5/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index 6ffc2b0a08..7cba221331 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -33,7 +33,7 @@ ### 准备部署镜像 -为了方便部署,我们提供了 cuda12.3 的镜像,可以直接拉取镜像,或者使用dockerfile[构建自定义镜像](#基于dockerfile创建自己的镜像) +为了方便部署,我们提供了 cuda12.3 的镜像,可以直接拉取镜像,或者使用我们提供的 `Dockerfile` [构建自定义镜像](#基于dockerfile创建自己的镜像) ``` docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cudnn9-v1.2 ``` @@ -41,6 +41,7 @@ docker pull registry.baidubce.com/paddlepaddle/fastdeploy:llm-serving-cuda123-cu ### 准备模型 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) ... + 导出后的模型放在任意文件夹下,以 `/home/workspace/models_dir` 为例 ``` @@ -60,6 +61,8 @@ cd /home/workspace/models_dir ### 创建容器 +创建容器之前,请检查 Docker 版本和 GPU 环境,确保 Docker 支持 `--gpus all` 参数。 + 将模型目录挂载到容器中,默认模型挂载地址为 `/models/`,服务启动时可通过 `MODEL_DIR` 环境变量自定义挂载地址。 ``` docker run --gpus all \ @@ -100,11 +103,11 @@ export CUDA_VISIBLE_DEVICES=0 # export DISABLE_STREAMING=1 # 配置数据服务。需要自行修改HTTP_PORT、GRPC_PORT、METRICS_PORT和INFER_QUEUE_PORT。(请事先检查端口可用) -export HTTP_PORT="8751" # 探活服务的http端口(当前仅用于健康检查、探活) -export GRPC_PORT="8752" # 模型推服务的grpc端口 -export METRICS_PORT="8753" # 模型服务中监督指标的端口 -export INFER_QUEUE_PORT="8754" # 模型服务内部使用的端口 -export PUSH_MODE_HTTP_PORT="8143" # 服务请求HTTP端口号,如不配置,默认为-1,即服务只支持GRPC协议 +export HTTP_PORT="8110" # 探活服务的http端口(当前仅用于健康检查、探活) +export GRPC_PORT="8811" # 模型推服务的grpc端口 +export METRICS_PORT="8722" # 模型服务中监督指标的端口 +export INFER_QUEUE_PORT="8813" # 模型服务内部使用的端口 +export PUSH_MODE_HTTP_PORT="9965" # 服务请求HTTP端口号,如不配置,默认为-1,即服务只支持GRPC协议 # MAX_SEQ_LEN: 服务会拒绝input token数量超过MAX_SEQ_LEN的请求,并返回错误提示 # MAX_DEC_LEN: 服务会拒绝请求中max_dec_len/min_dec_len超过此参数的请求,并返回错误提示 @@ -154,12 +157,12 @@ port = 8811 # 服务配置的GRPC_PORT chatbot = ChatBot(hostname=hostname, port=port) # 非流式接口 -result = chatbot.generate("你好", topp=0.8, max_dec_len=128, timeout=120) +result = chatbot.generate("hello", topp=0.8, max_dec_len=128, timeout=120) print(result) # 流式接口 chatbot = ChatBot(hostname=hostname, port=port) -stream_result = chatbot.stream_generate("你好", max_dec_len=128, timeout=120) +stream_result = chatbot.stream_generate("hello", max_dec_len=128, timeout=120) for res in stream_result: print(res) ``` @@ -173,7 +176,8 @@ import uuid import json import requests -url = f"http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions" +push_mode_http_port = "9965" # 服务配置的PUSH_MODE_HTTP_PORT +url = f"http://127.0.0.1:{push_mode_http_port}/v1/chat/completions" req_id = str(uuid.uuid1()) data_single = { "text": "Hello, how are you?", @@ -188,7 +192,7 @@ for line in res.iter_lines(): # 多轮对话 data_multi = { - messages=[ + "messages": [ {"role": "user", "content": "Hello, who are you"}, {"role": "system", "content": "I'm a helpful AI assistant."}, {"role": "user", "content": "List 3 countries and their capitals."}, @@ -226,7 +230,8 @@ for line in res.iter_lines(): ``` import openai -client = openai.Client(base_url="http://127.0.0.1:{PUSH_MODE_HTTP_PORT}/v1/chat/completions", api_key="EMPTY_API_KEY") +push_mode_http_port = "9965" # 服务配置的PUSH_MODE_HTTP_PORT +client = openai.Client(base_url=f"http://127.0.0.1:{push_mode_http_port}/v1/chat/completions", api_key="EMPTY_API_KEY") # 非流式返回 response = client.completions.create( From 084fbb8aa5e4ba53229643f1b50447d73bea57a3 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 07:25:27 +0000 Subject: [PATCH 6/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index 7cba221331..cda82dfeb6 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -47,7 +47,7 @@ FastDeploy 为 PaddleNLP 静态图模型提供了高效的部署方案,模型 ``` cd /home/workspace/models_dir -# 导出的模型目录结构格式如下所示,理论上无缝支持 PaddleNLP 导出静态图模型,无需修改模型目录结构 +# 导出的模型目录结构格式如下所示,理论上无缝支持 PaddleNLP 导出的静态图模型,无需修改模型目录结构 # /opt/output/Serving/models # ├── config.json # 模型配置文件 # ├── xxxx.model # 词表模型文件 @@ -138,10 +138,12 @@ bash start_server.sh ``` # port为上面启动服务时候指定的HTTP_PORT + > 测试前请确保服务IP和端口正确 + live接口: (服务是否能正常接收请求) - http://{ip}:{HTTP_PORT}/v2/health/live + http://127.0.0.1:8110/v2/health/live health接口:(模型是否准备好推理) - http://{ip}:{HTTP_PORT}/v2/health/ready + http://127.0.0.1:8110/v2/health/ready ``` ## 服务测试 From d4d61dd568bff7a2e3ac080b8fec1e6b2552e260 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 07:27:33 +0000 Subject: [PATCH 7/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index cda82dfeb6..32bebd0536 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -13,6 +13,7 @@ - [服务测试](#服务测试) - [Python 客户端](#Python-客户端) - [HTTP调用](#HTTP调用) + - [OpenAI 客户端](#OpenAI-客户端) - [返回示例](#返回示例) - [基于dockerfile创建自己的镜像](#基于dockerfile创建自己的镜像) - [模型配置参数介绍](#模型配置参数介绍) From e3f1ce4155f62b777732d1d82e24b54b61b4030c Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 07:29:19 +0000 Subject: [PATCH 8/9] [llm] update docs --- llm/server/scripts/start_server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llm/server/scripts/start_server.sh b/llm/server/scripts/start_server.sh index 12d9d35e0e..e7975b3e83 100644 --- a/llm/server/scripts/start_server.sh +++ b/llm/server/scripts/start_server.sh @@ -27,7 +27,7 @@ export ENC_DEC_BLOCK_NUM=${ENC_DEC_BLOCK_NUM:-"4"} export FIRST_TOKEN_ID=${FIRST_TOKEN_ID:-"1"} export MAX_PREFILL_BATCH=${MAX_PREFILL_BATCH:-"4"} export STOP_THRESHOLD=${STOP_THRESHOLD:-"0"} -export MODEL_DIR=${MODEL_DIR:-"/models/"} +export MODEL_DIR=${MODEL_DIR:-"/models"} export DISTRIBUTED_CONFIG=${DISTRIBUTED_CONFIG:-"${MODEL_DIR}/rank_mapping.csv"} export CONFIG_JSON_FILE=${CONFIG_JSON_FILE:-"config.json"} export PUSH_MODE_HTTP_WORKERS=${PUSH_MODE_HTTP_WORKERS:-"4"} From f11edc49d91e143b08ed3d1ff9d684bab2462492 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 21 Nov 2024 07:31:59 +0000 Subject: [PATCH 9/9] [llm] update docs --- llm/docs/FastDeploy_usage_tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llm/docs/FastDeploy_usage_tutorial.md b/llm/docs/FastDeploy_usage_tutorial.md index 32bebd0536..ec9fe5ac32 100644 --- a/llm/docs/FastDeploy_usage_tutorial.md +++ b/llm/docs/FastDeploy_usage_tutorial.md @@ -48,7 +48,7 @@ FastDeploy 为 PaddleNLP 静态图模型提供了高效的部署方案,模型 ``` cd /home/workspace/models_dir -# 导出的模型目录结构格式如下所示,理论上无缝支持 PaddleNLP 导出的静态图模型,无需修改模型目录结构 +# 导出的模型目录结构如下所示,理论上无缝支持 PaddleNLP 导出的静态图模型,无需修改模型目录结构 # /opt/output/Serving/models # ├── config.json # 模型配置文件 # ├── xxxx.model # 词表模型文件