凯发k8国际娱乐官网入口-k8凯发> ai开发平台modelarts> > > 从0-1制作自定义镜像并创建ai应用
更新时间:2023-11-14 gmt 08:00

从0-凯发k8国际娱乐官网入口

针对modelarts目前不支持的ai引擎,您可以针对该引擎构建自定义镜像,并将镜像导入modelarts,创建为ai应用。本文详细介绍如何使用自定义镜像完成ai应用的创建,并部署成在线服务。

操作流程如下:

  1. 本地构建镜像:在本地制作自定义镜像包,镜像包规范可参考。
  2. 本地验证镜像并上传镜像至swr服务:验证自定义镜像的api接口功能,无误后将自定义镜像上传至swr服务。
  3. 将自定义镜像创建为ai应用:将上传至swr服务的镜像导入modelarts的ai应用管理。
  4. 将ai应用部署为在线服务:将导入的模型部署上线。

本地构建镜像

以linux x86_x64架构的主机为例,您可以购买相同规格的ecs或者应用本地已有的主机进行自定义镜像的制作。

购买ecs服务器的具体操作请参考。镜像选择公共镜像,推荐使用ubuntu18.04的镜像。
图1 创建ecs服务器-选择x86架构的公共镜像
  1. 登录主机后,安装docker,可参考。也可执行以下命令安装docker。
    curl -fssl get.docker.com -o get-docker.sh
    sh get-docker.sh
  2. 获取基础镜像。本示例以ubuntu18.04为例。
    docker pull ubuntu:18.04
  3. 新建文件夹“self-define-images”,在该文件夹下编写自定义镜像的“dockerfile”文件和应用服务代码“test_app.py”。本样例代码中,应用服务代码采用了flask框架。
    文件结构如下所示
    self-define-images/
        --dockerfile
        --test_app.py
    • “dockerfile”
      from ubuntu:18.04
      # 配置华为云的源,安装 python、python3-pip 和 flask
      run cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \
        sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \
        sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \
        apt-get update && \
        apt-get install -y python3 python3-pip && \
        pip3 install  --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple  flask
      # 拷贝应用服务代码进镜像里面
      copy test_app.py /opt/test_app.py
      # 指定镜像的启动命令
      cmd python3  /opt/test_app.py
    • “test_app.py”
      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))
      # host must be "0.0.0.0", port must be 8080
      if __name__ == '__main__':
          app.run(host="0.0.0.0", port=8080)
  4. 进入“self-define-images”文件夹,执行以下命令构建自定义镜像“test:v1”。
    docker build -t test:v1 .
  5. 您可以使用“docker images”查看您构建的自定义镜像。

本地验证镜像并上传镜像至swr服务

  1. 在本地环境执行以下命令启动自定义镜像
    docker run -it -p 8080:8080 test:v1
    图2 启动自定义镜像
  2. 另开一个终端,执行以下命令验证自定义镜像的三个api接口功能。
    curl -x post -h "content-type: application/json" --data '{"name":"tom"}'  127.0.0.1:8080/
    curl -x post -h "content-type: application/json" --data '{"name":"tom"}' 127.0.0.1:8080/greet
    curl -x get 127.0.0.1:8080/goodbye

    如果验证自定义镜像功能成功,结果如下图所示。

    图3 校验接口
  1. 上传自定义镜像至swr服务。上传镜像的详细操作可参考。
  2. 完成自定义镜像上传后,您可以在“容器镜像服务>我的镜像>自有镜像”列表中看到已上传镜像。
    图4 上传镜像列表

将自定义镜像创建为ai应用

参考导入元模型,您需要特别关注以下参数:
  • 元模型来源:选择“从容器镜像中选择”
    • 容器镜像所在的路径:选择已制作好的自有镜像
      图5 选择已制作好的自有镜像
    • 容器调用接口:指定模型启动的协议和端口号。请确保协议和端口号与自定义镜像中提供的协议和端口号保持一致。
    • 镜像复制:选填,选择是否将容器镜像中的模型镜像复制到modelarts中。
    • 健康检查:选填,用于指定模型的健康检查。仅当自定义镜像中配置了健康检查接口,才能配置“健康检查”,否则会导致ai应用创建失败。
  • apis定义:选填,用于编辑自定义镜像的apis定义。模型apis定义需要遵循modelarts的填写规范,参见。
    本样例的配置文件如下所示:
    [{
            "url": "/",
            "method": "post",
            "request": {
                "content-type": "application/json"
            },
            "response": {
                "content-type": "application/json"
            }
        },
    {
            "url": "/greet",
            "method": "post",
            "request": {
                "content-type": "application/json"
            },
            "response": {
                "content-type": "application/json"
            }
        },
    {
            "url": "/goodbye",
            "method": "get",
            "request": {
                "content-type": "application/json"
            },
            "response": {
                "content-type": "application/json"
            }
        }
    ]

将ai应用部署为在线服务

  1. 参考部署为在线服务将ai应用部署为在线服务。
  2. 在线服务创建成功后,您可以在服务详情页查看服务详情。
    图6 调用指南
  3. 您可以通过“预测”页签访问在线服务。
    图7 访问在线服务
分享:
网站地图