下载
中文
注册

准备Deployer msctl命令行客户端

工具准备

以当前所在路径为/home/{用户名称}/package为例进行以下操作。

  1. 使用以下命令将Ascend-mindie-service_{version}_linux-aarch64.run安装后的msctl.json文件拷贝至{$HOME}/.mindie_ms/路径下, 且文件权限不高于640。
    cp mindie-service/latest/conf/msctl.json ~/.mindie_ms/
  2. 打开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
  3. 进入到infer_server.json配置文件所在路径并打开。
    cd /mindie-service/latest/conf
    vi infer_server.json
  4. 将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 Serverconfig.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%。

  5. 使用以下命令进入mindie-service的安装路径。
    cd ./mindie-service/latest
  6. 导入签发其他证书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
  7. 执行以下命令导入环境变量,将所依赖的so载入LD_LIBRARY_PATH。
    export LD_LIBRARY_PATH=/path/to/mindie-service/latest/lib:$LD_LIBRARY_PATH