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

Amazon SageMaker PyTorch训练模型上传失败:文件过多问题求助

解决Amazon SageMaker PyTorch训练任务模型上传失败(Too many files are written)的思路

核心原因

SageMaker训练任务结束后会自动上传/opt/ml/model目录下的所有文件到指定S3路径,当该目录下文件数量过多时,会触发Artifact upload failed:Too many files are written错误。

具体解决步骤

  • 清理模型输出目录的冗余文件
    检查训练脚本CloudSeg.py,确认是否在/opt/ml/model(可通过环境变量SM_MODEL_DIR获取)下生成了大量临时文件、中间日志、高频保存的小checkpoint文件。修改脚本,只保留最终训练完成的模型文件(如.pth/.pt),删除所有非必要文件。如果需要保留多个文件,可将其打包为tar.gz压缩包后再放入模型目录,示例代码:

    import os
    import tarfile
    import torch
    
    model_dir = os.environ.get('SM_MODEL_DIR', './model')
    # 保存最终模型
    torch.save(model.state_dict(), os.path.join(model_dir, 'final_model.pth'))
    # 打包模型目录
    with tarfile.open(os.path.join(model_dir, 'model.tar.gz'), 'w:gz') as tar:
        tar.add(os.path.join(model_dir, 'final_model.pth'), arcname='final_model.pth')
    # 删除原文件,只保留压缩包
    os.remove(os.path.join(model_dir, 'final_model.pth'))
    
  • 隔离Checkpoint与模型输出目录
    你已配置checkpoint_local_path用于保存训练checkpoint,确保该路径与/opt/ml/model完全分离,避免checkpoint文件被纳入模型上传范围。同时调整checkpoint的保存策略,比如仅保存最优模型或每隔N个epoch保存一次,减少checkpoint文件数量。

  • 避免依赖SageMaker自动上传大量文件
    如果业务确实需要保留大量文件,可在训练脚本中使用boto3直接将这些文件上传到S3的独立路径,不通过SageMaker的自动上传机制。示例:

    import boto3
    import os
    
    s3 = boto3.client('s3')
    large_file_list = ["/path/to/file1", "/path/to/file2"]
    # 上传大量文件到自定义S3路径
    for file_path in large_file_list:
        s3.upload_file(file_path, 'your-bucket', 'custom-path/{}'.format(os.path.basename(file_path)))
    
  • 确认配置完全生效
    虽然你已关闭FastFile模式,但需确认训练任务是否使用了更新后的配置(比如重新创建Estimator,未复用之前的缓存配置)。FastFile模式主要影响数据读取,与模型上传无直接关联,当前问题核心仍在输出文件数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:35:22