AI开发平台ModelArtsAI开发平台ModelArts

文档首页> AI开发平台ModelArts> 常见问题> 训练作业> 查看作业详情> 训练作业日志中提示“No such file or directory”,如何解决?
更新时间:2021/07/27 GMT+08:00
分享

训练作业日志中提示“No such file or directory”,如何解决?

使用ModelArts时,用户数据是存放在自己OBS桶中,OBS桶中数据都有对应的路径,例如“bucket_name/dir/image.jpg”。ModelArts训练作业是运行在容器中,如果要访问OBS数据,需要通过数据对应的路径。此提示说明该文件或路径不存在,可能由于您在创建训练作业时,选择的“数据存储位置”有误,或者您编写的代码文件中,访问的路径不正确。

用户请按照以下思路进行逐步排查:

  1. 检查报错的路径是否为OBS路径
  2. 检查报错的路径是否存在

检查报错的路径是否为OBS路径

使用ModelArts时,用户数据需要存放在自己OBS桶中,但是训练代码运行过程中不能使用OBS路径读取数据。

原因:

训练作业创建成功后,由于在运行容器直连OBS服务进行训练性能很差,系统会自动下载训练数据至运行容器的本地路径。所以,在训练代码中直接使用OBS路径会报错。代码路径参数

如果报错路径为训练数据路径,需要在以下两个地方完成适配,具体适配方法请参考自定义算法适配章节的输入输出配置部分

  1. 在创建算法时,您需要在输入路径配置中设置代码路径参数,默认为“data_url”
  2. 您需要在训练代码中添加超参,默认为“data_url”。使用“data_url”当做训练数据输入的本地路径。

检查报错的路径是否存在

由于用户本地开发的代码需要上传至ModelArts后台,训练代码中涉及到依赖文件的路径时,用户设置有误的场景较多。

推荐通用的解决方案:使用os接口得到依赖文件的绝对路径,避免报错。

示例:

|---project_root                #代码根目录
   |---BootfileDirectory        #启动文件所在的目录
     |---bootfile.py            #启动文件
   |---otherfileDirectory       #其他依赖文件所在的目录
     |---otherfile.py           #其他依赖文件
    

在启动文件中,建议用户参考以下方式获取依赖文件所在路径,即示例中的otherfile_path。

import os
current_path = os.path.dirname(os.path.realpath(__file__)) # BootfileDirectory, 启动文件所在的目录
project_root = os.path.dirname(current_path) # 工程的根目录,对应ModelArts训练控制台上设置的代码目录
otherfile_path = os.path.join(project_root, "otherfileDirectory", "otherfile.py")
分享:

查看作业详情 所有常见问题

more