准备Deployer msctl命令行客户端
工具准备
以当前所在路径为/home/{用户名称}/package为例进行以下操作。
- 使用以下命令将Ascend-mindie-service_{version}_linux-aarch64.run安装后的msctl.json文件拷贝至{$HOME}/.mindie_ms/路径下, 且文件权限不高于640。
cp mindie-service/latest/conf/msctl.json ~/.mindie_ms/
- 打开msctl.json文件并根据实际情况参考表1修改启动配置文件,配置样例如下所示(格式必须和样例保持一致)。
{ "http":{ "dstPort" : 9789, "dstIP" : "127.0.0.1", "ca_cert": "./security/ca/ca.pem", "tls_cert": "./security/certs/cert.pem", "tls_key": "./security/keys/cert.key.pem", "tls_crl": "", "timeout": 60 }, "log_level": "INFO" }
表1 启动配置参数 参数
类型
说明
dstPort
Int
必填。
对端端口( MindIE MS服务端),与ms_server.json中的port保持一致。
取值范围:[1024,65535],默认值9789。
dstIP
String
必填。
部署服务端IP地址,Deployment部署场景使用MindIE MS Server的Pod IP进行访问 。
可通过以下命令查询Pod IP:
kubectl get pods -n mindie -o wide
ca_cert
String
必填。
默认使用HTTPS通信。
ca根证书文件。需MindIE MS服务端ca证书文件相互信任。
tls_cert
String
必填。
客户端tls证书文件。用户请参考下面步骤2准备证书。
tls_key
String
必填。
客户端tls私钥文件。出于安全的考虑,建议使用加密私钥,如使用,在执行命令时会提供用户输入加密口令。
tls_crl
String
必填。
校验通信对端服务端的证书吊销列表crl文件,如为空,则不进行吊销校验。
timeout
Int
必填。
MindIE MS客户端可设置的等待响应时长,取值范围[1,60]。
log_level
String
必填。
客户端日志级别。
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
- 进入到infer_server.json配置文件所在路径并打开。
cd /mindie-service/latest/conf vi infer_server.json
- 将infer_server.json配置文件的“server_type”参数改为“mindie_single_node”,infer_server.json配置文件如下所示,其参数解释请参见表2。
{ "server_name": "mindie-server", "replicas": 1, "service_port": 31005, "cross_node_num":2, "service_type": "NodePort", "server_type":"mindie_single_node", "scheduler": "default", "init_delay": 180, "liveness_timeout": 10, "liveness_failure_threshold": 1, "readiness_timeout": 10, "readiness_failure_threshold": 1, "resource_requests": { "memory": 500000, "cpu_core" : 32000, "npu_type": "Ascend910", "npu_chip_num": 8 }, "mindie_server_config": { "mies_install_path": "/usr/local/Ascend/mindie/latest/mindie-service", "infer_port" : 1025, "management_port":1026, "enable_tls":true }, "npu_fault_reschedule": true "termination_grace_period_seconds": 30, "max_unavailable": "50%", "max_surge": "50%" }
表2 infer_server.json配置文件参数解释 参数
类型
说明
server_name
String
必填。
任务服务名称。在MindIE MS管理范围内具备唯一性的ID,当前只支持部署一个服务。
replicas
Int
必填。
部署的实例副本数量,其中实例指的是最小可提供推理服务的单元。
- 分布式多机场景当前只支持部署一个实例。
- 单机场景可部署多个实例,范围为[1, 256],具体配置数量根据物理资源进行配置。
service_port
Int
必填。
部署服务对外可被用户访问的端口,NodePort取值范围[30000, 32767]。
访问MindIE推理请求时需要使用该接口。
cross_node_num
Int
分布式多机场景必填,单机场景不支持该参数。
一个实例跨机部署的节点个数,当前只支持取值为2或4。
service_type
String
必填。
创建Kubernetes的Service资源类型,当前只支持NodePort类型。
NodePort:表示从该参数获取Service的资源类型。
server_type
String
必填。
服务部署的形态,支持mindie_cross_node为多机部署和mindie_single_node单机部署。
scheduler
String
必填。
可选调度器类型,分布式多机场景仅支持default类型,单机场景支持default和volcano类型;如需启用NPU故障重调度功能,需要选择“volcano”调度器。
- default:使用Kubernetes默认调度器。
- volcano:使用MindX DL volcano调度器。
init_delay
Int
必填。
允许推理实例启动的时间。
- 分布式多机场景,从Pod启动后ranktable完成生成的时间开始计算,在这个时间内MindIE MS会周期性检测服务实例是否就绪,超过这个时间服务未就绪,实例将自动重启。
- 单机场景,从pod启动的时间计算,超过这个时间,存活探针开始接管,若live检测失败(5秒触发一次),会触发重启。
取值范围为[10, 1800], 单位为秒。
liveness_timeout
Int
必填。
存活探针超时时间设置,取值范围[1, 600],单位秒。
注意在高并发场景下,liveness探针可能超时,此时认为MindIE Server状态异常,并对MindIE Server Pod进行重启。建议用户根据业务并发度配置合理的值,可以使用MindIE Benchmark工具设置并发量发送请求进行模拟测试,确保Pod在并发度条件下没有发生重启。
参考示例:llama2-7b在
Atlas 800I A2 推理产品 上单卡单实例部署,使用MMLU数据集将Benchmark并发度设置为1000,超时时间配置为10秒。liveness_failure_threshold
Int
必填。存活探针最大允许的失败次数,取值范围[1, 10]。
参考示例:llama2-7b在
Atlas 800I A2 推理产品 上单卡单实例部署,使用MMLU数据集将Benchmark并发度设置为1000,失败次数设置为2时Pod不重启。readiness_timeout
Int
必填。就绪探针超时时间设置,取值范围[1, 600],单位秒。
就绪探针超时时间配置不足且当请求并发量大时,可能导致就绪探针超时,超时后Service状态变成“未就绪”,无法正常发送推理请求。
readiness_failure_threshold
Int
必填。就绪探针最大允许的失败次数,建议配置为1。
取值范围[1, 10]。
memory
Int
必填。
服务所需最少内存资源大小,单位为M。
默认值256000,取值范围[1000, 256000]。
cpu_core
Int
必填。
服务所需最少CPU资源大小,取值范围[1000, 256000],单位为M(1000M等于1核心)。
npu_type
String
必填。
服务所需NPU卡类型。
- 分布式多机场景:支持输入"Ascend910"。
- 单机场景:支持输入"Ascend910"和"Ascend310P"。
npu_chip_num
Int
必填。
单个节点所需NPU卡的数量。规格限制[1, 8];
单机场景下,是一个实例占用的卡数;
分布式多机场景下,是一个实例在每个节点上占用的卡数,会分配匹配的卡资源并写入ranktable。且只支持全卡推理,当前仅支持配置为8卡的设备。
mindie_server_config
Object
必填。
- infer_port:推理服务的推理端口。
- management_port:推理服务的管理端口,用于查询服务状态。
- enable_tls:是否开启https,使用服务端启动时,配置的证书发送tls请求需要与MindIE Server的config.json配置文件中httpsEnabled参数、表2中client_mindie_server_tls_enable参数的值保持一致。
- mies_install_path: MindIE Service在镜像内的安装路径。
infer_port
Int
必填。推理服务的推理端口。取值范围[1024, 65535]
management_port
Int
必填。推理服务的管理端口。取值范围[1024, 65535]
enable_tls
Bool
必填。是否开启https。
mies_install_path
String
必填。MindIE Service在镜像内的安装路径。
npu_fault_reschedule
Bool
NPU故障重调度(主动识别NPU设备故障并重调度Pod到正常NPU设备)配置,是否以优雅方式进行重调度。前提安装volcano组件,该参数仅对单机场景生效。
- true:表明使用优雅方式重调度,并在重调度过程优雅删除原Pod。
- false:表明使用非优雅方式重调度,在重调度过程中强制删除原Pod。
termination_grace_period_seconds
Int
Pod优雅退出时间,单机场景必填,分布式多机场景不支持。
设置Pod优雅退出最大的容忍时间,超过该时间K8s会强制杀掉服务。滚动更新过程,若设置时间不足,可能导致剩余请求未处理完中断。
参考配置:以llama2-7b模型实例数2为例,在Atlas 300I Duo 推理卡+Atlas 800 推理服务器(型号:3000)单卡设备使用gsm8k数据集并发度为1000的请求,需要配置Pod优雅退出时间为800秒,保证Pod退出过程业务不中断。
取值范围[0, 3600];单位为秒。
在服务启动初始,未就绪时,此时服务无法正常处理优雅退出信号,删除服务将无法触发优雅退出,需等待程序自动退出或达到优雅退出的最大容忍时间。
max_unavailable
String
滚动更新配置,单机场景必填,分布式多机场景不支持。
更新所需的可以处于不可用状态的最大 Pod 数量,指的是replicas * max_unavailable向下取整。
max_unavailable格式必须是“{int数字}%”,取值范围0%~100%。
max_surge
String
滚动更新配置,单机场景必填,分布式多机场景不支持。
更新所需的可以超出期望副本数的最大Pod数量,指replicas * max_surge向上取整。
max_surge格式必须是“{int数字}%,取值范围0%~100%。
- 使用以下命令进入mindie-service的安装路径。
cd ./mindie-service/latest
- 导入签发其他证书中MindIE MS客户端msctl与MindIE MS服务端通信证书(即CERT_CN取值为msclientuser签发的证书)。在当前路径下创建证书目录,导入中间CA证书、MindIE MS客户端msctl与MindIE MS服务端通信的证书和加密私钥。
mkdir -m 700 ./security mkdir -m 700 ./security/certs mkdir -m 700 ./security/keys mkdir -m 700 ./security/ca mkdir -p msclientuser_chian cat /home/{用户名称}/cas/msclientuser/cert.pem /home/{用户名称}/cas/mindiems/cert.pem > ./msclientuser_chian/cert.pem #/home//{用户名称}cas/msclientuser/cert.pem为:MindIE MS客户端msctl与MindIE MS服务端通信的证书;/home/{用户名称}/cas/mindiems/cert.pem为:中间CA证书文件路径 chmod 400 ./msclientuser_chian/cert.pem cp ./msclientuser_chian/cert.pem ./security/certs cp /etc/kubernetes/pki/ca.crt ./security/ca/ca.pem #/etc/kubernetes/pki/ca.crt为:Kubernetes根CA证书文件路径 cp /home/{用户名称}/cas/msclientuser/cert.key.pem ./security/keys #/home/{用户名称}/cas/msclientuser/cert.key.pem为:MindIE MS客户端msctl与MindIE MS服务端通信的私钥文件路径 rm -rf ./msclientuser_chian
- 执行以下命令导入环境变量,将所依赖的so载入LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=/path/to/mindie-service/latest/lib:$LD_LIBRARY_PATH