7

我正在使用 java Sagemaker SDK 调用 Sagemaker 端点。我发送的数据几乎不需要清理,模型就可以将其用于预测。我怎样才能在 Sagemaker 中做到这一点。

我在 Jupyter 笔记本实例中有一个预处理功能,它在传递该数据以训练模型之前清理训练数据。现在我想知道我是否可以在调用端点时使用该函数,或者该函数是否已被使用?如果有人愿意,我可以显示我的代码吗?

编辑 1 基本上,在预处理中,我正在做标签编码。这是我的预处理功能

def preprocess_data(data):
 print("entering preprocess fn")
 # convert document id & type to labels
 le1 = preprocessing.LabelEncoder()
 le1.fit(data["documentId"])
 data["documentId"]=le1.transform(data["documentId"])
 le2 = preprocessing.LabelEncoder()
 le2.fit(data["documentType"])
 data["documentType"]=le2.transform(data["documentType"])
 print("exiting preprocess fn")
 return data,le1,le2

这里的“数据”是一个熊猫数据框。

现在我想在调用端点时使用这些 le1,le2。我想在 sagemaker 本身而不是在我的 java 代码中进行此预处理。

4

4 回答 4

4

SageMaker 现在有一个新功能,称为推理管道。这使您可以构建由两到五个容器组成的线性序列,用于预处理/后处理请求。然后将整个管道部署在单个端点上。

https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html

于 2019-01-22T13:11:59.790 回答
2

一种选择是将您的预处理代码作为 AWS Lambda 函数的一部分,并在预处理完成后使用该 Lambda 调用 SageMaker 的调用端点。AWS Lambda 支持 Python,应该很容易拥有与 Jupyter 笔记本中相同的代码,也在该 Lambda 函数中。您还可以使用该 Lambda 调用外部服务(例如 DynamoDB)来查找数据以丰富数据。

您可以在 SageMaker 文档中找到更多信息:https ://docs.aws.amazon.com/sagemaker/latest/dg/getting-started-client-app.html

于 2018-04-01T18:55:50.407 回答
1

您需要编写一个脚本并在创建模型时提供该脚本。该脚本将有一个 input_fn ,您可以在其中进行预处理。有关更多详细信息,请参阅 aws 文档。

https://docs.aws.amazon.com/sagemaker/latest/dg/mxnet-training-inference-code-template.html

于 2018-03-31T22:34:34.277 回答
0

SageMaker MXNet 容器是开源的。

您在这里添加熊猫做 docker 容器:https ://github.com/aws/sagemaker-mxnet-containers/blob/master/docker/1.1.0/Dockerfile.gpu#L4

该仓库还包含有关如何构建容器的说明:https ://github.com/aws/sagemaker-mxnet-containers#building-your-image

于 2018-04-09T03:54:57.633 回答