使用指导
场景说明
Server提供EndPoint模块对推理服务化协议和接口封装,兼容Triton/OpenAI/TGI/vLLM等第三方框架接口。使用单节点安装模式安装Server之后,用户使用客户端(Linux curl命令,Postman工具等)发送HTTP/HTTPS请求,即可调用EndPoint提供的接口。
说明
HTTP协议存在安全风险,建议您使用HTTPS安全协议。
EndPoint RESTful接口使用说明
HTTP/HTTPS请求的URL的IP地址和端口号在config.json中进行配置,详情请参见ServerConfig参数说明。
-
以Linux curl工具发送generate请求,URL请求格式如下:
- 操作类型:POST
- URL:http[s]://{ip}:{port}/generate
-
未开启HTTPS,发送推理请求:
curl -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{ "inputs": "My name is Olivier and I", "parameters": { "details": true, "do_sample": true, "repetition_penalty": 1.1, "return_full_text": false, "seed": null, "temperature": 1, "top_p": 0.99 } }' http://{ip}:{port}/generate -
HTTPS双向认证的请求方式示例:
curl --location --request POST 'https://{ip}:{port}/generate' \ --header 'Content-Type: application/json' \ --cacert /home/runs/static_conf/ca/ca.pem \ --cert /home/runs/static_conf/cert/client.pem \ --key /home/runs/static_conf/cert/client.key.pem \ --data-raw '{ "inputs": "My name is Olivier and I", "parameters": { "best_of": 1, "decoder_input_details": false, "details": false, "do_sample": true, "max_new_tokens": 20, "repetition_penalty": 2, "return_full_text": false, "seed": 12, "temperature": 0.1, "top_k": 1, "top_p": 0.9, "truncate": 1024 } }'说明
- --cacert:验签证书文件路径。
- ca.pem:Server服务端证书的验签证书/根证书。
- --cert:客户端证书文件路径。
- client.pem:客户端证书。
- --key:客户端私钥文件路径。
- client.key.pem:客户端证书私钥(未加密,建议采用加密密钥)。 请用户根据实际情况对相应参数进行修改。
提供的RESTful API列表如下:
表 1 服务状态查询API(内部接口的查询类接口)
| API | 接口类型 | URL | 说明 | 支持框架 |
|---|---|---|---|---|
| Server Live | GET | /v2/health/live | 检查服务器是否在线。 | Triton |
| Server Ready | GET | /v2/health/ready | 检查服务器是否准备就绪。 | Triton |
| Model Ready | GET | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/ready | 检查模型是否准备就绪。 | Triton |
| health | GET | /health | 服务健康检查。 | TGIvLLM |
| 查询TGI EndPoint信息 | GET | /info | 查询TGI EndPoint信息。 | TGI |
| Slot统计 | GET | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/getSlotCount | 参考Triton格式,自定义的Slot统计信息查询接口。 | 原生 |
| 健康探针接口 | GET | /health/timed[-${TIMEOUT}] | 检查推理流程是否正常。 | 原生 |
| 优雅退出接口 | GET | /stopService | 实现整个服务的优雅退出。调用该接口时,会等待服务中正在执行和等待的所有请求完成,并关闭服务,等待时所有推理接口将不可用。 | 原生 |
| 静态配置采集接口 | GET | /v1/config | 采集静态配置。 | 原生 |
| 动态状态采集接口 | GET | /v1/status | 采集动态状态。 | 原生 |
| 指定实例身份接口 | POST | /v1/role/${role} | 指定实例身份。 | 原生 |
| 动态状态采集接口 | GET | /v2/status | 采集动态状态。 | 原生 |
| 指定实例身份接口 | POST | /v2/role/${role} | 指定实例身份。 | 原生 |
| 服务指标接口(JSON格式) | GET | /metrics-json | 获取推理服务过程中请求的TTFT(Time To First Token)、TBT(Time Between Tokens)的动态平均值(默认近1000个请求的平均值),正在执行请求数、正在等待请求数量、剩余NPUblock数量。 | 原生 |
| 服务管控指标查询接口(普罗格式) | GET | /metrics | 查询推理服务化的相关服务管控指标 | 原生 |
| 动态加载lora接口 | POST | /v1/load_lora_adapter | 动态加载lora | OpenAI |
| 动态卸载lora接口 | POST | /v1/unload_lora_adapter | 动态卸载lora | OpenAI |
表 2 模型/服务查询API(业务面的查询接口)
| API | 接口类型 | URL | 说明 | 支持框架 |
|---|---|---|---|---|
| models列表 | GET | /v1/models | 列举当前可用模型列表。 | OpenAI |
| model详情 | GET | /v1/models/{model} | 查询模型信息。 | OpenAI |
| 服务元数据查询 | GET | /v2 | 获取服务元数据。 | Triton |
| 模型元数据查询 | GET | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}] | 查询模型元数据信息。 | Triton |
| 查询模型配置 | GET | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/config | 查询模型配置。 | Triton |
表 3 推理API(业务面的业务接口)
| API | 接口类型 | URL | 说明 | 支持框架 |
|---|---|---|---|---|
| 推理任务 | POST | / | TGI推理接口,stream==false返回文本推理结果,stream==true返回流式推理结果。 | TGI |
| 推理任务 | POST | /generate | TGI和vLLM的推理接口,通过请求参数来区分是哪种服务的接口。 |
|
| 推理任务 | POST | /generate_stream | TGI流式推理接口,使用Server-Sent Events格式返回结果。 | TGI |
| 推理任务 | POST | /v1/chat/completions | OpenAI文本/流式推理接口。 | OpenAI |
| 推理任务 | POST | /v1/completions | vLLM兼容OpenAI文本/流式推理接口。 | OpenAI |
| 推理任务 | POST | /infer | 原生推理接口,支持文本/流式返回结果。 | 原生 |
| 推理任务 | POST | /infer_token | 原生推理接口,实现token输入的文本/流式推理。 | 原生 |
| 推理任务 | POST | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/infer | Triton的token推理接口。 | Triton |
| 推理任务 | POST | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/stopInfer | 参考Triton接口定义,提供提前终止请求接口。 | 原生 |
| 推理任务 | POST | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/generate | Triton文本推理接口。 | Triton |
| 推理任务 | POST | /v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/generate_stream | Triton流式推理接口。 | Triton |
| 推理任务 | POST | /v1/tokenizer | 计算token数量。 | 原生 |
| 推理任务 | GET | /dresult | 调度器与D实例间,存在一个长连接,D实例每推理出一个结果,就通过该长连接响应给调度器。 | PD分离相关 |
说明
- ${MODEL_NAME}字段指定需要查询的模型名称。
- [/versions/${MODEL_VERSION}]字段暂不支持,不传递。