You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Amazon SageMaker训练评估作业挂载EBS解决磁盘空间不足问题

解决SageMaker自定义容器大数据训练的磁盘空间不足问题

一、配置训练任务的EBS卷

提交SageMaker训练任务时,直接指定EBS卷大小即可扩容容器可用磁盘空间:

  • 使用Python SDK时,在Estimator实例化阶段设置volume_size参数(单位:GB),示例:
    from sagemaker.estimator import Estimator
    
    estimator = Estimator(
        image_uri="your-custom-container-uri",
        role="your-sagemaker-role",
        instance_count=1,
        instance_type="ml.m5.xlarge",
        volume_size=200,  # 配置200GB的EBS卷
        output_path="s3://your-bucket/output/"
    )
    
  • 使用CLI提交任务时,在CreateTrainingJob请求中指定ResourceConfig.VolumeSizeInGB字段。

SageMaker会自动将该EBS卷挂载到容器的/opt/ml目录,此目录默认用于存放训练数据、模型及中间文件,空间充足。

二、调整代码的下载路径

修改训练代码,将S3数据集的下载目标路径改为/opt/ml下的子目录(比如/opt/ml/data/training),禁止下载到容器根目录(/)或临时目录(/tmp)——这些路径所在磁盘默认空间极小,极易触发No space left on device错误。

示例代码片段(Python):

import boto3
import os

s3 = boto3.client('s3')
target_dir = "/opt/ml/data/training"
os.makedirs(target_dir, exist_ok=True)

# 从S3下载数据到目标目录
s3.download_file("your-data-bucket", "train-dataset.tar.gz", os.path.join(target_dir, "train-dataset.tar.gz"))
# 解压压缩包(若数据集为压缩格式)
os.system(f"tar -xzf {os.path.join(target_dir, 'train-dataset.tar.gz')} -C {target_dir}")

三、验证磁盘挂载状态

可在训练代码中添加磁盘空间检查命令,确认EBS卷挂载生效:

import subprocess
subprocess.run(["df", "-h"], check=True)

运行后会输出各磁盘分区的空间信息,确认/opt/ml对应的分区大小与你配置的volume_size参数一致即可。

四、额外优化方案

  • 使用管道模式(Pipe Mode):若数据集超大,无需全量下载到本地,直接通过SageMaker管道模式流式读取S3数据,彻底规避磁盘空间限制。只需在创建训练输入时设置input_mode="Pipe"即可。
  • 清理临时文件:训练过程中及时删除无用的缓存文件、中间结果,释放磁盘空间。
  • 压缩数据集:在S3存储压缩格式的数据集(如.tar.gz、.zip),下载后再解压,减少磁盘占用和下载时间。

内容的提问来源于stack exchange,提问作者ethicalguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:20:18