更换AWS账号后SageMaker训练任务在数据下载阶段停止问题求助
问题解答
这是更换AWS账号后使用SageMaker的高频常见问题,大量用户在跨账号迁移SageMaker配置时都遇到过同类情况,核心诱因基本都和新账号的权限、网络配置不匹配有关,可按照以下步骤排查解决:
常见原因
- IAM角色权限不足:新账号下的SageMaker执行角色缺少S3数据读取、CloudWatch日志写入的对应权限,或是直接误用了旧账号的角色ARN
- 网络配置异常:新账号的SageMaker训练任务绑定的VPC没有配置S3访问端点,安全组/网络ACL拦截了到S3、CloudWatch的出站请求
- 数据路径无效:
location_data指向的S3路径属于旧账号,当前账号没有访问权限或是路径本身不存在
解决步骤
1. 校验IAM角色配置
- 确认代码中
role参数传入的是当前新AWS账号下的角色ARN,格式为arn:aws-cn:iam::[新账号ID]:role/[角色名] - 给角色配置以下基础权限:
- 托管策略
AmazonSageMakerFullAccess(验证通过后可再按照最小权限原则收敛) - 信任策略允许
sagemaker.amazonaws.com服务代入角色 - 自定义策略允许对应S3桶的读写权限、CloudWatch Logs的全操作权限
- 托管策略
2. 验证训练数据路径有效性
执行aws s3 ls <你的location_data对应的S3路径>命令,确认当前账号的凭证可以正常访问该路径下的对象,如果你使用的是旧账号的S3资源,需要先配置跨账号S3访问权限,或是将数据集迁移到新账号的S3桶中。
3. 调整Estimator配置做简化验证
初始化Estimator时关闭不必要的特性,排除额外配置的干扰:
clf = sagemaker.estimator.Estimator(xgb_image_uri, role, instance_count=1, instance_type='ml.c4.2xlarge', output_path="s3://{}/output".format(session.default_bucket()), sagemaker_session=session, enable_network_isolation=False, debugger_hook_config=False)
4. 检查VPC网络配置
如果你的训练任务指定了VPC参数,需要确认:
- 绑定的子网路由表配置了S3网关端点,或是有NAT网关支持公网出站
- 安全组出站规则开放了443端口的HTTPS访问,没有限制S3、CloudWatch服务的访问
按照以上步骤排查后,绝大多数同类问题都可以得到解决。如果验证后还是存在异常,可以先使用SageMaker官方提供的公开示例数据集跑测试训练任务,排除自定义数据的影响。
内容的提问来源于stack exchange,提问作者Keithx
相关产品推荐
相关产品推荐

