他的回复:
现象:这种情况可以在日志中观察到对应的错误日志类似为【[Modelarts Service Log]Training end with return code: 137】。原因:这段日志表示训练进程的退出码为137,而这里的训练进程就表示的用户的代码启动后的进程,换句话说这里的退出码就是用户的代码返回的。其他常见的247、139也是如此的原理如何解决:因为是用户代码导致的进程退出,所以着手点还是从用户代码入手。以下一些基本的排查手段方式一:1. 申请同样规格的开发环境(notebook)2. 在notebook中调试代码,并找出问题的代码段3. 通过关键代码段 + 退出码尝试去搜索引擎寻找解决办法注:该方法适用于非分布式的代码 方式二(推荐在方式一不生效的情况下使用):1. 通过日志判断出问题的代码范围2. 修改代码,在可能出问题的地方多打些日志3. 再次运行作业,判断出问题的代码段4. 重复2,3步骤,直到找到出问题的地方 一些可能的原因:退出码139:一般是排查包的版本, 有些包冲突会有这种问题比方transformer的包版本。退出码137或者247:可能是OOM导致的。可以减少数据量,减少batch_size; 优化代码,合理聚合、复制数据;另外数据文件大小不等于内存占用大小,请仔细评估内存使用情况。