裸机使用容器镜像训练迁移到ModelArts环境训练的方法

网友投稿 553 2022-05-29

容器使用的背景知识:

容器使用的教程非常多,这个文档(https://yeasy.gitbook.io/docker_practice/image/build)写的还是比较全面的,建议详细了解红框部分的内容。

另外,在我们做容器调试的时候,可能会需要将宿主机的文件拷贝到容器里。具体做法可以参考博客:https://blog.csdn.net/dongdong9223/article/details/71425077

另外,调试可能会用到其他容器命令。详细的容器命令列表,可以参考:https://yeasy.gitbook.io/docker_practice/appendix/command/docker#ke-hu-duan-ming-ling

云上镜像仓库的使用及ModelArts训练任务创建:

可用参考ModelArts的推荐实践:https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0071.html

裸机使用容器镜像训练迁移到ModelArts环境训练的方法

裸机与ModelArts上使用的区别和改造方案:

自定义容器在ModelArts上训练和本地训练的区别如下图:

实际上带来的工作量就是我们需要完成OBS和容器环境的数据迁移工作。增加了和OBS交互工作的整个训练流程如下:

训练数据、代码、模型下载。(本地使用硬盘挂载或者docker cp,在ModelArts上使用OBSutil)

启动脚本(用法无切换,一般就是到达执行目录,然后python xxx.py)

训练结果、日志、checkpoints上传。(本地使用硬盘挂载或者docker cp,在ModelArts上使用OBSutil)

那么,其实我们可以用一个run脚本把这个流程包起来。run.sh脚本的内容可以参考:

#!/bin/bash ##安装obsutil,完成AKSK配置。建议在基础镜像里做好 #mkdir -p /opt && cd /opt #wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz #tar -xzvf obsutil_linux_amd64.tar.gz && mv obsutil_linux_amd64_*/ utils #alias obsutil='/opt/utils/obsutil' #obsutil config -i=${AK} -k=${SK} -e=obs.cn-north-4.myhuaweicloud.com ##训练输入拷贝到容器镜像本地 #/cache目录的容量较大 DATA_URL=`echo ${DLS_DATA_URL} | sed /s/s3/obs/` mkdir –p /cache/data /opt/utils/obsutil cp –r –f ${DATA_URL} /cache/data ##执行训练任务 #涉及conda env切换时 source /xxxxx/etc/profile.d/conda.sh conda activate xxxenv conda info --envs #启动训练脚本 cd xxxx python xxx.py ##拷贝输出结果到OBS目录 TRAIN_URL=`echo ${DLS_TRAIN_URL} | sed /s/s3/obs/` /opt/utils/obsutil cp –r –f /cache/out ${TRAIN_URL}

我们把run.sh放到/opt目录,到实际启动任务的时候,使用以下命令启动任务即可:

bash –x /opt/run.sh

把run.sh放到/root目录,我们可以考虑在原镜像里增加一层,这一层就只是COPY这个run脚本。我们可以在基础镜像里顺便把obsutil安装、配置好。参考如下dockerfile

FROM $your_docker_image_tag RUN mkdir -p /opt && cd /opt && \ wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz && \ tar -xzvf obsutil_linux_amd64.tar.gz && mv obsutil_linux_amd64_*/ utils && \ /opt/utils/obsutil config -i=${AK} -k=${SK} -e=obs.cn-north-4.myhuaweicloud.com COPY run.sh /opt/run.sh

注意,ModelArts的容器会有一个/cache目录,这个目录挂载的硬盘容量最大。建议下载数据和中间数据都存到这个目录中,防止因硬盘占满导致任务失败。

这里我们使用了obsutil作为和OBS交互的工具,如何在本机安装obsutil可以参考之前的博客:https://bbs.huaweicloud.com/blogs/281373

本篇博客只是简单说了已有镜像的改造方法,实际使用中往往不可能构建一次就成功,所以很多工作量都是在镜像的构建和调试。

针对自定义镜像的构建和调试步骤,后续还会专门出博客介绍。

AI开发平台ModelArts

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:掘金23 万亿数字经济 华为云微认证官方上线
下一篇:docker-io 运行oracle
相关文章