View a markdown version of this page

请求 Real-time 预测 - Amazon Machine Learning

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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

请求 Real-time 预测

实时预测是对 Amazon Machine Learning (Amazon ML) 的同步调用。在 Amazon ML 收到请求时做出预测,并立即返回响应。 Real-time 预测通常用于在交互式 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 参考中的预测。要查看使用您模型的确切响应格式的示例,请参阅尝试 Real-Time 预测

尝试 Real-Time 预测

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

尝试实时预测
  1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台,网址为https://console.aws.amazon.com/machinelearning/

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

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

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

    带有 “尝试实时预测” 链接的 “工具” 部分。

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

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

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

    要提供数据记录,请选择粘贴记录。将单 CSV-formatted 行数据粘贴到文本字段中,然后选择 “提交”。Amazon ML 自动为您填充字段。

    注意

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

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

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

    预测结果窗格显示二元分类,预测标签为 0,分数为 0.03348433。

创建 Real-Time 终端节点

要生成实时预测,您需要创建实时终端节点。要创建实时终端节点,您必须已经有要用于生成实时预测的 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 管理控制台 并打开 Amazon Machine Learning 控制台,网址为https://console.aws.amazon.com/machinelearning/

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

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

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

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

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

    启用 “实时预测” 部分,将 Real-time 端点状态显示为正在更新。
  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 端点状态显示已就绪,终端节点 URL 和每秒 200 个请求。

定位 Real-time 预测终端节点(控制台)

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

查找实时终端节点 URL
  1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台,网址为https://console.aws.amazon.com/machinelearning/

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

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

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

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

定位 Real-time 预测端点 (API)

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

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

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

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

创建 Real-time 预测请求

示例 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 } } }

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

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

删除 Real-Time 终端节点

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

删除实时终端节点
  1. 登录 AWS 管理控制台 并打开 Amazon Machine Learning 控制台,网址为https://console.aws.amazon.com/machinelearning/

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

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

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

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

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