在Notebook中通过Dockerfile从0制作自定义镜像
场景说明
本案例将基于ModelArts提供的PyTorch预置镜像,并借助ModelArts命令行工具,通过加载镜像构建模板并修改Dockerfile,构建出一个新镜像,最后注册后在Notebook使用。
操作流程
- 创建Notebook。
- 在Notebook中制作自定义镜像。
- 注册镜像到ModelArts。
- 创建Notebook并验证新镜像。
创建Notebook
- 登录ModelArts控制台,进入“开发空间 > Notebook”,单击“创建”,进入创建Notebook页面。“公共镜像”选择“PyTorch”的,其他参数默认。具体操作请参考创建Notebook实例(默认页面)。
- 创建完成后Notebook的状态为“运行中”,单击“操作列”的“打开”,自动进入JupyterLab界面,打开Terminal。
在Notebook中制作自定义镜像
- 首先配置鉴权信息,指定profile,根据提示输入账号、用户名及密码。鉴权更多信息请查看配置登录信息。
ma-cli configure --auth PWD -P xxx
- 执行env|grep -i CURRENT_IMAGE_NAME命令查询当前实例所使用的镜像。
- 制作新镜像。
- 获取上步查询的基础镜像的SWR地址。
CURRENT_IMAGE_NAME=swr.ap-southeast-1.myhuaweicloud.com/atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e
- 加载镜像构建模板。
执行ma-cli image get-template命令查询镜像模板。
然后执行ma-cli image add-template命令将镜像模板加载到指定文件夹下,默认路径为当前命令所在的路径。例如:加载upgrade_current_notebook_apt_packages镜像构建模板。
ma-cli image add-template upgrade_current_notebook_apt_packages
- 修改Dockerfile。
本例的Dockerfile将基于PyTorch基础镜像pytorch1.8-cuda10.2-cudnn7-ubuntu18.04进行改造,加载镜像模板upgrade_current_notebook_apt_packages,升级gcc和g++。
加载镜像模板后,Dockerfile文件自动加载,在“.ma/upgrade_current_notebook_apt_packages”路径下,双击Dockerfile文件打开,内容参考如下,根据实际需求修改:
FROM swr.ap-southeast-1.myhuaweicloud.com/atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e # Set proxy to download internet resources ENV HTTP_PROXY=http://proxy.modelarts.com:80 \ http_proxy=http://proxy.modelarts.com:80 \ HTTPS_PROXY=http://proxy.modelarts.com:80 \ https_proxy=http://proxy.modelarts.com:80 USER root # Config apt source which can accelerate the apt package download speed. Also install ffmpeg and gcc-8 in root mode RUN cp -f /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ apt update && \ apt -y install ffmpeg && \ apt install -y --no-install-recommends gcc-8 g++-8 && apt-get autoremove -y && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 # ModelArts requires ma-user as the default user to start image USER ma-user
- 获取上步查询的基础镜像的SWR地址。
注册新镜像
构建完成后,将新镜像注册到ModelArts镜像管理服务中,进而能够在ModelArts中使用该镜像。
有两种方式来注册镜像。
- 方式一:使用ma-cli image register命令来注册镜像。注册命令会返回注册好的镜像信息,包括镜像id,name等,如下图所示。
ma-cli image register --swr-path=swr.ap-southeast-1.myhuaweicloud.com/notebook-test/my_image:0.0.1 -P XXX
图1 注册镜像 - 方式二:在ModelArts Console上注册镜像
登录ModelArts控制台,在左侧导航栏选择“镜像管理”,进入镜像管理页面。
- 单击“注册镜像”。请将完整的SWR地址复制到这里即可,或单击
可直接从SWR选择自有镜像进行注册。
- “架构”和“类型”和“规格”请根据实际情况选择,与镜像源保持一致。
- 单击“注册镜像”。请将完整的SWR地址复制到这里即可,或单击
创建Notebook并使用
镜像注册成功后,即可在ModelArts控制台的“开发空间 > Notebook”页面,创建开发环境时选择该自定义镜像。