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

AWS SageMaker训练任务失败:执行自定义SKLearn脚本出错求助

问题排查与修复方案

以下是导致训练脚本执行失败(ExitCode 1)的几个关键问题及修复方法:

1. 重复定义命令行参数

脚本中两次添加了--model-dir参数:

parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR'])
# ...
parser.add_argument("--model-dir", type=str, default=os.environ.get("SM_MODEL_DIR"))

argparse不允许重复定义同名参数,会直接触发解析错误。修复方法:删除其中一行,保留一个即可,推荐使用os.environ.get的版本(避免环境变量未设置时直接崩溃):

# 保留这一行即可
parser.add_argument("--model-dir", type=str, default=os.environ.get("SM_MODEL_DIR"))

2. columns变量未定义

脚本中使用了X_train = train_df[columns]和X_test = test_df[columns],但未定义columns变量。这会抛出NameError,导致脚本终止。修复方法:提前定义要使用的特征列列表,例如:

# 根据你的数据集特征列修改
columns = ['特征列1', '特征列2', '特征列3']
X_train = train_df[columns]
X_test = test_df[columns]

3. 缺少必要的库导入

脚本中使用了多个第三方库,但未添加导入语句,会触发ModuleNotFoundError或NameError。修复方法:在脚本开头添加所有需要的导入:

import os
import argparse
import pandas as pd
import joblib
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score

4. 引用未定义的命令行参数

脚本最后一行print(args.min_samples_leaf),但从未添加--min_samples_leaf参数的定义,会抛出AttributeError。修复方法:要么删除这一行,要么添加对应的参数定义:

# 如果需要这个超参数,添加以下行
parser.add_argument("--min_samples_leaf", type=int, default=1)

5. 环境变量硬引用风险

第一次定义--model-dir时使用了os.environ['SM_MODEL_DIR'],如果环境变量未设置(虽然SageMaker会自动设置,但本地测试时可能出错),会直接抛出KeyError。建议统一使用os.environ.get的方式,允许默认值为空或指定默认路径。

修复以上问题后,重新提交训练任务即可解决ExecuteUserScriptError问题。另外,建议在本地先测试脚本的执行逻辑,确保没有语法或逻辑错误后再上传到SageMaker运行,便于快速排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:03:36