継続評価ジョブの作成

継続評価ジョブでは、AI Platform Prediction にデプロイしたモデル バージョンに対する AI Platform Data Labeling Service の継続評価方法を定義します。モデル バージョンの評価ジョブを作成すると、次の 2 つの処理が行われます。

  • モデル バージョンがオンライン予測を行うと、予測のうちの一部の入力と出力が BigQuery テーブルに保存されます。
  • 一定の間隔で継続評価ジョブが実行されて、次のタスクが行われます。
    1. 前回のジョブ実行以降に BigQuery 内に新しく作成された行をすべて含めた Data Labeling Service データセットが作成されます。
    2. (省略可)ラベリング リクエストが送信されて、人間のレビューアが予測に対してグラウンド トゥルースのラベルを付けます。
    3. 一連の評価指標が計算されます。これらの指標を Google Cloud コンソールで表示できます。

始める前に

始める前に、特定のモデル要件を満たすモデル バージョンを AI Platform Prediction にデプロイする必要があります。特定の Google Cloud APIs を有効にする必要もあります。以上の要件を満たす方法については、継続評価を始める前にをご覧ください。

基本オプションを構成する

以降のセクションで、ジョブ作成ページに移動して評価ジョブの基本オプションを構成する方法を説明します。

モデル バージョンの評価ジョブを作成するには、Google Cloud Console でそのモデル バージョンのページに移動し、ジョブ作成ページを開きます。

  1. Google Cloud Console で AI Platform の [モデル] ページを開きます。

    AI Platform の [モデル] ページに移動

  2. 評価ジョブを作成する対象のモデル バージョンが含まれるモデルの名前をクリックします。

  3. 評価ジョブを作成する対象のモデル バージョンの名前をクリックします。すでに評価ジョブが関連付けられているモデル バージョンは選択できません。

  4. [評価] タブをクリックします。[評価ジョブを設定] をクリックします。

説明、モデルの目的、ラベル、サンプリング率を指定する

次の手順で、ジョブ作成フォームで指定する必要がある基本的な構成詳細を説明します。

  1. [ジョブの説明] フィールドに、評価ジョブの説明を追加します。

  2. [モデルの目的] フィールドに、機械学習モデルで行うタスクのタイプを指定します。詳細については、継続評価でサポートされている機械学習モデルのタイプをご覧ください。

    • モデルで分類を行う場合は、[分類タイプ] フィールドに、単一ラベル分類またはマルチラベル分類のどちらを行うかを指定します。
    • モデルで画像オブジェクト検出を行う場合は、IOU(Intersection over Union)の最小値を 0~1 の範囲で指定します。これにより、予測された境界ボックスがグラウンド トゥルースの境界ボックスと比べたときに、予測を正しいとみなす類似度が定義されます。
  3. [予測ラベルのファイルパス] フィールドに、モデルの予測に使用可能なラベルを含む、Cloud Storage 内の CSV ファイルのパスを指定します。このファイルにより、モデルのアノテーション仕様セットが定義されます。このファイルを構造化する方法については、こちらをご覧ください。

  4. [1 日のサンプリングの割合] フィールドに、モデル バージョンによって提供される予測のうち、BigQuery にエクスポートして継続評価の一環として分析する割合を指定します。

    また、1 回の評価期間中にサンプリングする予測の最大数を設定するには、[1 日のサンプリングの上限] に値を指定します。

    たとえば、継続評価のために予測の 10% をサンプリングするとします。ただし、特定の日に多数の予測を取得する場合は、その日の評価ジョブの実行で 100 件を超える予測をサンプリングすることは避けてください(予測の数が多いと、人間のレビューアがラベルを付けるのに時間がかかり、予想以上の Data Labeling Service 費用が発生する可能性があります)。

BigQuery テーブルを指定する

[BigQuery テーブル] フィールドには、Data Labeling Service がモデル バージョンからサンプリングした予測を格納できる BigQuery テーブルの名前を指定する必要があります。

まだ存在していないテーブルの名前を指定すると、Data Labeling Service により自動的に適切なスキーマを持つテーブルが作成されます。

テーブルの完全な名前を次の形式で指定する必要があります。 bq://YOUR_PROJECT_ID.YOUR_DATASET_NAME.YOUR_TABLE_NAME

  • YOUR_PROJECT_ID は、現在評価ジョブを作成しているプロジェクトの ID です。
  • YOUR_DATASET_NAME は、任意の有効な BigQuery データセット名です。そのデータセットがまだ存在していなくてもかまいません。
  • YOUR_TABLE_NAME は、任意の有効な BigQuery テーブル名です。

指定したテーブルがすでに存在する場合、そのテーブルのスキーマは継続評価に適切なものでなければなりません。

フィールド名タイプモード
モデルSTRING必須
model_versionSTRING必須
時間TIMESTAMP必須
raw_dataSTRING必須
raw_predictionSTRINGNULLABLE
groundtruthSTRINGNULLABLE

テーブルに上記以外の列を追加することはできません。

予測キーを指定する

入力に含まれる特定のフィールドにはキーを指定して、BigQuery テーブルに格納されている元の予測の入力および出力 JSON から、Data Labeling Service が必要な情報を抽出できるようにする必要があります。モデル バージョンが入力を受け入れ、必要な形式で予測を返すことを確認してください。そのうえで、関連する次のキーを指定します。

  • データキー: モデル バージョンの予測入力に含まれる、予測に使用されたデータを格納するフィールドへのキー。ヒューマン ラベリングを有効にすると、Data Labeling Service はこのデータを、グラウンド トゥルースのラベリング担当のレビューアに渡します。また、Google Cloud Console で評価指標を表示すると、このデータを使用した対象比較が表示されます。

    モデル バージョンでテキスト分類または一般的な分類を行う場合は、このキーを指定する必要があります。モデル バージョンで画像分類または画像オブジェクト検出を行う場合も、そのモデル バージョンが base64 エンコードされた画像を予測入力として受け入れるとしたら、このキーを指定する必要があります。

  • データ参照キー: モデル バージョンの予測入力に含まれる、画像の Cloud Storage パスを格納するフィールドへのキー。Data Labeling Service はこのキーで指定された画像を読み込み、データキーを使用する場合と同じ目的でその画像を使用します。

    このキーを指定する必要があるのは、画像分析または画像オブジェクト検出を行うモデル バージョンが予測入力として Cloud Storage にある画像へのパスを受け入れる場合のみです。少なくともデータキーデータ参照キーのいずれか 1 つが必要です。

  • 予測ラベルキー: モデル バージョンの予測出力に含まれる、予測されたラベルの配列を格納するフィールドへのキー。Data Labeling Service は混同行列などの評価指標を計算するために、これらの値をグラウンド トゥルースの値と比較します。

    このフィールドは必須です。

  • 予測スコアキー: モデル バージョンの予測出力に含まれる、予測されたスコアの配列を格納するフィールドへのキー。Data Labeling Service は適合率 / 再現率曲線などの評価指標を計算するために、これらの値を予測ラベルとグラウンド トゥルースのラベルとともに使用します。

    このフィールドは必須です。

  • 境界ボックスキー: モデル バージョンの予測出力に含まれる、境界ボックスの配列を格納するフィールドへのキー。画像オブジェクト検出を評価する場合は必須です。

    モデル バージョンで画像オブジェクト検出を行う場合にのみ、このキーを指定します。

予測キーの例

次のセクションに、さまざまなタイプのモデルに予測キーを指定する例を記載します。

画像分類

Base64 エンコードの例

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データキー: image_bytes/b64
  • 予測ラベルキー: sentiments
  • 予測スコアキー: confidence

Cloud Storage 参照の例

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データ参照キー: image_path
  • 予測ラベルキー: sentiments
  • 予測スコアキー: confidence

テキスト分類

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "text": "If music be the food of love, play on;"
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データキー: text
  • 予測ラベルキー: sentiments
  • 予測スコアキー: confidence

一般分類

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "weather": [
        "sunny",
        72,
        0.22
      ]
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データキー: weather
  • 予測ラベルキー: sentiments
  • 予測スコアキー: confidence

画像オブジェクト検出

Base64 エンコードの例

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データキー: image_bytes/b64
  • 予測ラベルキー: species
  • 予測スコアキー: probability
  • 境界ボックスキー: bird_locations

Cloud Storage 参照の例

モデル バージョンが次の入力を受け入れるとします。

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

次の出力が返されたとします。

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

この場合、次のキーを指定します。

  • データ参照キー: image_path
  • 予測ラベルキー: species
  • 予測スコアキー: probability
  • 境界ボックスキー: bird_locations

グラウンド トゥルース メソッドを指定する

継続評価は、機械学習モデルの予測と人間がアノテーションを付けたグラウンド トゥルースのラベルとを比較することによって行われます。グラウンド トゥルースのラベルを作成する方法を選択するには、優先するグラウンド トゥルース メソッドをクリックします。

  • Google マネージド ラベリング サービス: このオプションを選択すると、評価ジョブが実行されるたびに、Data Labeling Service が新しくサンプリングされたすべてのデータを、グラウンド トゥルースのラベリング担当のレビューアに送信します。Data Labeling Service の料金が適用されます。このオプションを選択する場合は、予測入力のラベリングに関する指示を PDF で提供する必要があります。適切な指示を作成する方法をご覧ください。

  • 独自のラベルを指定する: このオプションを選択する場合は、評価ジョブの BigQuery テーブルにグラウンド トゥルースのラベルをご自身で追加する必要があります。次の評価ジョブの実行前に、サンプリングされる新しい予測入力に対応するグラウンド トゥルースのラベルを追加する必要があります。デフォルトでは、評価ジョブは毎日午前 10 時(UTC)に実行されるため、毎日この時刻よりも前に、BigQuery テーブル内の新しいすべての行に対応するグラウンド トゥルース ラベルを追加する必要があります。そうしなければ、データは評価されず、Google Cloud Console にエラーが表示されます。

    モデル バージョンで一般的な分類を行う場合は、これが唯一のオプションです。

ジョブを作成する

評価ジョブを作成するには、[作成] ボタンをクリックします。すぐに、モデル バージョンから予測入力と予測出力がサンプリングされて BigQuery テーブルに取り込まれるようになります。

次のステップ

評価指標を表示する方法を確認する。