华为云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)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家