文档首页 > > AI工程师用户指南> 使用自定义镜像> 自定义镜像简介

自定义镜像简介

分享
更新时间: 2019/11/01 GMT+08:00

ModelArts提供了多种预置引擎,但是当用户对深度学习引擎、开发库有特殊需求的场景的时候,预置AI引擎已经不能满足用户需求。此时用户可以使用ModelArts自定义镜像这个功能来使用自定义运行引擎。

ModelArts底层采用容器技术,自定义镜像指的是用户自行制作容器镜像并在ModelArts上运行。自定义镜像功能支持自由文本形式的命令行参数和环境变量,因此灵活性比较高,便于支持任意计算引擎的作业启动需求。

制作自定义镜像还需要使用的华为云服务有:容器镜像服务SWR、对象存储服务OBS、弹性云服务器ECS。

训练作业自定义镜像规范

  • 自定义镜像必须基于ModelArts官方提供的基础镜像。
  • 自定义镜像中不能包含恶意代码。
  • 基础镜像中的部分内容不能改变,包括“/bin”“/sbin”“/usr”“/lib(64)”下的所有文件,“/etc”下的部分重要配置文件,以及“$HOME”下的ModelArts小工具。
  • 不可以新增属主为“root”且权限包含“setuid”“setgid”位的文件。
  • 自定义镜像大小不能超过9.5GB。
  • 对外服务端口

    镜像的对外服务端口需要为8080,访问PATH需要为“/”,当镜像启动时可以直接访问。下面是mnist镜像的访问示例,该镜像内含mnist数据集训练的模型,可以识别手写数字。

    • 请求示例
      curl -X POST \ https://{listen_ip}}:8080/ \ -F images=@seven.jpg
    • 返回示例
      {"mnist_result": 7}
  • 健康检查接口

    自定义镜像需要提供健康检查接口供ModelArts调用。健康检查接口示例如下。

    • URI
      GET /health
    • 请求示例
      curl -X GET \ http://{listen_ip}}:8080/health
    • 响应示例
      {"health": "true"}
    • 状态码
      表1 状态码

      状态码

      编码

      状态码说明

      200

      OK

      请求成功

  • 日志文件输出

    为保证日志内容可以正常显示,日志信息需要打印到标准输出。

  • 镜像启动入口

    如果需要部署批量服务,镜像的启动入口文件需要为“/home/run.sh”,采用CMD设置默认启动路径,例如Dockerfile如下:

    CMD /bin/sh /home/run.sh
  • 镜像依赖组件

    如果需要部署批量服务,镜像内需要安装python、jre/jdk、zip等组件包。

模型管理自定义镜像规范

  • 自定义镜像中不能包含恶意代码。
  • 镜像对外端口

    镜像的对外服务端口需要为8080,推理接口需与config.json文件中apis定义的接口一致“”,当镜像启动时可以直接访问。下面是mnist镜像的访问示例,该镜像内含mnist数据集训练的模型,可以识别手写数字。

    • 请求示例curl -X POST \ http://{listen_ip}}:8080/ \ -F images=@seven.jpg
    • 返回示例
      {"mnist_result": 7}
  • 健康检查端口

    自定义镜像需要提供健康检查接口供ModelArts调用,在config.json文件中配置,参见模型配置文件编写说明。健康检查接口示例如下。

    • URI
      GET /health
    • 请求示例curl -X GET \ http://{listen_ip}}:8080/health
    • 响应示例
      {"health": "true"}
    • 状态码
      表2 状态码

      状态码

      编码

      状态码说明

      200

      OK

      请求成功

  • 日志文件输出

    为保证日志内容可以正常显示,日志信息需要打印到标准输出。

  • 镜像启动入口

    如果需要部署批量服务,镜像的启动入口文件需要为“/home/run.sh”,采用CMD设置默认启动路径,例如Dockerfile如下:

    CMD /bin/sh /home/run.sh
  • 镜像依赖组件

    如果需要部署批量服务,镜像内需要安装python、jre/jdk、zip等组件包。

基础镜像包

基础镜像中有一些必要的工具,用户需要基于ModelArts官方提供的基础镜像来制作自定义镜像。

ModelArts会不断更新基础镜像,基础镜像更新后,对于兼容性更新,用户还可以继续使用旧的镜像;对于不兼容性更新,基于旧版本制作的自定义镜像将不能在ModelArts上运行,但已经审核过的自定义镜像可以继续使用。

当用户发现自定义镜像审核不通过,并且审核日志中报镜像不匹配的时候,建议更新基础镜像。

基础镜像基础组件如下所示,各个基础镜像包含的其他公共库,请参见Dockerfile

表3 基础镜像提供的工具列表

基础镜像工具

说明

run_train.sh

训练启动脚本,调用加解密工具,下载代码目录,日志输出,执行训练命令。

dls-key-client

dls-decryptor

加解密工具。

dls-dns-fixer

DNS工具。

dls-pipe

日志工具。

dls-downloader

OBS下载工具。

ip-mapper

IP转换工具。

ModelArts提供的基础镜像如下所示,请根据个人需求选择对应的GPU、CUDA、MoXing和Python版本。

  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-cpu-base:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda92-base:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda9-base:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda8-base:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-cpu-inner-moxing-cp27:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda8-inner-moxing-cp27:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda9-inner-moxing-cp27:1.2
  • swr.cn-north-1.myhuaweicloud.com/eiwizard/custom-gpu-cuda9-inner-moxing-cp36:1.2
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区