请求实时预测 - Amazon Machine Learning

我们不再更新 Amazon Machine Learning 服务,也不再接受新用户使用该服务。本文档可供现有用户使用,但我们不会再对其进行更新。有关更多信息,请参阅什么是 Amazon Machine Learning

请求实时预测

实时预测是对 Amazon Machine Learning (Amazon ML) 的同步调用。Amazon ML 在收到请求时进行预测,并立即返回响应。实时预测通常用于实现交互式 Web、移动或桌面应用程序中的预测功能。您可以使用低延迟 Predict API,查询使用 Amazon ML 创建的 ML 模型进行实时预测。Predict 操作接受请求负载中的单个输入观察并在响应中同步返回预测。这使其有别于批量预测 API,后者使用指向输入观察位置的 Amazon ML 数据源对象的 ID 进行调用,并异步返回 URI,指向包含所有这些观察的预测的文件。Amazon ML 响应大多数实时预测请求的时间不超过 100 毫秒。

您可以在 Amazon ML 控制台中尝试实时预测而不产生任何费用。如果您随后决定使用实时预测,您必须首先为生成实时预测而创建终端节点。您可以在 Amazon ML 控制台中或者使用 CreateRealtimeEndpoint API 执行此操作。在您有终端节点之后,使用实时预测 API 来生成实时预测。

注意

在您为模型创建实时终端节点之后,您将开始产生基于模型大小的容量预留费用。有关更多信息,请参阅 定价。如果您在控制台中创建实时终端节点,控制台会显示终端节点将持续产生的估计费用明细。要在您不再需要从模型获取实时预测时停止产生费用,请使用控制台或 DeleteRealtimeEndpoint 操作删除实时终端节点。

有关 Predict 请求和响应的示例,请参阅 Amazon Machine Learning API 参考中的预测。要查看使用您模型的确切响应格式的示例,请参阅试用实时预测

试用实时预测

为了帮助您决定是否启用实时预测,Amazon ML 允许您尝试针对单个数据记录生成预测,而不会产生与设置实时预测终端节点相关的额外费用。要试用实时预测,您必须拥有 ML 模型。要创建更大规模的实时预测,请使用 Amazon Machine Learning API 参考中的预测 API。

尝试实时预测
  1. 登录 AWS Management Console 并打开 Amazon Machine Learning 控制台 (https://console.aws.amazon.com/machinelearning/)。

  2. 在导航栏的 Amazon Machine Learning 下拉菜单中,选择 ML 模型

  3. 从教程中选择您试用实时预测所要使用的模型,例如 Subscription propensity model

  4. 在 ML 模型报告页面的预测下,选择摘要,然后选择尝试实时预测

    Tools section with option to try real-time predictions.

    Amazon ML 显示变量列表,这些变量组成了 Amazon ML 训练您模型时使用的数据记录。

  5. 您可以继续在表单的各个字段中输入数据,或者以 CSV 格式粘贴单个数据记录到文本框中。

    要使用表单,对于各个字段,输入您希望用于测试实时预测的数据。如果您输入的数据记录不包含一个或多个数据属性的值,请将条目字段留空。

    要提供数据记录,请选择粘贴记录。将 CSV 格式的一行数据粘贴到文本字段中,然后选择提交。Amazon ML 自动为您填充字段。

    注意

    数据记录中的数据必须与训练数据具有相同的列数,并且按相同顺序排列。唯一例外是您应省略目标值。如果您包括目标值,Amazon ML 将忽略它。

  6. 在页面底部,选择创建预测。Amazon ML 立即返回预测。

    预测结果窗格中,您可以看到 Predict API 调用返回的预测对象,以及 ML 模式类型、目标变量的名称以及预测的类别或值。有关解释结果的更多信息,请参阅解释二进制分类 ML 模型的批量预测文件的内容

    Prediction results showing binary ML model type with predicted label 0 and score details.

创建实时终端节点

要生成实时预测,您需要创建实时终端节点。要创建实时终端节点,您必须已经有要用于生成实时预测的 ML 模型。您可以使用 Amazon ML 控制台或者调用 CreateRealtimeEndpoint API 来创建实时终端节点。有关使用 CreateRealtimeEndpoint API 的更多信息,请参阅《Amazon Machine Learning API 参考》中的 https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateRealtimeEndpoint.html

创建实时终端节点
  1. 登录 AWS Management Console 并打开 Amazon Machine Learning 控制台 (https://console.aws.amazon.com/machinelearning/)。

  2. 在导航栏的 Amazon Machine Learning 下拉菜单中,选择 ML 模型

  3. 选择要生成实时预测的模型。

  4. ML 模型摘要页面上的预测下,选择创建实时终端节点

    此时会显示一个对话框,说明如何为实时预测定价。

  5. 选择创建。实时终端节点请求发送到 Amazon ML 并进入队列中。实时终端节点的状态为正在更新

    Real-time endpoint status shown as "Updating" in a user interface element.
  6. 实时终端节点就绪之后,状态更改为准备就绪,并且 Amazon ML 显示终端节点 URL。使用终端节点 URL 可通过 Predict API 创建实时预测请求。有关使用 Predict API 的更多信息,请参阅《Amazon Machine Learning API 参考》中的 https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html

    Real-time endpoint status showing Ready with an endpoint URL and Peak Requests Per Second value.

查找实时预测终端节点(控制台)

要使用 Amazon ML 控制台查找 ML 模型的终端节点 URL,请导航到模型的 ML 模型摘要页面。

查找实时终端节点 URL
  1. 登录 AWS Management Console 并打开 Amazon Machine Learning 控制台 (https://console.aws.amazon.com/machinelearning/)。

  2. 在导航栏的 Amazon Machine Learning 下拉菜单中,选择 ML 模型

  3. 选择要生成实时预测的模型。

  4. ML 模型摘要页面上,向下滚动直至您看到预测部分。

  5. 模型的终端节点 URL 在实时预测中列出。使用 URL 作为您实时预测调用的终端节点 Url。有关如何使用终端节点生成预测的信息,请参阅《Amazon Machine Learning API 参考》中的 https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_Predict.html

查找实时预测终端节点 (API)

在您使用 CreateRealtimeEndpoint 操作创建实时终端节点时,在响应中向您返回终端节点的 URL 和状态。如果您使用控制台创建实时终端节点,或者如果您希望检索以前创建的终端节点的 URL 和状态,请使用您要用来查询实时预测的模型的 ID 调用 GetMLModel 操作。终端节点信息包含在响应的 EndpointInfo 部分中。对于关联了实时终端节点的模型,EndpointInfo 可能类似于:

"EndpointInfo":{ "CreatedAt": 1427864874.227, "EndpointStatus": "READY", "EndpointUrl": "https://endpointUrl", "PeakRequestsPerSecond": 200 }

没有实时终端节点的模型将返回以下内容:

EndpointInfo":{ "EndpointStatus": "NONE", "PeakRequestsPerSecond": 0 }

创建实时预测请求

示例 Predict 请求有效负载可能类似于下面这样:

{ "MLModelId": "model-id", "Record":{ "key1": "value1", "key2": "value2" }, "PredictEndpoint": "https://endpointUrl" }

PredictEndpoint 字段必须对应于 EndpointInfo 结构的 EndpointUrl 字段。Amazon ML 使用此字段将请求路由到实时预测队列中的相应服务器。

MLModelId 是以前训练的模型(带有实时终端节点)的标识符。

Record 是变量名到变量值的映射。每一对表示一个观察。Record 映射包含对 Amazon ML 模型的输入。这类似于训练数据集中无目标变量的单行数据。无论在训练数据中使用哪种值类型,Record 都包含字符串到字符串映射。

注意

您可以忽略您没有值的变量,不过这可能会减少预测的准确性。您包括的变量越多,模型就越准确。

Predict 请求返回的响应格式取决于进行预测时查询的模型类型。在所有情况下,details 字段包含有关预测请求的信息,特别是包括带有模型类型的 PredictiveModelType 字段。

以下示例显示二进制模型的响应:

{ "Prediction":{ "details":{ "PredictiveModelType": "BINARY" }, "predictedLabel": "0", "predictedScores":{ "0": 0.47380468249320984 } } }

请注意包含预测标签的 predictedLabel 字段,在本例中为 0。Amazon ML 将预测分数与分类截断值进行比较来计算预测标签。

  • 您可以检查 GetMLModel 操作的响应中的 ScoreThreshold 字段,或者在 Amazon ML 控制台中查看模型信息,来获取当前与 ML 模型关联的分类截断值。如果您未设置分数阈值,Amazon ML 会使用默认值 0.5。

  • 您可以通过检查 predictedScores 映射来获取二进制分类模型的确切预测分数。在此映射中,预测标签与确切的预测分数成对使用。

有关二进制预测的更多信息,请参阅解释预测

以下示例显示来自递归模型的响应。请注意在 predictedValue 字段中找到的预测数值:

{ "Prediction":{ "details":{ "PredictiveModelType": "REGRESSION" }, "predictedValue": 15.508452415466309 } }

以下示例显示多类别模型的响应:

{ "Prediction":{ "details":{ "PredictiveModelType": "MULTICLASS" }, "predictedLabel": "red", "predictedScores":{ "red": 0.12923571467399597, "green": 0.08416014909744263, "orange": 0.22713537514209747, "blue": 0.1438363939523697, "pink": 0.184102863073349, "violet": 0.12816807627677917, "brown": 0.10336143523454666 } } }

预测标签/分类与二进制分类模型类似,可在 predictedLabel 字段中找到。您可以通过查看 predictedScores 映射,进一步了解预测与各分类相关联的强度。此映射中某个分类的分数越高,预测与该分类的相关性就越强,最高值最终被选择作为 predictedLabel

有关多分类预测的更多信息,请参阅多类别模型洞察

删除实时终端节点

当您完成实时预测时,请删除实时终端节点以避免产生额外的费用。在您删除终端节点之后,立即停止产生费用。

删除实时终端节点
  1. 登录 AWS Management Console 并打开 Amazon Machine Learning 控制台 (https://console.aws.amazon.com/machinelearning/)。

  2. 在导航栏的 Amazon Machine Learning 下拉菜单中,选择 ML 模型

  3. 选择不再需要实时预测的模型。

  4. 在 ML 模型报告页面上的预测下,选择摘要

  5. 选择删除实时终端节点

  6. 删除实时终端节点对话框中,选择删除