自定义镜像训练作业失败定位思路
问题现象
使用自定义镜像训练作业时,训练失败。
定位思路
- 确定镜像来源
- 确认该自定义镜像的基础镜像是否来源于ModelArts提供的基础镜像,推荐用户使用ModelArts的基础镜像构建自定义镜像,具体请参见使用ModelArts的基础镜像构建新的训练镜像。
- 如镜像来源于第三方,设法找到自定义镜像的制作者咨询,制作者一般对镜像如何使用更加了解。
- 确定自定义镜像大小
自定义镜像的大小推荐15GB以内,最大不要超过资源池的容器引擎空间大小的一半。镜像过大会直接影响训练作业的启动时间。
ModelArts公共资源池的容器引擎空间为50G,专属资源池的容器引擎空间的默认为50G,支持在创建专属资源池时自定义容器引擎空间。
- 确定错误类型
- 提示找不到文件等错误,请参见训练作业日志中提示“No such file or directory”。
- 提示找不到包等错误,请参见训练作业日志中提示“No module named .*”。
- Ascend启动脚本和初始化脚本问题。
确认相关脚本是否来源于官方文档并且是否严格按照官方文档使用。比如确认脚本名称是否正常、脚本路径是否正常。具体请参见示例:从 0 到 1 制作自定义镜像并用于训练(MindSpore+Ascend)。
- 驱动版本与底层驱动不兼容
当对自定义镜像的驱动进行升级时,请确定底层驱动是否兼容。当前支持哪种驱动版本,请从基础镜像中获取。
- 文件权限不足
该问题可能为自定义镜像的用户与作业容器的用户不同导致的。请修改dockerfile文件:
RUN if id -u ma-user > /dev/null 2>&1 ; \ then echo 'MA 用户已存在' ; \ else echo 'MA 用户不存在' && \ groupadd ma-group -g 1000 && \ useradd -d /home/ma-user -m -u 1000 -g 1000 -s /bin/bash ma-user ; fi && \ chmod 770 /home/ma-user && \ chmod 770 /root && \ usermod -a -G root ma-user
- 其他现象,可以在已有的训练故障案例查找。
建议与总结
用户使用自定义镜像训练作业时,建议按照训练作业自定义镜像规范制作镜像。文档中同时提供了端到端的示例供用户参考。