模型推理自定义镜像在线服务部署全流程教程readme

模型推理自定义镜像在线服务部署全流程教程

准备一个基础的自定义镜像

  1. 制作能提供推理服务的镜像

    1. 文件结构
      Dockerfile
      CANN包
      deploy_infrence
      ----service.py
      ----opt_caption
      --------infrence_service.py
      --------opt_caption_graph.mindir
      --------vocab.json

    2. 文件准备
      Dockerfile 文件:
      CANN包:参考用户手册下载需要的版本
      service.py 文件
      infrence_service.py文件
      caption模型文件:opt_caption_graph.mindir
      码表:vocab.json

1.2 镜像编译

将Dockerfile,CANN包和model文件夹放在同一级目录,使用如下命令编译镜像:

docker build -t test_deploy:0.0.1 . # test_deploy为镜像名,0.0.1为版本号,教程后续均以此镜像为例展示文件内容

1.3 镜像上传

将刚才编译好的镜像打包上传到容器镜像服务(SWR)。

  1. 修改上传服务器的配置

    • 修改 /etc/hosts,增加如下内容:(注:*.*.*.*是对应的IP地址)

      *.*.*.* swr.cn-central-221.ovaijisuan.com
      
    • 修改 /etc/docker/daemon.json,具体内容如下(如没有此文件需手动创建):

      {
          "insecure-registries": [
              "swr.cn-central-221.ovaijisuan.com"
          ]
      }
      
    • 重启docker让配置生效

      systemctl daemon-reload 
      systemctl restart docker
      
  2. 获取登录仓库的命令

    • 云资源->ModelArts->镜像服务控制台->组织管理->创建组织->输入组织名称(比如使用用户名作为组织名称)
    • 云资源->ModelArts->镜像服务控制台->我的镜像->右上角客户端上传->点击step2 “生成临时登录指令” ->复制到宿主机(服务器)上执行即可登录
  3. 上传镜像

    sudo docker tag test_deploy:0.0.1 swr.cn-central-221.ovaijisuan.com/组织名称/test_deploy:0.0.1
    sudo docker push swr.cn-central-221.ovaijisuan.com/组织名称/test_deploy:0.0.1
    

    上传成功后可以在 我的镜像 - 自有镜像 下查看到刚才上传的镜像。

2. 拉起服务

进入 云资源 -> ModelArts -> ModelArts控制台,以下操作均在该控制台进行。

2.1 导入模型

  1. 进入 模型管理-> 模型 -> 导入

  2. 在导入模型界面中

    • 自行指定模型名称,版本等信息。

    • 对于 元模型来源 选项,选择 从容器镜像中选择,填入 容器镜像所在的路径 如下,也可以直接点击右边文件夹符号选择刚才上传的镜像。若无 容器调用接口 配置项,说明当前版本ModelArts不支持自定义模型启动的协议和端口号,则构建的自定义镜像必须使用http协议

    swr.cn-central-221.ovaijisuan.com/组织名称/test_deploy:0.0.1
    
    • 对于 配置文件 选项,点击 在线编辑,填入如下配置文件内容,点击文件编辑框右上角保存。若当前版本ModelArts不支持自定义模型启动的协议和端口号,则无需指定protocol字段
    {
        "model_algorithm": "lenet",
        "model_type": "Image",
        "apis": [
            
            {
                "protocol": "https",
                "url": "/health",
                "method": "get",
                "request": {
                    "Content-type": "application/json"
                },
                "response": {
                    "Content-type": "application/json",
                    "data": {
                        "type": "object",
                        "properties": {
                            "health": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            {
                "protocol": "https",
                "url": "/infer/image",
                "method": "post",
                "request": {
                    "Content-type": "multipart/form-data",
                    "data": {
                        "type": "object",
                        "properties": {
                            "file": {
                                "type": "file"
                            }
                        }
                    }
                },
                "response": {
                    "Content-type": "application/json",
                    "data": {
                        "type": "object",
                        "properties": {
                            "result": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        ]
    }
    

最后点击界面右下角 立即创建 即可成功导入模型,在我的模型界面中可以看到刚才创建好的模型。

2.2 部署服务

  1. 进入 部署上线 -> 在线服务 -> 部署

  2. 在部署界面中:

    • 自行指定服务名称等信息,资源地为公共资源地
    • 对于 选择模型及配置 选项,选择刚才创建好的模型
    • 点击右下角提交

2.3 获取相关接口

  1. 进入 部署上线 -> 在线服务,选择刚才部署的服务

  2. 点击 调用指南 即可获取 API接口地址(用于推理请求)

  3. 点击 右上角用户名,进入 我的凭证 -> 记录【IAM用户名】;【帐号名】,即可获取账户信息用于认证

3. 验证接口

所有请求使用Postman进行测试,请安装好对应软件

3.1请求Token

  1. 修改本地host文件,加入 **.**.**.** iam-pub.cn-central-221.huaweicloud.com 避免DNS问题

  2. 构造请求
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDKGSWAM-1657011322048)(images/get_token.png)]

    • 链接: https://iam-pub.cn-central-221.ovaijisuan.com/v3/auth/tokens
    • 请求body内容:
      {
          "auth": {
              "identity": {
                  "methods": [
                      "password"
                  ],
                  "password": {
                      "user": {
                          "name": "【IAM用户名】",
                          "password": "【IAM用户密码】",
                          "domain": {
                              "name": "【帐号名】"
                          }
                      }
                  }
              },
              "scope": {
                  "project": {
                      "name": "cn-central-221"
                  }
              }
          }
      }
      
  3. 拿到Token
    在返回体的Header中,X-Subject-Token字段的值即为Token,一般生效期为24小时,具体请参阅:ModelArts API

3.2开始验证(默认请求头请保留)

1.  `/infer/image` 接口,按要求在Postman中填入如下请求:
    +   请求方式: POST
    +   URL: API接口地址/infer/image
    +   请求头(Header):
        -   X-Auth-Token:"【Token】"
        -   Content-Type: "multipart/form-data"
    +   请求体(body/form-data)
        -   file: 选择文件
    +   注意:file字段需要选择为文件 ![infer_image](images/infer_image.png)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值