当我从 sagemaker 端点获得预测时,端点会做什么?
When I get a prediction from sagemaker endpoint, what does the endpoint do?
在 sagemaker 中,文档讨论了需要具有 4 个特定函数的推理脚本。当我们得到预测时,python SDK 会向端点发送请求。
然后是推理脚本运行s。但是我找不到推理脚本在 SDK 中的哪个位置 运行.
当我浏览 sdk 代码时,Predictor.predict()
方法调用 sagemaker 会话以 post 向端点发出请求并获得响应。这是 sdk 的最后一步。当 Sagemaker 收到该请求时,它显然正在做某事。
它 运行 的代码是什么?
端点本质上是 Docker 容器中的 Flask Web 服务器 运行
如果它是 scikit-learn 图像,当您调用端点时,它会从 S3 加载您的脚本,然后...
它调用 input_fn(request_body: bytearray, content_type) -> np.ndarray
将 request_body
解析为一个 numpy 数组
然后它调用您的 model_fn(model_dir: str) -> object
函数从 model_dir
和 return 加载模型
然后它调用 predict_fn(input_object: np.ndarray, model: object) -> np.array
,它调用您的 model.predict()
函数和 return 预测
然后调用output_fn(prediction: np.array, accept: str)
从predict_fn
中获取结果并将其编码为accept
类型
你不需要自己实现所有这些功能,因为有默认值
你做需要实施model_fn
如果你有非数字数据,你只需要实施input_fn
如果您的模型使用的不是 .predict()
,则您只需要实施 predict_fn
您可以看到默认函数实现是如何工作的here
在 sagemaker 中,文档讨论了需要具有 4 个特定函数的推理脚本。当我们得到预测时,python SDK 会向端点发送请求。
然后是推理脚本运行s。但是我找不到推理脚本在 SDK 中的哪个位置 运行.
当我浏览 sdk 代码时,Predictor.predict()
方法调用 sagemaker 会话以 post 向端点发出请求并获得响应。这是 sdk 的最后一步。当 Sagemaker 收到该请求时,它显然正在做某事。
它 运行 的代码是什么?
端点本质上是 Docker 容器中的 Flask Web 服务器 运行
如果它是 scikit-learn 图像,当您调用端点时,它会从 S3 加载您的脚本,然后...
它调用 input_fn(request_body: bytearray, content_type) -> np.ndarray
将 request_body
解析为一个 numpy 数组
然后它调用您的 model_fn(model_dir: str) -> object
函数从 model_dir
和 return 加载模型
然后它调用 predict_fn(input_object: np.ndarray, model: object) -> np.array
,它调用您的 model.predict()
函数和 return 预测
然后调用output_fn(prediction: np.array, accept: str)
从predict_fn
中获取结果并将其编码为accept
类型
你不需要自己实现所有这些功能,因为有默认值
你做需要实施model_fn
如果你有非数字数据,你只需要实施input_fn
如果您的模型使用的不是 .predict()
predict_fn
您可以看到默认函数实现是如何工作的here