86 lines
2.2 KiB
Markdown
86 lines
2.2 KiB
Markdown
# 推理服务化快速上手
|
|
|
|
我们提供了一套基于动态图推理的简单易用 UI 服务化部署方法,用户可以快速部署服务化推理。
|
|
|
|
请确保,在部署前请确保已正确安装 PaddeNLP,clone 本 repo 下位置代码。以及自定义算子库。本部署的服务是兼容 OpenAI API 接口
|
|
|
|
Clone PaddleNLP 到本地
|
|
```bash
|
|
git clone https://github.com/PaddlePaddle/PaddleNLP.git && cd PaddleNLP/llm # 如已clone或下载PaddleNLP可跳过
|
|
```
|
|
|
|
|
|
环境准备
|
|
|
|
```
|
|
python >= 3.9
|
|
gradio
|
|
flask
|
|
paddlenlp_ops (可选,高性能自定义加速算子, 安装参考 https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/installation.html)
|
|
```
|
|
|
|
服务化部署,单卡脚本如下:
|
|
```bash
|
|
python ./predict/flask_server.py \
|
|
--model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
|
|
--port 8010 \
|
|
--flask_port 8011 \
|
|
--dtype "float16"
|
|
```
|
|
用户也可以使用 paddle.distributed.launch 启动多卡推理。
|
|
|
|
其中参数如下:
|
|
- port: Gradio UI 服务端口号,默认8010。
|
|
- flask_port: Flask 服务端口号,默认8011。
|
|
|
|
其他参数请参见推理文档中推理参数配置。
|
|
|
|
|
|
### 使用模型
|
|
**图形化界面**:
|
|
- 打开 http://127.0.0.1:8010 即可使用 gradio 图形化界面,即可开启对话。
|
|
|
|
**API 访问:**
|
|
- 您也可用通过 flask 服务化 API 的形式访问服务:
|
|
|
|
**1.** 您可以直接使用 curl, 开始对话
|
|
```
|
|
curl 127.0.0.1:8011/v1/chat/completions \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{"message": [{"role": "user", "content": "你好"}]}'
|
|
```
|
|
|
|
**2.** 可以使用 OpenAI 客户端调用:
|
|
```python
|
|
from openai import OpenAI
|
|
|
|
client = OpenAI(
|
|
api_key="EMPTY",
|
|
base_url="http://localhost:8011/v1/",
|
|
)
|
|
|
|
# Completion API
|
|
stream = True
|
|
completion = client.chat.completions.create(
|
|
model="default",
|
|
messages=[
|
|
{"role": "user", "content": "PaddleNLP好厉害!这句话的感情色彩是?"}
|
|
],
|
|
max_tokens=1024,
|
|
stream=stream,
|
|
)
|
|
|
|
if stream:
|
|
for c in completion:
|
|
print(c.choices[0].delta.content, end="")
|
|
else:
|
|
print(completion.choices[0].message.content)
|
|
```
|
|
|
|
|
|
**3.** 还可以参考:`./predict/request_flask_server.py` 文件使用脚本调用。
|
|
```bash
|
|
# 在 PaddleNLP/llm 目录下
|
|
python predict/request_flask_server.py
|
|
```
|