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

在Amazon SageMaker部署随机森林模型遇UnexpectedStatusException错误求助

解决Amazon SageMaker训练RandomForest分类器的ExecuteUserScriptError问题

以下是针对问题的排查和解决步骤:

1. 修正训练数据与模型路径的适配

本地运行时使用./作为数据和模型目录,但SageMaker训练环境有固定的目录结构:

  • 训练数据会被挂载到/opt/ml/input/data/train,测试数据在/opt/ml/input/data/test
  • 模型必须保存到/opt/ml/model目录,才能被SageMaker正确打包成模型工件

需要修改脚本中的路径读取逻辑:

  • 解析--train参数时,读取该路径下的训练文件(SageMaker会自动把S3路径映射到本地的这个目录)
  • 解析--model-dir参数时,将训练好的模型保存到该路径下

2. 传递超参数到SageMaker Estimator

你本地运行时指定了--n-estimators和--max_depth,但创建SKLearn Estimator时没有传入这些超参数,导致SageMaker训练时脚本缺少必要参数,引发错误。修改Estimator初始化代码:

from sagemaker.sklearn.estimator import SKLearn
sklearn_estimator = SKLearn(
    entry_point='script.py',
    role = get_execution_role(),
    instance_count=1,
    instance_type='ml.m4.xlarge',
    framework_version='0.20.0',
    base_job_name='rf-scikit',
    hyperparameters={
        'n-estimators': 100,
        'max_depth': 2
    }
)

同时确保脚本中用argparse正确解析这些参数,注意参数名的一致性(比如脚本中定义parser.add_argument('--n-estimators', type=int))。

3. 查看完整训练日志定位具体错误

将等待训练任务的代码改为:

sklearn_estimator.latest_training_job.wait(logs='All')

这样可以看到脚本执行时的详细错误输出,比如文件找不到、模块缺失、代码逻辑错误等,这是定位问题最关键的步骤。你也可以直接在SageMaker控制台找到对应训练任务,查看CloudWatch中的完整日志。

4. 对齐本地与SageMaker的依赖版本

检查本地scikit-learn版本是否与SageMaker指定的framework_version='0.20.0'一致。如果本地使用了更高版本的scikit-learn,脚本中用到的新API可能在SageMaker的旧环境中无法运行。

5. 验证IAM角色权限

确保你的IAM执行角色拥有访问训练数据所在S3路径的权限,以及将模型写入S3的权限。检查角色的权限策略,确认包含S3的GetObject和PutObject操作权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:06:24