文档首页/ AI开发平台ModelArts/ 故障排除/ MoXing/ 使用MoXing复制数据报错
更新时间:2024-04-11 GMT+08:00

使用MoXing复制数据报错

问题现象

  1. 调用moxing.file.copy_parallel()将文件从开发环境的OBS桶中复制到其他OBS桶里,但是桶内没有出现目标文件。
  2. 使用MoXing复制数据不成功,出现报错。如:
    • ModelArts开发环境使用MoXing复制OBS数据报错:keyError: 'request-id'
    • ModelArts使用MoXing复制报错:No files to copy
    • socket.gaierror: [Errno -2] Name or service not known
    • ERROR:root:Failed to call:

      func=<bound method ObsClient.getObject of <obs.client.ObsClient object at 0x7fd705939710>>

      args=('bucket', 'data/TFRecord/HY_all_inside/no_adjust_light_3/09_06_6x128x128_0000000212.tfrecord')

  3. 使用MoXing复制数据报错,提示超时。如:
    • 报错:TimeoutError: [Errno 110] Connection timed out
    • WARNING:root:Retry=9,Wait=0.1, Timestamp = 1567152567.5327423

原因分析

当使用MoXing复制数据不成功,可能原因如下:

  • 源文件不存在。
  • OBS路径不正确或者是两个OBS路径不在同一个区域。
  • 训练作业空间不足。

处理方法

按照报错提示,需要排查以下几个问题:

  1. 检查moxing.file.copy_parallel()的第一个参数中是否有文件,否则会出现报错:No files to copy
    • 文件存在,请执行2
    • 文件不存在,请忽略该报错继续执行后续操作。
  2. 检查复制的OBS的路径是否与开发环境或训练作业在同一个区域。

    进入ModelArts管理控制台,查看其所在区域。然后再进入OBS管理控制台,查看您使用的OBS桶所在的区域。查看是否在同一区域。

    • 是,请执行3
    • 否,请在ModelArts同一区域的OBS中新建桶和文件夹,并将所需的数据上传至此OBS桶中。
  3. 检查OBS的路径是否正确,是否写为了“obs://xxx”。可使用如下方式判断OBS路径是否存在。

    mox.file.exists('obs://bucket_name/sub_dir_0/sub_dir_1')

    • 路径存在,请执行4
    • 路径不存在,请在更换为一个可用的OBS路径。
  4. 检查使用的资源是否为CPU,CPU的“/cache”与代码目录共用10G,可能是空间不足导致,可在代码中使用如下命令查看磁盘大小。

    os.system('df -hT')

    • 磁盘空间满足,请执行5
    • 磁盘空间不足,请您使用GPU资源。
  5. 如果是在Notebook使用MoXing复制数据不成功,可以在Terminal界面中使用df -hT命令查看空间大小,排查是否因空间不足导致,可在创建Notebook时使用EVS挂载。

如果代码写作正确,仍然无法解决该问题,请提交工单,由专业工程师为您分析并解决问题。