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

发布于 2025-01-11 14:02:15 字数 254 浏览 0 评论 0原文

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

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

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

它运行的代码是什么?

In sagemaker, the docs talk about inference scripts requiring to have 4 specific functions. When we get a prediction, the python SDK sends a request to the endpoint.

Then the inference script runs. But I cannot find where in the SDK the inference script is run.

When I navigate through the sdk code the Predictor.predict() method calls the sagemaker session to post a request to the endpoint and get a response. That is the final step in the sdk. Sagemaker is obviously doing something when it receives that request.

What is the code that it runs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

层林尽染 2025-01-18 14:02:15

端点本质上是在 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 类型

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

有默认值< /strong> 需要实施model_fn

如果您有非数字数据,则只需实现 input_fn

如果您的模型使用 以外的其他内容,则只需实现 predict_fn .predict()

您可以看到默认函数实现如何工作此处

The endpoint is essentially a Flask web server running in a Docker container

If it's a scikit-learn image, when you invoke the endpoint, it loads your script from S3, then...

It calls input_fn(request_body: bytearray, content_type) -> np.ndarray to parse the request_body into a numpy array

Then it calls your model_fn(model_dir: str) -> object function to load the model from model_dir and return the model

Then it calls predict_fn(input_object: np.ndarray, model: object) -> np.array, which calls your model.predict() function and returns the prediction

Then it calls output_fn(prediction: np.array, accept: str) to take the result from predict_fn and encode it to the accept type

You don't need to implement all of these functions yourself, as there are defaults

You do need to implement model_fn

You only need to implement input_fn if you have non numeric data

You only need to implement predict_fn if your model uses something other than .predict()

You can see how the default function implementations work here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文