自动驾驶云服务 OCTOPUS-ModelArts集群:推理服务

时间:2024-09-06 18:25:51

推理服务

  • 推理服务镜像同训练任务镜像一样,必须内置一个用户名为“ma-user”,组名为“ma-group”的普通用户,且必须确保该用户的uid=1000、gid=100。
  • 需要明确设置镜像的启动命令。执行命令如下:
    CMD sh /home/mind/run.sh
  • 服务端必须使用https协议, 且暴露在所有网络平面(0.0.0.0)的“8080”端口。
  • 在“8080”端口,提供URL路径为“/health”的健康检查接口供健康检查使用。
  • 接口仅支持POST、GET、PUT、DELETE四种方法。

    Dockerfile示例:

    FROM python:3.11
    
    USER root
    RUN useradd -m -d /home/ma-user -s /bin/bash -g 100 -u 1000 ma-user
    
    USER ma-user
    RUN pip install --progress-bar off flask cryptography
    
    WORKDIR /home/ma-user
    COPY server.py .
    CMD python server.py

    HTTPS Server示例:

    from flask import Flask, request
    import json 
    
    app = Flask(__name__)
    
    @app.route('/greet', methods=['POST'])
    def say_hello_func():
        print("----------- in hello func ----------")
        data = json.loads(request.get_data(as_text=True))
        print(data)
        username = data['name']
        rsp_msg = 'Hello, {}!'.format(username)
        return json.dumps({"response":rsp_msg}, indent=4)
    
    @app.route('/goodbye', methods=['GET'])
    def say_goodbye_func():
        print("----------- in goodbye func ----------")
        return '\nGoodbye!\n'
    
    @app.route('/', methods=['POST'])
    def default_func():
        print("----------- in default func ----------")
        data = json.loads(request.get_data(as_text=True))
        return '\n called default func !\n {} \n'.format(str(data))
    
    @app.route('/health', methods=['GET'])
    def healthy():
        return "{\"status\": \"OK\"}"
    
    # host must be "0.0.0.0", port must be 8080
    if __name__ == '__main__':
        # 访问创建推理服务时选择的模型版本文件
        torchserve = PTVisionService(model_path=os.getenv('OCTOPUS_MODEL') + '/best.pt')
        
        # host must be "0.0.0.0", port must be 8080
        app.run(host="0.0.0.0", port=8080, ssl_context='adhoc')

    注意:在创建推理服务时选择的模型版本文件将在服务启动时下载到OCTOPUS_MODEL对应的路径下:

    环境变量名称

    含义

    默认值(默认值可能会随版本变化,不建议直接使用)

    OCTOPUS_MODEL

    模型版本文件下载目录

    /home/mind/model

    在本地机器调试

    自定义引擎的规范可以在安装有docker的本地机器上通过以下步骤提前验证:

    1. 将自定义引擎镜像下载至本地机器,假设镜像名为custom_engine:v1。
    2. 将模型版本文件夹复制到本地机器,假设模型包文件夹名字为model。
    3. 在模型文件夹的同级目录下验证如下命令拉起服务:
      docker run -u 1000:100 -p 8080:8080 -v /home/model:/home/mind/model -e OCTOPUS_MODEL=/home/mind/model custom_engine:v1
    4. 在本地机器上启动另一个终端,执行以下验证指令,得到符合预期的推理结果。
      curl -k https://127.0.0.1:8080/${推理服务的请求路径}

    本地调试完成后,每次都需将镜像推送至新版本,使用二次推送镜像功能会导致推理服务镜像更新不生效。

support.huaweicloud.com/usermanual-octopus/octopus-10-0021.html