华为云AI开发平台ModelArtsOBS拷贝过程中提示“BrokenPipeError: Broken pipe”_云淘科技
问题现象
训练作业在使用moxing拷贝数据时出现如下报错。
图1 错误日志
原因分析
出现该问题的可能原因如下:
在大规模分布式作业上,每个节点都在拷贝同一个桶的文件,导致OBS桶限流。
OBS Client连接数过多,进程/线程之间的轮询,导致一个OBS Clinet与服务端连接30S内无响应,超过超时时间,服务端断开了连接。
处理方法
如果是限流问题,日志中还会有如下错误,OBS相关的错误码解释请看 OBS官方文档,这种情况建议提工单。
图2 错误日志
如果是client数太多,尤其对于5G以上文件,OBS接口不支持直接调用,需要分多个线程分段拷贝,目前OBS侧服务端超时时间是30S,可以通过如下设置减少进程数。
# 设置进程数 os.environ['MOX_FILE_LARGE_FILE_TASK_NUM']=1 import moxing as mox # 拷贝文件 mox.file.copy_parallel(src_url=your_src_dir, dst_url=your_target_dir, threads=0, is_processing=False)
创建训练作业时,可通过环境变量“_PARTIAL_MAXIMUM_SIZE”设置用户需要分段下载的大文件阈值(单位为Bytes),超过该阈值的文件将使用并发下载模式进行分段下载。
建议与总结
在创建训练作业前,推荐您先使用ModelArts开发环境调试训练代码,避免代码迁移过程中的错误。
直接使用线上notebook环境调试请参考使用JupyterLab开发模型。
配置本地IDE(Pycharm或者VSCode)联接云上环境调试请参考使用本地IDE开发模型。
父主题: OBS操作相关故障
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家