九游平台/
ai开发平台modelarts/
最佳实践/
standard模型训练/
基于modelarts standard运行gpu训练作业/
在modelarts standard使用run.sh脚本实现obs和训练容器间的数据传输
更新时间:2024-12-17 gmt 08:00
在modelarts standard使用run.sh脚本实现obs和训练容器间的数据传输-九游平台
自定义容器在modelarts上训练和本地训练的区别如下图:
图1 本地与modelarts上训练对比

modelarts上进行训练比本地训练多了一步obs和容器环境的数据迁移工作。
增加了和obs交互工作的整个训练流程如下:

建议使用obsutil作为和obs交互的工具,如何在本机安装obsutil可以参考安装和配置obs命令行工具。
- 训练数据、代码、模型下载。(本地使用硬盘挂载或者docker cp,在modelarts上使用obsutil)
- 启动脚本,用法无切换,一般就是到达执行目录,然后python xxx.py。
- 训练结果、日志、checkpoints上传。(本地使用硬盘挂载或者docker cp,在modelarts上使用obsutil)
可以用一个run脚本把整个流程包起来。run.sh脚本的内容可以参考如下示例:
#!/bin/bash ##认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 ##本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量huaweicloud_sdk_ak和huaweicloud_sdk_sk。 ##安装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=${huaweicloud_sdk_ak} -k=${huaweicloud_sdk_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=${huaweicloud_sdk_ak} -k=${huaweicloud_sdk_sk} -e=obs.cn-north-4.myhuaweicloud.com copy run.sh /opt/run.sh

modelarts的容器会有一个/cache目录,这个目录挂载的硬盘容量最大。建议下载数据和中间数据都存到这个目录中,防止因硬盘占满导致任务失败。
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨