文档首页/ AI开发平台ModelArts/ 故障排除/ 训练作业/ 硬盘限制故障/ 常见的磁盘空间不足的问题和解决办法
更新时间:2024-08-22 GMT+08:00
分享

常见的磁盘空间不足的问题和解决办法

该章节用于统一整体所有的常见的磁盘空间不足的问题和解决办法。减少相关问题文档的重复内容。

问题现象

训练过程中复制数据/代码/模型时出现如下报错:

图1 错误日志

原因分析

出现该问题的可能原因如下:

  • 本地数据、文件保存将"/cache"目录空间用完。
  • 数据处理过程中对数据进行解压,导致数据大小膨胀,将"/cache"目录空间用完。
  • 数据未保存至/cache目录或者/home/ma-user/目录(/cache会软连接成/home/ma-user/),导致数据占满系统目录。系统目录仅支持系统功能基本运行,无法支持大数据存储。
  • 部分训练任务会在训练过程中生成checkpoint文件,并进行更新。如更新过程中,未删除历史的checkpoint文件,会导致/cache目录逐步被用完。
  • 实际存储空间足够,却依旧报错“No Space left on device”。可能是inode不足,或者是触发操作系统的文件索引缓存问题,导致操作系统无法创建文件,造成用户磁盘占满。

    触发条件和下面的因素有关:

    • 文件名越长,文件数量的上限越小。
    • blocksize越小,文件数量的上限越小。 blocksize系统默认为4096B,总共有三种大小:1024B、2048B、4096B。
    • 创建文件越快,越容易触发(机制大概是:有一个缓存,这块大小和上面的1和2有关,目录下文件数量比较大时会启动,使用方式是边用边释放)。
  • 程序运行过程中,产生了core文件,core文件占满了"/"根目录空间。

处理方法

  1. 排查数据集大小、数据集解压后的大小,checkpoint保存文件大小,是否占满了磁盘空间。具体规格的空间大小可参见训练环境中不同规格资源“/cache”目录的大小
  2. 如数据大小已超过/cache目录大小,则可以考虑通过SFS来额外挂载数据盘进行扩容。
  3. 将数据和checkpoint保存在/cache目录或者/home/ma-user/目录。
  4. 检查checkpoint相关逻辑,保证历史checkpoint不会不断积压,导致/cache目录用完。
  5. 如文件大小小于/cache目录大小并且文件数量超过50w,则考虑为inode不足或者触发了操作系统的文件索引相关问题。需要:
    • 分目录处理,减少单个目录文件量。
    • 减慢创建文件的速度。如数据解压过程中,sleep 5s后再进行下一个数据的解压。
  6. 如果训练作业的工作目录下有core文件生成,可以在启动脚本最前面加上如下代码,来关闭core文件产生。并推荐先在开发环境中进行代码调试。
    import os
    os.system("ulimit -c 0")

建议与总结

在创建训练作业前,推荐您先使用ModelArts开发环境调试训练代码,避免代码迁移过程中的错误。

相关文档