リアルタイム予測のリクエスト - Amazon Machine Learning

Amazon Machine Learning サービスの更新や、その新しいユーザーの受け入れは行っていません。このドキュメントは既存のユーザー向けに提供されていますが、更新は終了しています。詳細については、「Amazon Machine Learning とは」を参照してください。

リアルタイム予測のリクエスト

リアルタイム予測は、Amazon Machine Learning (Amazon ML) への同期呼び出しです。Amazon ML がリクエストを受け取ったときに予測が作成され、すぐにレスポンスが返されます。リアルタイム予測は一般的に、インタラクティブなウェブアプリケーション、モバイルアプリケーション、デスクトップアプリケーションで予測機能を有効にするのに使用されます。低レイテンシー Predict API を使用して、Amazon ML で作成された ML モデルに対してリアルタイム予測のためのクエリを実行します。この Predict オペレーションでは、リクエストペイロードで 1 つの入力観測を受け入れ、レスポンスで同期的に予測を返します。これは、入力観測の位置を示す Amazon ML の ID データソースオブジェクトで呼び出され、すべての観測の予測を含むファイルの URI を非同期に返す、バッチ予測 API とは別のものです。Amazon ML はほとんどのリアルタイム予測リクエストに 100 ミリ秒以内に応答します。

Amazon ML コンソールの料金を発生させずにリアルタイム予測を試すことができます。リアルタイム予測を使用すると決定した場合、最初にリアルタイム予測生成のエンドポイントを作成します。これは Amazon ML コンソールまたは CreateRealtimeEndpoint API を使用して実行できます。エンドポイントの作成後、リアルタイム予測 API を使用してリアルタイム予測を生成します。

注記

モデルのリアルタイムエンドポイントを作成した後、モデルのサイズに応じたキャパシティー予約の料金が発生し始めます。詳細については、「 の料金」を参照してください。リアルタイムエンドポイントをコンソールで作成する場合、コンソールにはエンドポイントで継続的に発生する予想請求額の内訳が表示されます。そのモデルによるリアルタイム予測の取得が不要になった場合に料金を発生させないためには、コンソールまたは DeleteRealtimeEndpoint オペレーションを使用して、リアルタイムエンドポイントを削除します。

Predict のリクエストとレスポンスの例については、「Amazon Machine Learning API リファレンス」の「Predict」を参照してください。自分のモデルを使用する正確なレスポンス形式の例を参照するには、「リアルタイム予測の試用」を参照してください。

リアルタイム予測の試用

リアルタイム予測を有効にするかどうかを判断するのを助けるために、リアルタイム予測エンドポイントの設定に関係する追加料金を発生させずに、Amazon ML で単一のデータレコードの予測の生成を実際に試すことができます。リアルタイム予測をテストするには、ML モデルを持っている必要があります。大きな規模でリアルタイム予測を作成するには、「Amazon Machine Learning API リファレンス」の Predict 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. 続行するには、フォームの各フィールドにデータを入力するか、1 つのデータレコードを CSV 形式でテキストボックスに貼り付けます。

    フォームを使用するには、各 [] フィールドに、リアルタイム予測のテストに使用したいデータを入力します。入力しているデータレコードに 1 つまたは複数のデータ属性の値が含まれていない場合、入力フィールドは空白のままにします。

    データレコードを提供する場合、[レコードの貼り付け] を選択します。テキストフィールドに CSV 形式の 1 つのデータ行を貼り付け、[Submit] (送信) を選択します。Amazon ML が [Value] (値) フィールドに自動的に入力します。

    注記

    データレコードのデータの列の数はトレーニングデータと同じで、同じ順序に配置されている必要があります。唯一の例外は、ターゲット値を省略する必要があることです。ターゲット値を含めた場合、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. [Create] (作成) を選択します。リアルタイムエンドポイントのリクエストが Amazon ML に送信され、キューに入ります。リアルタイムエンドポイントのステータスは [更新中] になります。

    Real-time endpoint status shown as "Updating" in a user interface element.
  6. リアルタイムエンドポイントの準備ができたら、ステータスは [Ready] (準備完了) に変化し、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 model summary] (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] 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 モデルへの入力が含まれます。これは、ターゲット変数がないトレーニングデータセットの 1 行のデータに相当します。トレーニングデータの値のタイプにかかわらず、Record は文字列から文字列へのマッピングを含みます。

注記

値を持っていない変数を省略できますが、その場合予測精度が低下することがあります。変数が多いほど、モデルはより正確になります。

Predict リクエストによって返されるレスポンスのフォーマットは、予測のためにクエリされているモデルのタイプによって異なります。いずれの場合も、[details] フィールドには予測リクエストに関する情報が保存され、特に [PredictiveModelType] フィールドにはモデルタイプが含まれます。

以下はバイナリモデルのレスポンスの例です。

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

[predictedLabel] フィールドに予測されたラベルが含まれていることに注意してください。この場合は 0 になります。Amazon ML は、予測スコアを分類カットオフと比較することで、予測されたラベルを計算します。

  • ML モデルに現在関連付けられている分類カットオフは、ScoreThreshold フィールドを GetMLModel オペレーションのレスポンスで調べることで、または Amazon 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. [リアルタイムエンドポイントの削除] ダイアログボックスで、[削除] を選択します。