当我从 sagemaker 端点获得预测时,终端节点会做什么?



在 sagemaker 中,文档讨论了需要具有 4 个特定函数的推理脚本。当我们得到预测时,python SDK 会向端点发送请求。

然后运行推理脚本。但是我找不到在 SDK 中运行推理脚本的位置。

当我浏览 sdk 代码时,Predictor.predict()方法调用 sagemaker 会话以将请求发布到终端节点并获得响应。这是 SDK 的最后一步。Sagemaker在收到该请求时显然正在做一些事情。

它运行的代码是什么?

端点本质上是在 Docker 容器中运行的 Flask Web 服务器

如果它是一个 scikit-learn 映像,当您调用终端节点时,它会从 S3 加载您的脚本,然后...

它调用input_fn(request_body: bytearray, content_type) -> np.ndarrayrequest_body解析为 numpy 数组

然后,它会调用您的model_fn(model_dir: str) -> object函数以从model_dir加载模型并返回模型

然后它调用predict_fn(input_object: np.ndarray, model: object) -> np.array,这会调用您的model.predict()函数并返回预测

然后,它调用output_fn(prediction: np.array, accept: str)predict_fn中获取结果并将其编码为accept类型

您不需要自己实现所有这些函数,因为有默认值

确实需要实现model_fn

只有在具有非数字数据时才需要实现input_fn

仅当您的模型使用.predict()以外的其他内容时,才需要实现predict_fn

您可以在此处查看默认函数实现的工作原理

最新更新