更新时间:2025-03-04 gmt 08:00

在notebook中通过dockerfile从0制作自定义镜像-九游平台

场景说明

本案例将基于modelarts提供的mindspore预置镜像,并借助modelarts命令行工具(请参考ma-cli镜像构建命令介绍),通过加载镜像构建模板并修改dockerfile,构建出一个新镜像,最后注册后在notebook使用。

操作流程

  1. 创建notebook。
  2. 在notebook中制作自定义镜像。
  3. 注册镜像到modelarts。
  4. 创建notebook并验证新镜像。

创建notebook

  1. 登录modelarts控制台,进入“开发空间>notebook”,单击“创建”,进入创建notebook页面。“公共镜像”选择“mindspore”的,其他参数默认。具体操作请参考创建notebook实例
  2. 创建完成后notebook的状态为“运行中”,单击“操作列”“打开”,自动进入jupyterlab界面,打开terminal。

在notebook中制作自定义镜像

  1. 首先配置鉴权信息,指定profile,根据提示输入账号、用户名及密码。鉴权更多信息请查看配置登录信息
    ma-cli configure --auth pwd -p xxx

  2. 执行env|grep -i current_image_name命令查询当前实例所使用的镜像。

  1. 制作新镜像。
    1. 获取上步查询的基础镜像的swr地址。

      current_image_name=swr.cn-north-4.myhuaweicloud.com/atelier/mindspore_1_7_0:mindspore_1.7.0-cann_5.1.0-py_3.7-euler_2.8.3-aarch64-d910-20220906

    1. 加载镜像构建模板。

      执行ma-cli image get-template命令查询镜像模板。

      然后执行ma-cli image add-template命令将镜像模板加载到指定文件夹下,默认路径为当前命令所在的路径。例如:加载upgrade_ascend_mindspore_1.8.1_and_cann_5.1.rc2镜像构建模板。

      ma-cli image add-template upgrade_ascend_mindspore_1.8.1_and_cann_5.1.rc2

    2. 修改dockerfile。

      本例的dockerfile将基于mindspore基础镜像mindspore1.7.0-cann5.1.0-py3.7-euler2.8.3,升级到cann 5.1.rc2和mindspore1.8.1,构建一个面向ai任务的镜像。

      加载镜像模板后,dockerfile文件自动加载,在“.ma/upgrade_ascend_mindspore_1.8.1_and_cann_5.1.rc2”路径下,双击dockerfile文件打开,内容参考如下,根据实际需求修改:

      #the following uses mindspore-1.7 as an example, which can be replaced with the current notebook image.(此处为举例,请以notebook使用的镜像为准)
      from swr.cn-north-4.myhuaweicloud.com/atelier/mindspore_1_7_0:mindspore_1.7.0-cann_5.1.0-py_3.7-euler_2.8.3-aarch64-d910-20220715093657-9446c6a
      arg cann=ascend-cann-toolkit_5.1.rc2_linux-aarch64.run
      # set proxy to download internet resources(不同局点的notebook代理可能不同,此处为举例,请以notebook所在局点的实际代理为准,可以在jupyterlab的terminal中,通过env|grep -i proxy命令查看)
      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
      # download cann-5.1.rc2 and install cann package, which is a dependency package for mindspore-1.8.1.
      # for details about the mapping between mindpore and cann and the download address of cann, see the official website of mindpore.
      run wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/cann/cann 5.1.rc2/${cann} -p /tmp && \
          chmod  x /tmp/${cann} && \
          sh -x /tmp/${cann} --quiet --full && \
          rm -f /tmp/${cann}
      env pythonpath=/usr/local/ascend/tfplugin/latest/python/site-packages:/usr/local/ascend/ascend-toolkit/latest/python/site-packages:/usr/local/ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe:/usr/local/seccomponent/lib
      user ma-user
      # update mindspore version in "mindspore" conda env by using pip.
      run source /home/ma-user/anaconda3/bin/activate mindspore && \
          pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.8.1/mindspore/ascend/aarch64/mindspore_ascend-1.8.1-cp37-cp37m-linux_aarch64.whl --upgrade && \
          echo "successfully install mindspore 1.8.1"
      ## [optional] uncomment to set default conda env
      #env default_conda_env_name=/home/ma-user/anaconda3/envs/mindspore

      如果使用的基础镜像不是modelarts提供的公共镜像,需要在dockerfile文件中添加modelarts指定的用户和用户组,具体可参考dockerfile文件(基础镜像为非modelarts提供)

    1. 构建镜像

      使用ma-cli image build命令从dockerfile构建出一个新镜像。命令更多信息请参考镜像构建命令

      ma-cli image build .ma/upgrade_ascend_mindspore_1.8.1_and_cann_5.1.rc2/dockerfile -swr notebook-test/my_image:0.0.1 -p xxx

      其中“.ma/upgrade_ascend_mindspore_1.8.1_and_cann_5.1.rc2/dockerfile”为dockerfile文件所在路径,“notebook-test/my_image:0.0.1”为构建的新镜像的swr路径。“xxx”为鉴权时指定的profile。

注册新镜像

构建完成后,将新镜像注册到modelarts镜像管理服务中,进而能够在modelarts中使用该镜像。

有两种方式来注册镜像。

  • 方式一:使用ma-cli image register命令来注册镜像。注册命令会返回注册好的镜像信息,包括镜像id,name等,如下图所示。该命令的更多信息可参考镜像构建命令
    ma-cli image register --swr-path=swr.cn-north-4.myhuaweicloud.com/notebook-test/my_image:0.0.1 -a aarch64 -rs ascend -p xxx

    -a指定该镜像支持arm架构,-rs指定镜像支持ascend芯片,“xxx”为鉴权时指定的profile。

    图1 注册镜像
  • 方式二:在modelarts console上注册镜像

    登录modelarts控制台,在左侧导航栏选择“镜像管理”,进入镜像管理页面。

    1. 单击“注册镜像”。请将完整的swr地址复制到这里即可,或单击可直接从swr选择自有镜像进行注册。
    2. “架构”“类型”根据实际情况选择,与镜像源保持一致。

创建notebook并使用

  1. 镜像注册成功后,即可在modelarts控制台的“开发环境 > notebook”页面,创建开发环境时选择该自定义镜像。
  2. 打开开发环境。
    图2 打开开发环境
  3. 单击图中的mindspore,即可创建一个ipynb文件,导入mindspore,可以看到安装的mindspore 1.8.1已经能够使用。
    图3 创建一个ipynb文件
  4. 再打开一个terminal,查看cann的版本,是dockerfile中安装的版本。
    图4 查看cann版本

相关文档

网站地图