オンライン予測の取得

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

始める前に

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

リージョン

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

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

Cloud ML Engine のトレーニング サービスや予測サービスで利用可能なリージョンを完全に理解するには、リージョン ガイドをお読みください。

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

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

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

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

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

現在、オンライン予測ではシングルコア CPU とクアッドコア CPU をサポートしています。他のハードウェアのアルファ版プログラムへの参加をご希望の方は、Cloud ML Engine フィードバックまでお問い合わせください。

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

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

gcloud

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

  gcloud components install beta

  gcloud beta ml-engine 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'}

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

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

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

オンライン予測のロギングを有効にするには、モデルリソースの作成時にログを生成するようにモデルを構成します。

gcloud

gcloud ml-engine models create コマンドでモデルを作成するときに、--enable-logging フラグを指定します。

Python

projects.models.create でモデルを作成するときに、モデルリソースで onlinePredictionLoggingTrue に設定します。

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

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

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

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

オンライン予測の入力インスタンスは、projects.predict 呼び出しのメッセージ本文として渡します。

gcloud

  1. 入力ファイルはテキスト ファイルにします。それぞれのインスタンスを 1 つのリストとして記述し、1 行に 1 つのインスタンスを記述します。

    [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 ml-engine predict を使用して、インスタンスをデプロイ済みモデルに送信します。--version は任意です。

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

Python

Python 用 Google API クライアント ライブラリを使用すると、HTTP リクエストを手動で構築することなく、Cloud Machine Learning Engine 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 Cloud ML Engine 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 ML Engine 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 の Cloud ML Engine