使用MoXing复制数据报错
问题现象
- 调用moxing.file.copy_parallel()将文件从开发环境的OBS桶中复制到其他OBS桶里,但是桶内没有出现目标文件。
- 使用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')
- 使用MoXing复制数据报错,提示超时。如:
- 报错:TimeoutError: [Errno 110] Connection timed out
- WARNING:root:Retry=9,Wait=0.1, Timestamp = 1567152567.5327423
原因分析
当使用MoXing复制数据不成功,可能原因如下:
- 源文件不存在。
- OBS路径不正确或者是两个OBS路径不在同一个区域。
- 训练作业空间不足。
处理方法
按照报错提示,需要排查以下几个问题:
- 检查moxing.file.copy_parallel()的第一个参数中是否有文件,否则会出现报错:No files to copy
- 文件存在,请执行2。
- 文件不存在,请忽略该报错继续执行后续操作。
- 检查复制的OBS的路径是否与开发环境或训练作业在同一个区域。
进入ModelArts管理控制台,查看其所在区域。然后再进入OBS管理控制台,查看您使用的OBS桶所在的区域。查看是否在同一区域。
- 是,请执行3。
- 否,请在ModelArts同一区域的OBS中新建桶和文件夹,并将所需的数据上传至此OBS桶中。
- 检查OBS的路径是否正确,是否写为了“obs://xxx”。可使用如下方式判断OBS路径是否存在。
mox.file.exists('obs://bucket_name/sub_dir_0/sub_dir_1')
- 路径存在,请执行4。
- 路径不存在,请在更换为一个可用的OBS路径。
- 检查使用的资源是否为CPU,CPU的“/cache”与代码目录共用10G,可能是空间不足导致,可在代码中使用如下命令查看磁盘大小。
os.system('df -hT')
- 磁盘空间满足,请执行5。
- 磁盘空间不足,请您使用GPU资源。
- 如果是在Notebook使用MoXing复制数据不成功,可以在Terminal界面中使用df -hT命令查看空间大小,排查是否因空间不足导致,可在创建Notebook时使用EVS挂载。
如果代码写作正确,仍然无法解决该问题,请提交工单,由专业工程师为您分析并解决问题。