MindIE MS服务端API接口
MindIE MS支持REST接口和tls认证通信,API接口描述如表1所示。
API |
method |
url |
body |
说明 |
---|---|---|---|---|
推理服务部署 |
post |
/v1/servers/ |
json格式的字符串。 |
发起部署请求,异步接口,部署状态可通过get接口实时查询,部署配置信息请参见表2。 |
推理服务卸载 |
delete |
/v1/servers/{server_name} |
无。 |
{server_name}为样例中server_name参数的值,在MS管理范围内具有全局唯一性,停止卸载服务,删除相关已创建资源。 |
用户需自行编写json格式的字符串,用于部署推理服务,如下所示(格式必须和样例保持一致):
{ "server_name": "mindie-1", "namespace": "default", "server_type":"mindie_cross_node", "replicas": 1, "cross_node_num":2, "server_image": "image:version", "service_port": 31005, "service_type": "NodePort", "startup_cmd": "/path/run.sh", "scheduler": "default", "init_delay": 180, "resource_requests": { "memory": 500000, "cpu_core" : 32000, "npu_type": "Ascend910", "npu_chip_num": 8 }, "mindie_server_config": { "infer_port" : 1025, "management_port":1026, "enable_tls":true }, "mount_path": { "/container_path": "/host_path" } }
参数 |
类型 |
说明 |
---|---|---|
server_name |
String |
必填。 多机任务服务名称。在MS管理范围内具备唯一性的ID,当前只支持部署一个服务。 |
namespace |
String |
必填。 服务所属的命名空间,使用命令空间之前需要现在Kubernetes集群内创建该namepace。 该值和表1中的namespace必须一致。 |
server_type |
String |
必填。 服务部署的形态,只支持mindie_cross_node为多机部署。 |
replicas |
Int |
必填。 部署的副本数量。取值为:1。 当前只支持部署一个实例。 |
cross_node_num |
Int |
必填。 可交叉部署服务的节点个数,取值为:2。 |
server_image |
String |
必填。 多机任务需要的镜像名称及版本,格式为:image_name:image_version。 |
service_type |
String |
必填。 创建Kubernetes的Service资源类型,当前只支持NodePort类型。 NodePort:表示从该参数获取Service的资源类型。 |
service_port |
Int |
必填。 部署服务对外可被用户访问的端口,NodePort取值范围[30000,32767]。 访问MindIE推理请求时需要使用该接口。 |
startup_cmd |
String |
必填。 MindIE Server容器的启动指令,必须是.sh文件的绝对路径。启动脚本样例请参考•非root用户镜像启动脚本样例如下所示:。 每个部署节点上都需要有该启动脚本。 |
scheduler |
String |
必填。 可选调度器类型,当前仅支持default类型。 default:使用Kubernetes默认调度器。 |
init_delay |
Int |
必填。 允许推理实例启动的时间,在这个时间内MindIE MS会周期性检测服务实例是否就绪,超过这个时间服务未就绪,实例将自动重启。取值范围为[10, 1800], 单位为秒。 |
memory |
Int |
必填。 服务所需最少内存资源大小,单位为M。 默认值500000,取值范围[1000, 1000000]。 |
cpu_core |
Int |
必填。 服务所需最少CPU资源大小,取值范围[1000, 256000],单位为M(1000M等于1核心)。 |
npu_type |
String |
必填。 服务所需NPU卡类型,当前仅支持输入“Ascend910”。 |
npu_chip_num |
Int |
必填。 单个节点所需NPU卡的数量;多机场景下,会分配匹配的卡资源并写入ranktable。 多机场景下只支持全卡推理,当前仅支持配置为8卡的设备。 |
mindie_server_config |
Object |
必填。 infer_port:推理服务的推理端口。 management_port:推理服务的管理端口,用于查询服务状态。 enable_tls:是否开启https,使用服务端启动时,配置的证书发送tls请求需要与MindIE Server的config.json配置文件中httpsEnabled参数、表1中client_mindie_server_tls_enable参数的值保持一致。 |
mount_path |
Object |
必填。 如需要挂载物理路径到容器中,格式为 "容器路径(key):物理路径(value)"。 用户可以将1.c中在容器外部的config.json文件通过mount_path方式挂载回config.json源文件(/usr/local/Ascend/mindie/latest/mindieservice/conf/config.json),即可动态修改镜像内配置文件。 每个部署节点上都需要有挂载路径或文件。 |
- 非root用户镜像启动脚本样例如下所示:
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 #1-6行为运行所需环境变量 source /home/{用户名称}/Ascend/ascend-toolkit/set_env.sh source /home/{用户名称}/Ascend/mindie/set_env.sh source /home/{用户名称}/Ascend/nnal/atb/set_env.sh source /home/{用户名称}/Ascend/llm_model/set_env.sh export HCCL_OP_EXPANSION_MODE="AIV" cd /home/{用户名称}/Ascend/mindie/latest/mindie-service #7-8行为运行启动命令 ./bin/mindieservice_daemon
其他客户端
如果已在Kubernetes容器中部署MindIE MS服务端,用户如需使用除MindIE MS客户端以外的客户端(例如:curl)向MindIE MS服务端发起请求,使用样例如下所示:
- 部署服务:
curl -H "Content-Type: application/json" -X POST https://{ip}:{port}/v1/servers -d @infer_server.json --cacert {ca证书文件路径} --cert {证书文件路径} --key {秘钥文件路径}
- 删除服务:
curl -H "Content-Type: application/json" -X DELETE https://{ip}:{port}/v1/servers/{server_name} --cacert {ca证书文件路径} --cert {证书文件路径} --key {秘钥文件路径}
参数解释:
{ip}:是Kubernetes管理节点的物理机IP地址。
{port}:是表1中port参数的值。
infer_server.json:请参考用户自行编写用于部署服务的json格式的字符串,参考表2。
--cacert:表2的ca_cert参数。
--cert:表2的tls_cert参数。
--key:表2的tls_key参数。