
# 自定义镜像训练作业失败定位思路
#### 问题现象
使用自定义镜像训练作业时，训练失败。
#### 定位思路
1. 确定镜像来源
   - 确认该自定义镜像的基础镜像是否来源于ModelArts提供的基础镜像，推荐用户使用ModelArts的基础镜像构建自定义镜像，具体请参见[使用ModelArts的基础镜像构建新的训练镜像](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_0118.html)。
   
   - 如镜像来源于第三方，设法找到自定义镜像的制作者咨询，制作者一般对镜像如何使用更加了解。
    
2. 确定自定义镜像大小 自定义镜像的大小推荐15GB以内，最大不要超过资源池的容器引擎空间大小的一半。镜像过大会直接影响训练作业的启动时间。
   ModelArts公共资源池的容器引擎空间为50G，专属资源池的容器引擎空间的默认为50G，支持在创建专属资源池时自定义容器引擎空间。
   
3. 确定错误类型
   - 提示找不到文件等错误，请参见[训练作业日志中提示"No such file or directory"](https://support.huaweicloud.com/trouble-modelarts/modelarts_trouble_0014.html)。
   
   - 提示找不到包等错误，请参见[训练作业日志中提示"No module named .\*"](https://support.huaweicloud.com/trouble-modelarts/modelarts_trouble_0015.html)。
   
   - Ascend启动脚本和初始化脚本问题。 确认相关脚本是否来源于官方文档并且是否严格按照官方文档使用。比如确认脚本名称是否正常、脚本路径是否正常。
     
   
   - 驱动版本与底层驱动不兼容 当对自定义镜像的驱动进行升级时，请确定底层驱动是否兼容。当前支持哪种驱动版本，请从[基础镜像](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_6030.html)中获取。
     
   
   - 文件权限不足 该问题可能为自定义镜像的用户与作业容器的用户不同导致的。请修改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
     ```
     
   
   - 其他现象，可以在已有的[训练故障案例](https://support.huaweicloud.com/trouble-modelarts/modelarts_13_0009.html)查找。
    
 
#### 建议与总结
用户使用自定义镜像训练作业时，建议按照[训练作业自定义镜像规范](https://support.huaweicloud.com/docker-modelarts/develop-modelarts-10079.html#section1)制作镜像。文档中同时提供了端到端的示例供用户参考。
