调用create_monitoring_schedule时Sagemaker端点无效如何解决?
排查步骤
- 首先核对端点名称一致性:执行
print(predictor.endpoint_name),确认输出值和报错中的clinc-intent-analysis-0911完全一致,排除变量覆盖、大小写、多余空格的问题。 - 确认端点运行状态:登录SageMaker控制台进入「端点」页,确认对应端点的状态为InService,排除端点处于创建、更新、失败状态的情况。也可以直接调用boto3接口验证:
import boto3 sagemaker_client = boto3.client('sagemaker') # 替换为你的端点名称 print(sagemaker_client.describe_endpoint(EndpointName='clinc-intent-analysis-0911'))
如果该调用报错,说明端点名称、当前SDK区域配置、IAM权限三者至少有一项存在问题。
- 核对区域一致性:执行
print(sagemaker.Session().boto_region_name),确认当前SDK的运行区域和端点实际部署的区域完全一致,跨区域调用会无法识别端点。 - 校验IAM角色权限:你当前用于创建监控调度的IAM角色,需要具备
sagemaker:DescribeEndpoint权限,如果缺少该权限,SageMaker后台校验时会判定端点无效。 - 检查VPC配置匹配性:如果你的端点是部署在自定义VPC内的,需要在创建ModelQualityMonitor和监控调度时传入和端点一致的VPC配置,否则监控任务无法访问端点会触发校验失败。
后续注意事项
解决端点校验问题后,你还需要修正EndpointInput的属性路径配置:你的模型返回结果外层是列表结构,第一个元素才是包含label和score的字典,因此需要将参数修改为:
endpointInput = EndpointInput( endpoint_name=predictor.endpoint_name, probability_attribute="0.score", inference_attribute="0.label", destination="/opt/ml/processing/input_data", )
否则监控任务无法正常提取推理结果的标签和概率字段。
内容的提问来源于stack exchange,提问作者Baenka
相关产品推荐
相关产品推荐

