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

SageMaker本地模式下调用estimator.fit训练PyTorch模型时无限挂起问题求助

SageMaker本地模式训练PyTorch时estimator.fit无限挂起的解决方法

从你提供的堆栈跟踪来看,核心问题出在S3数据集的本地下载环节——SageMaker本地模式会自动把S3上的数据集同步到本地磁盘,这个过程如果遇到网络带宽不足、数据集过大或者权限隐性问题,就会出现无限挂起的情况。而EC2实例能正常运行,是因为EC2和S3同区域的网络带宽足够,且权限链更顺畅。

下面是几个针对性的解决办法:

方案一:改用本地数据集绕开S3下载

如果只是验证训练逻辑,最快的方式是把数据集放到本地,直接使用本地路径:

# 替换成你的本地数据集绝对/相对路径
training_input_path = "file://./local-dataset-folder"

这样可以彻底跳过S3同步的阻塞环节,快速确认本地训练容器的逻辑是否正常。

方案二:优化S3下载配置

如果必须使用S3数据集,可以通过调整boto3配置来提升下载稳定性:

import boto3
from botocore.config import Config
import sagemaker
from sagemaker.pytorch import PyTorch

# 增加超时时间和重试次数,适配大文件下载
boto_config = Config(
    connect_timeout=60,
    read_timeout=300,  # 延长读取超时,应对大文件
    retries={"max_attempts": 5}
)
boto_session = boto3.Session(config=boto_config)

# 初始化带自定义配置的SageMaker本地会话
sagemaker_session = sagemaker.LocalSession(boto_session=boto_session)
sagemaker_session.config = {"local": {"local_code": True}}

# 后续estimator初始化逻辑不变
bucket = "bucket-name"
role = sagemaker.get_execution_role()
training_input_path = f"s3://{bucket}/dataset/path"

estimator = PyTorch(
    entry_point="train.py",
    source_dir="src",
    hyperparameters={"max-epochs": 1},
    framework_version="1.8",
    py_version="py3",
    instance_count=1,
    instance_type="local",
    role=role,
    output_path="file://.",
    sagemaker_session=sagemaker_session,
)
estimator.fit({"training": training_input_path})

如果你的AWS区域支持S3加速,可以在boto_config中添加s3={"use_accelerate_endpoint": True}进一步提升速度。

方案三:排查SageMaker Studio的权限问题

在Studio环境中,本地模式的容器可能没有正确继承角色权限,导致S3下载阻塞:

  1. 手动指定角色ARN:替换sagemaker.get_execution_role()为具体的角色ARN,确保角色有S3的GetObject和ListBucket权限:
    role = "arn:aws:iam::你的账号ID:role/你的SageMaker执行角色名"
    
  2. 先验证S3可访问性:在Notebook中单独测试S3下载,确认权限和路径正确:
    import boto3
    s3 = boto3.client('s3')
    # 下载一个小文件测试
    s3.download_file(bucket, "dataset/path/某一个小文件", "./test-file")
    
    如果这一步也卡,说明是VPC配置、安全组或者角色权限的问题,需要去IAM控制台检查角色的权限策略。

方案四:升级SageMaker SDK

旧版本的SageMaker SDK在本地模式处理S3时存在已知bug,尝试升级到最新版本:

pip install --upgrade sagemaker

额外排查点

  • 检查本地磁盘空间:如果数据集很大,磁盘不足会导致下载中断或假死;
  • 查看本地训练日志:本地模式下,容器的日志会实时输出到Notebook控制台,仔细查看有没有权限拒绝、路径不存在等隐性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:13:13