训练V2自定义镜像迁移手册
训练V2版本和V1版本的最大区别在于:
- 训练任务启动的用户指定必须是ma-user(linux用户号1000)
- 训练会自动同步任务指定的输入、输出目录(此场景不涉及)
- 训练界面大改版
- 一些增强功能:环境预检、容错重启,训练失败分析,实时日志、日志搜索。
- V2版本会持续迭代,而V1版本不会继续适配新版本的软件及硬件
在训练V2版本使用自定义镜像+SFS的场景时,为了保证ma-user用户能正常启动任务,我们需要对已经在V1上能正常运行的任务进行改造。
V1版本的镜像改造参考博客:https://bbs.huaweicloud.com/blogs/285697
带自定义镜像功能的新版训练界面:https://console.huaweicloud.com/modelarts/#/training
1. 容器镜像修改
在历史镜像上增加必须的ma-user用户并配置sudo权限。参考dockerfile如下:
FROM swr.cn-north-4.myhuaweicloud.com/${your_group}/${your_image_name}:${your_image_version}
USER root
RUN groupadd ma-group -g 1000 && \
useradd -d /home/ma-user -m -u 1000 -g 1000 -s /bin/bash ma-user && \
chmod 770 /home/ma-user && \
chmod 770 /root && \
# or silver bullet of files permission
# chmod -R 777 /root && \
usermod -a -G root ma-user
# install sudo and config
RUN apt-get install -y sudo && \
awk 'BEGIN{print "Defaults !env_reset\nroot ALL=(ALL:ALL) ALL\n\nma-user ALL=(ALL) NOPASSWD:ALL\n%admin ALL=(ALL) ALL\n%sudo ALL=(ALL:ALL) ALL"}' > /etc/sudoers
USER ma-user
WORKDIR /home/ma-user
镜像的构建和调试参考教程:https://bbs.huaweicloud.com/blogs/285590
2. 修改启动训练任务的代码
cd /sfs/code && sudo bash -x start.sh && sleep 30
一般用户都是root使用的,以ma-user启动任务时会带来一些困扰。包括:镜像内部分文件权限不足,SFS Turbo盘权限不足&混乱等。
建议把所有训练代码流程全部包在start.sh里,并sudo直接切换到root执行。注意,sudo切换到root之后部分PATH的环境变量会丢失,请在start.sh里提前补全。
其他的,"/sfs/code"是客户在SFS Turbo盘里的代码目录,请根据实际情况切换。"sleep 30"的目的是让实时日志能多滞留30秒以便查看及分析,以应对某些情况下用户只能查看实时日志的问题。可以删除此句或者修改滞留时间,以便进行分析。
如需把日志保存到SFS盘,请参考文档:https://bbs.huaweicloud.com/blogs/327056
3. 修改SFS Turbo盘的目录权限(配置sudo权限后选做)
因为需要使得ma-user有读写权限,配合dockerfile配置增加root group的写权限即可。在挂载SFS Turbo的Linux节点操作,参考命令:
# FS is root group by default.
# If not, user can chwon back to 'root:root' first, or make sure 'ma-user' user has write & read permission.
chmod g+w -R /mnt/sfs_turbo
- 点赞
- 收藏
- 关注作者
评论(0)