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

如何在SageMaker异步端点的失败消息中自定义failureReason?

SageMaker异步端点自定义failureReason字段方案

核心思路

SageMaker异步端点默认的failureReason是通用提示,要自定义该字段,需通过自定义容器镜像+推理脚本异常捕获格式化实现,让端点将你定义的错误详情自动填充到SNS失败消息的failureReason中。

具体步骤

  1. 改造推理脚本的错误处理
    在predict_fn、model_fn等推理核心函数中,捕获所有业务/系统异常,将异常信息格式化后抛出。SageMaker会自动将抛出的异常文本同步到failureReason字段。
    示例代码:

    def predict_fn(input_data, model):
        try:
            # 你的推理逻辑
            inference_result = model(input_data)
            return inference_result
        except RuntimeError as e:
            # 捕获CUDA OOM等运行时错误
            if "CUDA out of memory" in str(e):
                raise Exception(f"推理失败:CUDA内存不足 - {str(e)}")
            raise Exception(f"推理失败:运行时错误 - {str(e)}")
        except AssertionError as e:
            # 捕获自定义断言错误
            raise Exception(f"推理失败:断言验证不通过 - {str(e)}")
        except Exception as e:
            # 兜底捕获其他错误
            raise Exception(f"推理失败:未知错误 - {str(e)}")
    

    注意:必须将异常包装成Exception抛出,且异常信息要包含具体错误详情。

  2. 构建并使用自定义容器镜像

    • 基于官方SageMaker推理镜像(如PyTorch/TensorFlow官方镜像),将改造后的推理脚本、依赖包打包进镜像。
    • 确保镜像中的SageMaker推理工具包(sagemaker-inference)为最新版本,旧版本不支持错误信息同步到SNS的failureReason字段。
  3. 处理重复消息问题
    如果之前同时用boto3发送自定义SNS消息,会导致收到两条失败通知:

    • 若想保留自动SNS消息并带自定义详情:无需修改端点的ErrorTopic配置,按步骤1、2部署后,自动消息的failureReason会变为你自定义的内容。
    • 若只想保留自定义消息:删除端点配置中的ErrorTopic参数,在推理脚本的异常捕获逻辑中,调用boto3发送自定义SNS通知即可。
  4. 验证效果
    部署自定义镜像的异步端点,构造触发异常的测试请求(如超大输入触发CUDA OOM),查看SNS ErrorTopic收到的消息,此时failureReason字段会显示你自定义的具体错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:01:14