华为云AI开发平台ModelArts使用自定义引擎创建AI应用_云淘科技

使用自定义引擎创建AI应用,用户可以通过选择自己存储在SWR服务中的镜像作为AI应用的引擎,指定预先存储于OBS服务中的文件目录路径作为模型包,来创建AI应用,轻松地应对ModelArts平台预置引擎无法满足个性化诉求的场景。

ModelArts将自定义引擎类型的AI应用部署为服务时,会先将AI应用相关的SWR镜像下载至集群中,用”uid=1000, gid=100”的用户启动SWR镜像为容器,然后将OBS文件下载到容器中的“/home/mind/model”目录下,最后执行SWR镜像中预置的启动命令。ModelArts平台将暴露在容器“8080”端口的服务注册到APIG,用户可以通过提供的APIG(API网关)URL访问到该服务。

自定义引擎创建AI应用的规范

使用自定义引擎创建AI应用,用户的SWR镜像、OBS模型包和文件大小需要满足以下规范:

SWR镜像规范:

镜像必须内置一个用户名为“ma-user”,组名为“ma-group”的普通用户,且必须确保该用户的uid=1000, gid=100。内置用户的dockerfile指令如下:

groupadd -g 100 ma-group && useradd -d /home/ma-user -m -u 1000 -g 100 -s /bin/bash ma-user

明确设置镜像的启动命令。在dockerfile文件中指定cmd,dockerfile指令示例如下:

CMD sh /home/mind/run.sh

启动入口文件run.sh需要自定义。示例如下:

#!/bin/bash

# 自定义脚本内容
...

# run.sh调用app.py启动服务器,app.py请参考https示例
python app.py

提供的服务必须使用https协议, 且暴露在“8080”端口。请参考https示例。
(可选)在“8080”端口,提供URL路径为“/health”的健康检查服务(健康检查的URL路径必须为 “/health”)。

OBS模型包规范

模型包的名字必须为model。模型包规范请参见模型包规范介绍。

文件大小规范

当使用公共资源池时,SWR的镜像大小(指下载后的镜像大小,非SWR界面显示的压缩后的镜像大小)和 OBS模型包大小总和不大于30G。

https示例

使用Flask启动https,Webserver代码示例如下:

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 '
Goodbye!
'


@app.route('/', methods=['POST'])
def default_func():
    print("----------- in default func ----------")
    data = json.loads(request.get_data(as_text=True))
    return '
 called default func !
 {} 
'.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__':
    app.run(host="0.0.0.0", port=8080, ssl_context='adhoc')

在本地机器调试

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

将自定义引擎镜像下载至本地机器,假设镜像名为custom_engine:v1。
将模型包文件夹拷贝到本地机器,假设模型包文件夹名字为model。
在模型包文件夹的同级目录下验证如下命令拉起服务:

docker run --user 1000:100 -p 8080:8080 -v model:/home/mind/model    custom_engine:v1

该指令无法完全模拟线上,主要是由于-v挂载进去的目录是root权限。在线上,模型文件从OBS下载到/home/mind/model目录之后,文件owner将统一修改为ma-user。

在本地机器上启动另一个终端,执行以下验证指令,得到符合预期的推理结果。

curl https://127.0.0.1:8080/${推理服务的请求路径}

推理部署示例

本节将详细说明以自定义引擎方式创建AI应用的步骤。

创建AI应用并查看AI应用详情

登录ModelArts管理控制台,进入“AI应用管理>AI应用”页面中,单击“创建AI应用”,进入AI应用创建页面,设置相关参数如下:

元模型来源:选择“从对象存储服务(OBS)中选择”。
选择元模型:从OBS中选择一个模型包。
AI引擎:选择“Custom”。
引擎包:从容器镜像中选择一个镜像。

其他参数保持默认值。

单击“立即创建”,跳转到AI应用列表页,查看AI应用状态,当状态变为“正常”,AI应用创建成功。

图1 创建AI应用

单击AI应用名称,进入AI应用详情页面,查看AI应用详情信息。

图2 查看AI应用详情

部署服务并查看详情

在AI应用详情页面,单击右上角“部署>在线服务”,进入服务部署页面,AI应用和版本默认选中,选择合适的“计算节点规格”,其他参数可保持默认值,单击“下一步”,跳转至服务列表页,当服务状态变为“运行中”,服务部署成功。

图3 部署服务

单击服务名称,进入服务详情页面,查看服务详情信息,单击“日志”页签,查看服务日志信息。

图4 查看服务日志信息

服务预测

在服务详情页面,单击“预测”页签,进行服务预测。

图5 服务预测

父主题: 推理部署

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家