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

SageMaker本地模式下PyTorch estimator.fit执行停滞求助

问题解决:SageMaker PyTorch训练调试与本地模式停滞问题

一、非本地托管实例(ml.m5.4xlarge)调试失败的解决方案

在SageMaker托管训练实例中,直接使用breakpoint()会触发AlgorithmError: ExecuteUserScriptError,原因是托管实例没有交互式终端,断点会导致脚本无限阻塞,进而被SageMaker判定为执行失败。可通过以下两种方式替代调试:

1. 日志打印调试

在train.py中添加详细的print或logging语句,输出关键变量、执行步骤:

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def main():
    logger.info("进入main函数")
    # 打印变量示例
    sample_var = "test"
    logger.info(f"示例变量值:{sample_var}")
    return 

if __name__ == '__main__':
    print('Reached')
    main()

训练完成后,可通过SageMaker控制台的训练作业日志查看输出。

2. 使用SageMaker Debugger进行专业调试

配置SageMaker Debugger跟踪张量数据、捕获异常,无需修改训练代码即可实现深度调试:

# 在main.py中添加Debugger配置
from sagemaker.debugger import Rule, DebuggerHookConfig, rule_configs

# 配置规则,比如捕获NaN/Inf值
rules = [Rule.sagemaker(rule_configs.exploding_tensor())]

hosted_estimator = PyTorch(
    source_dir='customcode',
    entry_point='train.py',
    instance_type="ml.m5.4xlarge",
    instance_count=1,
    hyperparameters=hyperparameters,
    role=role,
    base_job_name='mwe-train',
    framework_version='1.12',
    py_version='py38',
    # 添加Debugger配置
    debugger_hook_config=DebuggerHookConfig(),
    rules=rules,
)

训练过程中,可通过SageMaker控制台的Debugger面板查看实时数据,定位错误根源。

二、本地模式(instance_type='local')无限停滞的解决方案

本地模式停滞通常是环境依赖或配置不兼容导致,按以下步骤排查修复:

1. 检查Docker环境

本地模式依赖Docker运行模拟容器,需确保EC2实例满足:

  • 已安装Docker Engine(建议版本20.10+)
  • 当前用户已加入docker用户组,无需sudo即可运行Docker命令
  • Docker服务处于运行状态(执行systemctl status docker验证)

2. 禁用FastFile输入模式

FastFile是SageMaker托管环境的优化特性,本地模式不支持,需修改为File模式:

hosted_estimator = PyTorch(
    # ... 其他参数保持不变
    input_mode='File',  # 替换原有的FastFile
)

3. 校验SageMaker SDK版本

SDK版本不兼容可能导致本地模式异常,建议升级到适配PyTorch 1.12的版本:

pip install --upgrade sagemaker==2.100.0  # 此版本适配PyTorch 1.12

4. 检查本地文件权限与路径

确保customcode目录及其下的train.py对当前用户有可读权限,且路径无歧义(避免相对路径错误)。

5. 启用本地模式日志调试

在创建Session时添加日志级别配置,查看详细运行日志:

import logging

logging.basicConfig(level=logging.DEBUG)
sess = sagemaker.Session(sagemaker_client=sagemaker_client, default_bucket=bucket)

运行后查看终端输出,定位容器启动失败或资源加载异常的具体原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:05:23