Amazon SageMaker AI 异步推理现在支持内联请求负载
Amazon SageMaker AI 异步推理新增内联负载支持,客户可直接在 InvokeEndpointAsync API 的请求体中发送推理负载,无需先上传到 S3。对于不超过128KB的负载,此举消除了网络往返,简化了客户端代码,并减少了操作复杂度。
今天,我们宣布 Amazon SageMaker AI 异步推理支持内联负载功能。客户现在可以直接在 InvokeEndpointAsync API 的请求体中发送推理负载,无需在每次调用前将输入数据上传到 Amazon S3。对于不超过 128,000 字节的负载,这一改变消除了整个网络往返时间,简化了客户端代码,并减少了异步推理工作负载的操作复杂性。
背景:以前的异步推理工作流程 Amazon SageMaker AI 异步推理允许您将推理请求排队并异步处理。它适用于大负载、可变流量或容忍秒到分钟延迟的工作负载。它还支持自动缩放到零,使其对突发或批量工作负载具有成本效益。在此之前,每次调用需要两个步骤:首先将输入负载上传到 S3 存储桶,然后调用端点并传递 S3 对象 URI 作为 InputLocation。端点异步处理请求并将输出写入配置的 S3 输出位置,客户端轮询或通过 SNS 通知接收结果。对于大负载(如图像、音频、多 MB 文档),这种模式效果很好。但对于需要比实时推理更长的处理时间的小输入负载(几 KB),强制性的 S3 依赖增加了不必要的复杂性。
新功能:通过 Body 参数发送内联负载 随着今天的发布,InvokeEndpointAsync 接受新的 Body 参数。当提供时,负载在 API 请求中内联发送,无需 S3 上传。关键细节包括:新参数 Body,原始字节,上限 128,000 字节;Body 和 InputLocation 互斥,如果同时设置两者,API 拒绝请求;输出行为不变,输出仍写入 S3 OutputLocation;端点兼容性方面,设计用于现有异步端点,无需模型或容器更改;错误处理方面,大小和互斥违规会同步返回 ValidationError。该功能已在 31 个商业 AWS 区域可用。
客户体验对比 变化在代码中最为明显。以下两个示例执行相同的异步调用,第一个使用之前的 S3 上传步骤,第二个使用新的内联 Body 参数。之前需要 S3 客户端、输入存储桶、IAM 权限、UUID 命名方案和清理策略。现在只需一个调用,无需 S3 客户端、UUID、输入存储桶或额外权限。
客户收益 内联负载消除了每次请求的网络跳转和依赖,带来五个具体好处:降低延迟(移除一次网络往返和一次 S3 PUT);简化架构(避免输入桶配置、生命周期策略、跨账户访问模式以及调用者的 IAM s3:PutObject 权限);减少错误路径(请求是单个 API 调用,要么入队要么失败);降低成本(每次内联调用消除 S3 PUT 费用);即时验证反馈(大小和互斥错误同步返回)。
何时使用每种方法 内联负载通常是小负载的简单选择,但 InputLocation 仍有其用途。对于负载 <=128KB 且无需在 S3 中保留输入数据的情况,推荐使用 Body。对于负载 >128KB(图像、音频、大型文档)或需要保留输入数据用于审计或重放的情况,仍应使用 InputLocation。对于混合负载,可在大小上分支,小负载用 Body,大负载用 InputLocation。
开始使用 要使用内联负载,您需要现有的 SageMaker AI 异步推理端点、最新的 AWS SDK for Python(Boto3)以及 IAM 权限 sagemaker:InvokeEndpointAsync。您还需要为异步端点配置 S3 输出桶。步骤包括:更新 AWS SDK(pip install --upgrade boto3),替换调用代码为直接使用 Body 参数,测试调用并验证响应中的 OutputLocation 字段。端点配置、模型容器或输出 S3 设置无需更改。完成后请清理资源以避免持续费用。
结论 SageMaker AI 异步推理的内联负载支持消除了异步推理工作流中的一个常见摩擦点:每次请求的强制 S3 上传。对于大多数适合 128,000 字节的推理负载,您现在可以发出单个 API 调用,让 SageMaker AI 处理其余部分。该功能设计为向后兼容,现有的 InputLocation 工作流保持不变。今天就更新您的 AWS SDK 并开始使用 InvokeEndpointAsync API 的 Body 参数。