AI开发平台ModelArts-在ModelArts Standard使用run.sh脚本实现OBS和训练容器间的数据传输
在ModelArts Standard使用run.sh脚本实现OBS和训练容器间的数据传输
自定义容器在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.shconda activate xxxenvconda info --envs#启动训练脚本。cd xxxxpython 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目录,这个目录挂载的硬盘容量最大。建议下载数据和中间数据都存到这个目录中,防止因硬盘占满导致任务失败。
- ModelArts模型训练_模型训练简介_如何训练模型
- ModelArts自定义镜像_自定义镜像简介_如何使用自定义镜像
- ModelArts模型训练_超参搜索简介_超参搜索算法
- ModelArts模型训练_创建训练作业_如何创建训练作业
- ModelArts分布式训练_分布式训练介绍_分布式调测
- ModelArts是什么_AI开发平台_ModelArts功能
- ModelArts计费说明_计费简介_ModelArts怎么计费
- ModelArts推理部署_创建AI应用_自定义镜像规范-华为云
- ModelArts推理部署_OBS导入_模型包规范-华为云
- ModelArts开发环境_开发环境简介_开发环境怎么使用