Notebook创建的环境,其实就是一个Docker,在这个docker里面我们可以利用青岛AICC的NPU资源来做一些我们做需要的任务。但是当这个Notebook的环境满足不了我们任务的需求后怎么办呢?如果是在本地的服务器,我们可以直接安装我们所需要的环境,但是在这个docker里面我们是没有root权限的,关闭root权限的目的是以防操作失误使环境宕机,出现无法启动的情况,进而造成数据和文件的丢失。这种情况下,我们就可以选择自定义Notebook所使用的镜像,来实现所需要的依赖环境。
当然,一般不需要root的类似于python库是可以直接pip安装的,但是重启docker之后,由于python的lib库是在work目录外,所以会被清除,再次使用需要重新安装。
获取镜像
自定义镜像的第一步,首先是获取镜像,我们昇腾镜像仓库,昇腾开放Docker镜像仓库,提供昇腾软件Docker镜像,支持用户快速部署昇腾基础软件和应用软件,仓库地址: https://ascendhub.huawei.com/#/index

比如,您需要tensorflow或者pytorch的镜像,可以直接从==训练镜像==这里获取,获取后需要现在本地把镜像下载并且run起来,然后用
adduser命令来创建ma-user用户,然后再ma-user用户目录下面创建work文件夹用来保存长期文件,然后commit保存镜像准备上传。
需要注意一点目前,我们Notebook的驱动固件的版本是22.0.0.3,选择镜像的时候注意看好镜像的版本,否则会出现版本不兼容的问题。

自定义镜像小tips
在Notebook管理页面,选择所需要的镜像,点击后面蓝色的更多,有个保存镜像的功能,可以将正常运行的Notebook镜像保存到本地,之后将docker拉起来可以对其打补丁
,然后将docker镜像commit保存之后上传。

使用这种方式的时候,将docker跑起来的时候会出现这个问题,如下图

这是因为这个镜像在启动的时候需要依赖tini这个文件。这个时候直接在run命令后面加上`--entrypoint=bash` 就可以了。
上传镜像
首先来到青岛AICC控制台,选择云资源下面的Modelarts,进入Modelarts控制台,选择镜像服务控制台。

然后再镜像服务控制台的右上角选择创建组织,来创建保存镜像的组织。

然后点击上传镜像。
我们这里提供了两种镜像上传的方式:
- 我们支持docker save后的tar包上传
- 我们也支持通过docker push命令上传

来到这个页面之后,首先选择保存镜像的组织,然后选择上传方式,上传镜像。tar包上传的方式就不过多介绍,直接选择本地文件上传即可。我们这里来介绍一下使用客户端上传的方式,其实就是通过docker 命令操作用push的方式上传到我们的Notebook上面,根据一下提示命令操作即可。

镜像注册
上传后的镜像在创建Notebook的时候发现并不能直接使用,是因为上传完的镜像需要注册进ModelArts里面的。我们来到Hcso的Modelarts操作台,选择镜像管理功能。

点击注册镜像,将刚刚上传的镜像进行注册。

注册之后就可以在自定义镜像选项下面创建使用了
