云服务器内容精选

  • 问题现象 因为OOM导致的训练作业失败,会有如下几种现象。 错误码返回137,如下图所示。 Modelarts Service Log Trainina end with return code: 137 Modelarts Service Log]handle outputs of training job 日志中有报错,含有“killed”相关字段,例如: RuntimeError: DataLoader worker (pid 38077) is killed by signal: Killed. 日志中有报错“RuntimeError: CUDA out of memory. ”,如下图所示: 图1 错误日志信息 Tensorflow引擎日志中出现“Dst tensor is not initialized”。
  • 处理方法 如果是正常的OOM,就需要修改一些超参,释放一些不需要的tensor。 修改网络参数,比如batch_size、hide_layer、cell_nums等。 释放一些不需要的tensor,使用过的,如下: del tmp_tensor torch.cuda.empty_cache() 必现的问题,使用本地Pycharm远程连接Notebook调试超参。 如果还存在问题,可能需要提工单进行定位,甚至需要隔离节点修复。
  • 处理方法 排查数据集大小、数据集解压后的大小,checkpoint保存文件大小,是否占满了磁盘空间。具体规格的空间大小可参见训练环境中不同规格资源“/cache”目录的大小 如数据大小已超过/cache目录大小,则可以考虑通过SFS来额外挂载数据盘进行扩容。 将数据和checkpoint保存在/cache目录或者/home/ma-user/modelarts/目录。 检查checkpoint相关逻辑,保证历史checkpoint不会不断积压,导致/cache目录用完。 如文件大小小于/cache目录大小并且文件数量超过50w,则考虑为inode不足或者触发了操作系统的文件索引相关问题。需要: 分目录处理,减少单个目录文件量。 减慢创建文件的速度。如数据解压过程中,sleep 5s后再进行下一个数据的解压。 如果训练作业的工作目录下有core文件生成,可以在启动脚本最前面加上如下代码,来关闭core文件产生。并推荐先在开发环境中进行代码调试。 import os os.system("ulimit -c 0")
  • 原因分析 出现该问题的可能原因如下: 本地数据、文件保存将"/cache"目录空间用完。 数据处理过程中对数据进行解压,导致数据大小膨胀,将"/cache"目录空间用完。 数据未保存至/cache目录或者/home/ma-user/modelarts/目录,导致数据占满系统目录。系统目录仅支持系统功能基本运行,无法支持大数据存储。 部分训练任务会在训练过程中生成checkpoint文件,并进行更新。如更新过程中,未删除历史的checkpoint文件,会导致/cache目录逐步被用完。 实际存储空间足够,却依旧报错“No Space left on device”。可能是inode不足,或者是触发操作系统的文件索引缓存问题,导致操作系统无法创建文件,造成用户磁盘占满。 触发条件和下面的因素有关: 文件名越长,文件数量的上限越小。 blocksize越小,文件数量的上限越小。 blocksize系统默认为4096B,总共有三种大小:1024B、2048B、4096B。 创建文件越快,越容易触发(机制大概是:有一个缓存,这块大小和上面的1和2有关,目录下文件数量比较大时会启动,使用方式是边用边释放)。 程序运行过程中,产生了core文件,core文件占满了"/"根目录空间。
  • 原因分析 出现该问题的可能原因如下。 磁盘空间不足。 分布式作业时,有些节点的docker base size配置未生效,容器内“/”根目录空间未达到50G,只有默认的10GB,导致作业训练失败。 实际存储空间足够,却依旧报错“No Space left on device”。 同一目录下创建较多文件,为了加快文件检索速度,内核会创建一个索引表,短时间内创建较多文件时,会导致索引表达到上限,进而报错。 触发条件和下面的因素有关: 文件名越长,文件数量的上限越小。 blocksize越小,文件数量的上限越小。( blocksize,系统默认 4096B。总共有三种大小:1024B、2048B、4096B) 创建文件越快,越容易触发。
  • 处理方法 可以参照日志提示"write line error"文档进行修复。 如果是分布式作业有的节点有错误,有的节点正常,建议提工单请求隔离有问题的节点。 如果是触发了欧拉操作系统的限制,有如下建议措施。 分目录处理,减少单个目录文件量。 减慢创建文件的速度。 关闭ext4文件系统的dir_index属性,具体可参考:https://access.redhat.com/solutions/29894,(可能会影响文件检索性能)。
  • 处理方法 在使用Tensorflow多节点作业下载数据时,正确的下载逻辑如下: import argparseparser = argparse.ArgumentParser()parser.add_argument("--job_name", type=str, default="")args = parser.parse_known_args()if args[0].job_name != "ps": copy..............................