自定义镜像使用场景
在AI业务开发以及运行的过程中,一般都会有复杂的环境依赖需要进行调测并固化。面对开发中的开发环境的脆弱和多轨切换问题,在ModelArts的AI开发最佳实践中,通过容器镜像的方式将运行环境进行固化,以这种方式不仅能够进行依赖管理,而且可以方便的完成工作环境切换。配合ModelArts提供的云化容器资源使用,可以更加快速、高效的进行AI开发与模型实验的迭代等。
本章节会先介绍镜像相关概念,然后介绍预置镜像和自定义镜像使用场景,并且提供自定义镜像制作的相关指导。
概念解释
预置镜像:ModelArts提供的镜像,可以在创建Notebook/训练作业/模型时,直接选择ModelArts提供的镜像。
ModelArts提供的预置镜像分为两种:
- 统一镜像:适用创建Notebook/训练作业/模型,后续新上线的镜像都为统一镜像。对应章节ModelArts统一镜像列表。
- 各模块独有的镜像:仅适用单个模块(例如训练的预置镜像只能用于训练),此类镜像为ModelArts早期的镜像,后续会陆续下线。对应章节Notebook专属预置镜像列表、训练专属预置镜像列表、推理专属预置镜像列表。
自定义镜像:用户参照ModelArts镜像规范制作的镜像。
基础镜像:镜像制作的一个基本概念,先有基础镜像然后在此基础上做镜像。基础镜像可以是ModelArts预置镜像、第三方镜像。
自定义镜像功能关联服务介绍
- 容器镜像服务
容器镜像服务(Software Repository for Container,SWR)是一种支持镜像全生命周期管理的服务, 提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。您可以通过界面、社区CLI和原生API上传、下载和管理容器镜像。
您制作的自定义镜像需要上传至SWR服务。ModelArts开发环境、训练和创建模型使用的自定义镜像需要从SWR服务管理列表获取。
图1 获取镜像列表
- 对象存储服务
对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。
在使用ModelArts时存在与OBS的数据交互,您需要使用的数据可以存储至OBS。
- 弹性云服务器
弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,使用弹性云服务器。
在制作自定义镜像时,您可以在本地环境或者ECS上完成自定义镜像制作。
在您使用自定义镜像功能时,ModelArts可能需要访问您的容器镜像服务SWR、对象存储服务OBS等依赖服务,如果没有授权,这些功能将不能正常使用。建议您使用委托授权功能,将依赖服务操作权限委托给ModelArts服务,让ModelArts以您的身份使用依赖服务,代替您进行一些资源操作。详细操作参见使用委托授权。
ModelArts的预置镜像使用场景
ModelArts给用户提供了一组预置镜像,用户可以直接使用预置镜像创建Notebook实例,在实例中进行依赖安装与配置后,保存为自定义镜像,可直接用于ModelArts训练,而不需要做适配。同时也可以使用预置镜像直接提交训练作业、创建模型等。
ModelArts提供的预置镜像版本是依据用户反馈和版本稳定性决定的。当用户的功能开发基于ModelArts提供的版本能够满足的时候,比如用户开发基于MindSpore1.X,建议用户使用预置镜像,这些镜像经过充分的功能验证,并且已经预置了很多常用的安装包,用户无需花费过多的时间来配置环境即可使用。
ModelArts默认提供了一组预置镜像供开发使用,这些镜像有以下特点:
- 零配置,即开即用,面向特定的场景,将AI开发过程中常用的依赖环境进行固化,提供合适的软件、操作系统、网络等配置策略,通过在硬件上的充分测试,确保其兼容性和性能最合适。
- 方便自定义,预置镜像已经在SWR仓库中,通过对预置镜像的扩展完成自定义镜像注册。
- 安全可信,基于安全加固最佳实践,访问策略、用户权限划分、开发软件漏洞扫描、操作系统安全加固等方式,确保镜像使用的安全性。
ModelArts的自定义镜像使用场景
当用户对深度学习引擎、开发库有特殊需求场景的时候,预置镜像已经不能满足用户需求。ModelArts提供自定义镜像功能支持用户自定义运行引擎。
ModelArts底层采用容器技术,自定义镜像指的是用户自行制作容器镜像并在ModelArts上运行。自定义镜像功能支持自由文本形式的命令行参数和环境变量,灵活性比较高,便于支持任意计算引擎的作业启动需求。
在制作自定义镜像的时候,可以把ModelArts提供的预置镜像作为基础镜像,通过在Dockerfile中使用预置镜像的SWR地址来拉取预置镜像后进行改造。可在ModelArts预置镜像列表里获取镜像的SWR地址,参考ModelArts支持的预置镜像列表章节。
- 制作自定义镜像用于创建Notebook
当Notebook预置镜像不能满足需求时,用户可以制作自定义镜像。在镜像中自行安装与配置环境依赖软件及信息,并制作为自定义镜像,用于创建新的Notebook实例。同时也支持用户在Notebook中,基于已有镜像制作新的自定义镜像。
- 制作自定义镜像用于训练模型
如果您已经在本地完成模型开发或训练脚本的开发,且您使用的AI引擎是ModelArts不支持的框架。您可以制作自定义镜像,并上传至SWR服务。您可以在ModelArts使用此自定义镜像创建训练作业,使用ModelArts提供的资源训练模型。
- 制作自定义镜像用于推理
如果您使用了ModelArts不支持的AI引擎开发模型,可以通过制作自定义镜像,导入ModelArts创建为模型,并支持进行统一管理和部署为服务。
用户制作的自定义镜像,使用的场景不同,镜像规则也不同,具体如下:
- 通用规则:SWR镜像类型为“私有”时,才可以共享给他人,适用于开发环境、训练作业、模型。
- 开发环境:SWR镜像类型为“公开”时,其他用户才可以在ModelArts镜像管理页面注册使用。
- 训练作业:SWR镜像类型为“公开”时,在使用自定义镜像创建训练作业时,在“镜像”输入框内直接填写“组织名称/镜像名称:版本名称”即可。例如:公开镜像的SWR地址为“swr.cn-north-4.myhuaweicloud.com/test-image/tensorflow2_1_1:1.1.1”,则在创建训练作业的“镜像”输入框里内直接填“test-images/tensorflow2_1_1:1.1.1”。