ModelArts本地进行GPU自定义镜像构建
1 配置docker环境
Ubuntu系统参考https://www.runoob.com/docker/ubuntu-docker-install.html
2 配置nvidia-docker
https://github.com/NVIDIA/nvidia-docker
3 本地登录SWR服务
进入SWR服务
获取登录指令
复制登录指令,在本地docker环境中输入,完成了SWR登录
4 创建SWR组织
点击创建组织,创建一个全局唯一的组织,例如组织名称为myhuaweicloudtest,记住这个名称
5 从SWR上获取自定义镜像基础镜像
不同版本cuda镜像地址https://support.huaweicloud.cn/engineers-modelarts/modelarts_23_0217.html
- swr.cn-north-1.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.0-cp36-ubuntu18.04-x86:1.1
- swr.cn-north-1.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.1-cp36-ubuntu18.04-x86:1.1
- swr.cn-north-1.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.2-cp36-ubuntu18.04-x86:1.1
minicoda安装在了/root下面,里面自带moxing
假如我要获取cuda10.1的镜像,我可以使用如下命令
docker pull swr.cn-north-4.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.1-cp36-ubuntu18.04-x86:1.1 |
6 构建自定义镜像
以cuda10.1为例,假如我有本地的机器有个目录,目录路径为”/home/huaweicloud/install/install.sh”,需要执行这个脚本来完成依赖软件的安装。
执行如下命令,启动镜像,并将/home/huaweicloud/install 挂载到容器的/home/work/denpendency目录下
docker run -gpus all -u 0 -v /home/huaweicloud/install:/home/work/denpendency -it swr.cn-north-4.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.1-cp36-ubuntu18.04-x86:1.1 bash |
有关-gpus的参数参考https://github.com/NVIDIA/nvidia-docker
启动容器以后能够看到/home/work/denpendency目录和/home/huaweicloud/install是同一个目录,同时看到输入的命令行如下
其中的docker实例的id就是6c763d053466,记住这个id
对镜像进行构建,例如安装python安装包,或者apt-get安装,和本地进行linux环境构建相同,构建成功后。
………………..
当镜像构建完成以后,可以另起一个terminal执行下面的命令完成docker镜像的构建,这里以6c763d053466这个实例为例
执行:
docker commit 6c763d053466 swr.cn-north-4.myhuaweicloud.com/myhuaweicloudtest/huaweicloud-custom-image:1.0.0 |
swr.cn-north-4.myhuaweicloud.com是北京四SWR的地址,北京一的地址为swr.cn-north-1.myhuaweicloud.com
myhuaweicloudtest是步骤3创建的组织名称
huaweicloud-custom-image是自定义的镜像名称,可以根据自己的喜好命名
1.0.0是此镜像的版本号,可以根据自己喜好命名
自定义镜像的一些约束参考
https://support.huaweicloud.cn/engineers-modelarts/modelarts_23_0217.html
ubuntu镜像源通过如下地址更新为华为ubuntu源
https://mirrors.huaweicloud.cn/
官方文档
https://support.huaweicloud.cn/engineers-modelarts/modelarts_23_0088.html
7 提交自定义镜像到SWR
重复步骤3,登录SWR
将自定义镜像推到SWR中执行
docker push swr.cn-north-4.myhuaweicloud.com/myhuaweicloudtest/huaweicloud-custom-image:1.0.0 |
经过一定时间的等待,镜像就上传到SWR中了
使用自定义镜像创建训练作业
8 将本地代码迁移到云上
8.1 适配代码用引用的路径
使用Modelarts创建训练作业时,需要先将代码整体传到OBS上作为存储介质,训练作业运行时,程序会将配置的OBS目录整体下载到容器中,然后执行入口脚本实现训练作业的运行。
假如我在OBS创的桶名为huaweicloud-test,目录名称为work,我本地工程存储在myproject目录下面。那么我可以通过obs提供的工具obsutil实现将整个目录上传到obs,工具连接如下
https://support.huaweicloud.cn/utiltg-obs/obs_11_0001.html
训练作业在运行时,myproject目录会被下载到/home/work/user-job-dir/myproject,因此如果原来的工程中有一些硬编码的绝对路径,那么需要更改为/home/work/user-job-dir/myproject
8.2 适配代码中的PYTHONPATH
PYTHONPATH同时也需要动态的修改。
myproject的目录原始结构如下,3rd目录为PYTHONPATH目录,main.py为入口脚本
可以在myproject目录下面创建一个start.py内容如下,将start.py上传到obs的myproject目录下
import os os.system(‘export PYTHONPATH=/home/work/user-job-dir/myproject/3rd;python /home/work/user-job-dir/myproject/yolo_v4/main.py’) |
运行命令设置为 bash /home/work/run_train.sh python /home/work/user-job-dir/myproject/start.py
9 通过自定义镜像创建训练作业
https://support.huaweicloud.cn/engineers-modelarts/modelarts_23_0087.html
注意事项:
1.镜像中的run_train.sh不要更改,此文件包含了代码下载的逻辑。
2.如果要在cuda10.1镜像中安装cuda10,新版本libcudnn安装后也要把老版本的libcudnn删除,删除方法通过 find / -name “libcudnn*” 找到libcudnn文件,然后手动删除。
3.如果cuda版本由10.1变为10,那么pytorch和tensorflow这类深度训练框架需要重新进行安装。
- 点赞
- 收藏
- 关注作者
评论(0)