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

AWS SageMaker脚本模式:input_fn、predict_fn、output_fn的调用与工作原理

AWS SageMaker脚本模式:input_fn/predict_fn/output_fn调用逻辑解析

在SageMaker脚本模式部署的模型端点运行时,这三个函数由SageMaker推理容器的内置框架自动触发调用,全程无需手动干预,完整调用时序和触发逻辑如下:

整体调用流程

客户端发送预测请求到SageMaker端点后,容器会按固定顺序依次触发input_fn → predict_fn → output_fn,完成从原始请求到最终响应的转换。

1. input_fn的触发时机与逻辑

当容器接收到客户端的原始请求数据(HTTP请求体)后,第一个触发input_fn:

  • 容器自动传入两个参数:原始请求数据、请求头中的Content-Type值(比如application/json、text/csv)
  • 核心作用是将原始请求数据解析、预处理为模型可直接接收的格式(如numpy数组、PyTorch Tensor、MXNet NDArray等),返回处理后的输入对象
  • 若未自定义input_fn,容器会使用默认实现,自动处理常见的Content-Type格式

2. predict_fn的触发时机与逻辑

input_fn执行完成并返回有效输入对象后,立刻触发predict_fn:

  • 容器自动传入两个参数:input_fn返回的处理后数据、容器启动时通过model_fn预加载好的模型实例
  • 核心作用是调用模型对输入数据执行推理计算,返回原始推理结果(如分类概率、回归数值等)
  • 注意:模型实例在容器启动阶段一次性加载,所有请求的predict_fn都会复用同一个模型实例,不会重复加载模型

3. output_fn的触发时机与逻辑

predict_fn返回推理结果后,最后触发output_fn:

  • 容器自动传入两个参数:predict_fn返回的推理结果、请求头中的Accept值(客户端期望的响应格式)
  • 核心作用是将原始推理结果转换为客户端可解析的格式(如JSON、CSV、二进制数据等),返回格式化后的响应内容
  • 若未自定义output_fn,容器会默认把结果转为JSON格式返回

完整调用时序示例

  1. 客户端发送POST请求到端点,请求体为JSON格式的输入数据,请求头设置Content-Type: application/json和Accept: application/json
  2. 容器接收请求,调用input_fn,传入JSON字符串和application/json,解析为模型所需的Tensor
  3. 容器调用predict_fn,传入Tensor和预加载的模型,得到推理出的分类概率
  4. 容器调用output_fn,传入分类概率和application/json,转换为JSON格式的响应
  5. 容器把JSON响应返回给客户端

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:54:14