更新时间:2024-04-03 GMT+08:00

自定义镜像训练作业失败定位思路

问题现象

使用自定义镜像训练作业时,训练失败。

定位思路

  1. 确定镜像来源
    • 确认该自定义镜像的基础镜像是否来源于ModelArts提供的基础镜像,推荐用户使用ModelArts的基础镜像构建自定义镜像,具体请参见使用ModelArts的基础镜像构建新的训练镜像
    • 如镜像来源于第三方,设法找到自定义镜像的制作者咨询,制作者一般对镜像如何使用更加了解。
  2. 确定自定义镜像大小

    自定义镜像的大小推荐15GB以内,最大不要超过资源池的容器引擎空间大小的一半。镜像过大会直接影响训练作业的启动时间。

    ModelArts公共资源池的容器引擎空间为50G,专属资源池的容器引擎空间的默认为50G,支持在创建专属资源池时自定义容器引擎空间。

  3. 确定错误类型
    • 提示找不到文件等错误,请参见训练作业日志中提示“No such file or directory”
    • 提示找不到包等错误,请参见训练作业日志中提示“No module named .*”
    • 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
    • 其他现象,可以在已有的训练故障案例查找。

建议与总结

用户使用自定义镜像训练作业时,建议按照训练作业自定义镜像规范制作镜像。文档中同时提供了端到端的示例供用户参考。