オンライン予測の取得

AI Platform のオンライン予測は、可能な限り少ないレイテンシで、ホスト対象モデルによってデータを実行するように最適化されたサービスです。バッチサイズの小さいデータをサービスに送信すると、レスポンスで予測が返されます。

始める前に

予測をリクエストするには、まず次のことを行う必要があります。

リージョン

AI Platform のオンライン予測は、現在次のリージョンで利用できます。

  • us-central1
  • us-east1
  • us-east4
  • asia-northeast1
  • europe-west1

AI Platform のトレーニングと予測サービスで利用可能なリージョンの詳細については、リージョンのガイドをご覧ください。

モデルとバージョンの作成

モデルとバージョンのリソースを作成するときに、オンライン予測の実行方法について重要な決定を行います。

作成するリソース リソース作成時に決定すべきこと
モデル 予測を実行するリージョン
モデル オンライン予測のロギングを有効にする
バージョン 使用するランタイム バージョン
バージョン 使用する Python のバージョン
バージョン オンライン予測で使用するマシンタイプ

モデルまたはバージョンを作成した後は、上記の設定を更新できません。これらの設定を変更する必要がある場合は、新しい設定を使用して新しいモデルまたはバージョン リソースを作成し、モデルを再デプロイしてください。

オンライン予測に使用できるマシンタイプ

現在、オンライン予測ではシングルコア CPU とクアッドコア CPU をサポートしています。他のハードウェアのアルファ版プログラムへの参加を検討されている場合は、AI Platform のフィードバックをご覧ください。

名前 コア数 RAM(GB)
mls1-c1-m2(デフォルト) 1 2
mls1-c4-m2(ベータ版) 4 2

オンライン予測でクアッドコア CPU を使用する場合は、AI Platform モデル バージョンを作成するときにマシンタイプ mls1-c4-m2 を指定します。

gcloud

クアッドコア CPU を指定するには、gcloud beta コンポーネントを使用して、オプションのフラグ --machine-type "mls1-c4-m2" をコマンドに追加します。次に例を示します。

  gcloud components install beta

  gcloud beta ai-platform versions create "[YOUR_VERSION_NAME]" \
      --model "[YOUR_MODEL_NAME]" \
      --origin "[YOUR_GCS_PATH_TO_MODEL_DIRECTORY]"\
      --runtime-version "1.13"
      --python-version "3.5"
      --machine-type "mls1-c4-m2"

Python

この例では、Python 用 Google API クライアント ライブラリを使用します。モデル バージョンの作成方法について詳しくは、こちらをご覧ください。

クアッドコア CPU を指定するには、バージョン作成リクエストに渡す requestDict に、オプションのエントリ 'machineType': 'mls1-c4-m2' を追加します。次に例を示します。

   requestDict = {'name': '[YOUR_VERSION_NAME]',
      'description': '[YOUR_VERSION_DESCRIPTION]',
      'deploymentUri': '[YOUR_GCS_PATH_TO_MODEL_DIRECTORY]',
      'runtimeVersion': '1.13',
      'pythonVersion': '3.5',
      'machineType': 'mls1-c4-m2'}

これらのマシンタイプの料金については、料金ページをご覧ください。

オンライン予測リクエストのログのリクエスト

ログには費用が発生するため、AI Platform 予測サービスのデフォルトではリクエストに関するログ情報を提供しません。1 秒あたりクエリ数(QPS)が非常に多いオンライン予測では、かなりの数のログが生成される可能性があり、その場合は Stackdriver の料金ポリシーが適用されます。

オンライン予測のロギングを有効にするには、モデルリソースの作成時にログを生成するようにモデルを構成できます。ロギングには次の 2 つのタイプがあり、それぞれ独立して有効にすることができます。

  • アクセス ロギング。各リクエストのタイムスタンプやレイテンシなどの情報が記録されます。

  • ストリーム ロギング。予測ノードからの stderr ストリームと stdout ストリームが記録され、デバッグに役立ちます。このタイプのロギングはベータ版です。

gcloud

アクセス ロギングを有効にするには、gcloud ai-platform models create コマンドを使ってモデルを作成する際に --enable-logging フラグを指定します。次に例を示します。

gcloud ai-platform models create model_name \
  --regions us-central1 \
  --enable-logging

ストリーム ロギング(ベータ版)を有効にするには、gcloud beta コンポーネントを使用し、--enable-console-logging フラグを含めます。次に例を示します。

gcloud components install beta

gcloud beta ai-platform models create model_name \
  --regions us-central1 \
  --enable-console-logging

REST API

アクセス ロギングを有効にするには、projects.models.create でモデルを作成する際に、モデルリソース内の onlinePredictionLoggingTrue に設定します。

ストリーム ロギング(ベータ版)を有効にするには、モデルリソース内の onlinePredictionConsoleLogging フィールドを True に設定します。

オンライン予測の入力フォーマット

インスタンスをリスト形式にする

オンライン予測の基本形式は、それぞれの要素がデータ インスタンスを表すシンプルなリストをさらにリストにしたものです。

モデル バージョンがカスタム予測ルーチン(ベータ版)である場合、予測器で想定される任意の JSON データ型を使用して、予測入力を提供できます。

入力インスタンスのディメンションは、モデルで想定されるディメンションと必ず一致する必要があります。たとえば、モデルで 4 つの特徴(フィーチャー)が要求されている場合、それぞれの入力インスタンスの長さは 4 である必要があります。

オンライン予測の入力インスタンスを、projects.predict 呼び出しのメッセージ本文として渡します。詳しくは、リクエスト本文のフォーマット要件をご覧ください。

gcloud

  1. 入力ファイルがテキスト ファイルであり、各行に 1 つのインスタンスが JSON オブジェクトとして記述されていることを確認します。

    [1, 2, 3, 4]
    [5, 6, 7, 8]
    

REST API

  1. 各インスタンスをリスト内のアイテムにし、リストメンバーに instances という名前を付けます。

    {
      "instances": [
        [1, 2, 3, 4],
        [5, 6, 7, 8]
      ]
    }
    

予測のリクエスト

オンライン予測をリクエストするには、予測リクエストで入力データ インスタンスを送信します。リクエストとレスポンスの本文の形式については、予測リクエストの詳細をご覧ください。

モデルのバージョンを指定しない場合、モデルのデフォルトのバージョンが予測リクエストで使用されます。

gcloud

  1. 特定のモデル バージョンを指定する場合には、バージョン値などのパラメータを格納する環境変数を作成します。

    MODEL_NAME="[YOUR-MODEL-NAME]"
    INPUT_DATA_FILE="instances.json"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    
  2. gcloud ai-platform predict を使用して、デプロイ済みモデルにインスタンスを送信します。なお、--version は任意です。

    gcloud ai-platform predict --model $MODEL_NAME  \
                       --version $VERSION_NAME \
                       --json-instances $INPUT_DATA_FILE
    
  3. gcloud ツールはレスポンスを解析し、人が読める形式で予測をターミナルに出力します。predict コマンドで --format フラグを使用すると、JSON や CSV など別の出力形式を指定できます。使用可能な出力形式をご覧ください。

Python

Python 用 Google API クライアント ライブラリを使用すると、HTTP リクエストを手動で作成しなくても、AI Platform のトレーニング API と予測 API を呼び出すことができます。次のサンプルコードを実行する前に、認証を設定する必要があります。

import googleapiclient.discovery

def predict_json(project, model, instances, version=None):
    """Send json data to a deployed model for prediction.
    Args:
        project (str): project where the AI Platform Model is deployed.
        model (str): model name.
        instances ([[float]]): List of input instances, where each input
           instance is a list of floats.
        version: str, version of the model to target.
    Returns:
        Mapping[str: any]: dictionary of prediction results defined by the
            model.
    """
    # Create the AI Platform service object.
    # To authenticate set the environment variable
    # GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={'instances': instances}
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

scikit-learn と XGBoost の AI Platform