ブロックリファレンス

BLOCKS Reference

機械学習

モデルジェネレーター予測(バッチ)

概要

このブロックは、モデルジェネレーターでトレーニングした結果と予測因子データを使って、バッチで予測を行います。大量の予測データをまとめて予測するのに向いています。

対応する モデルジェネレーターは、以下の 4 種類です。

  • 数値分類タイプ
  • 数値回帰タイプ
  • 画像分類タイプ
  • 画像物体検出タイプ

モデルジェネレーター予測(オンライン)」ブロックに比べると予測に時間がかかります。ただし、予測データが大量の場合は、「モデルジェネレーター予測(バッチ)」ブロックの方がより適切な予測時間となります。

数値分類タイプと数値回帰タイプの場合は、Google Cloud Storage (GCS) 上のテキストファイルから予測因子データを読み込んで予測します。予測した結果は、GCS のフォルダーへテキストファイルで出力します。予測結果のファイルは、原則として複数のファイルに分割して出力します。

バッチ予測概略図

画像分類タイプの場合は、GCS 上の画像ファイルか画像ファイルを埋め込んだ JSON ファイルを読み込んで予測します。予測結果の扱いは、数値分類タイプ・数値回帰タイプの場合と同様です。

このブロックで使用するモデルジェネレーターのトレーニング結果(モデル)は、適用を済ませておいてください。

セルフサービスプランの場合は、このブロックを使用する前に、Dataflow API を有効にしてください。詳しくは、「基本操作ガイド > ヒント > Google API を有効にする」を参照してください。

予測因子データの準備

数値分類タイプ・数値回帰タイプ

予測因子データは、以下のような JSON 形式のテキストファイルで準備します。

{"key": "1", "sepal_length": 5.9, "sepal_width": 3.0, "petal_length": 4.2, "petal_width": 1.5}
{"key": "2", "sepal_length": 6.9, "sepal_width": 3.1, "petal_length": 5.4, "petal_width": 2.1}
{"key": "3", "sepal_length": 5.1, "sepal_width": 3.3, "petal_length": 1.7, "petal_width": 0.5}
  • 1 行に 1 つの JSON オブジェクト({...} という形式)で記述します。
  • 行は改行で区切ります。
  • 1 件分の予測因子データを 1 つの JSON オブジェクトにまとめます。
  • JSON オブジェクトは、複数の「名前」と「値」のペアで構成します。
    • 名前と値のペアは、: で区切ります。
    • : の左側が「名前」で、: の右側が「値」です(名前: 値)。
  • 値には、以下の 3 種類が指定できます。
    • 数値: 123.45 など(数値型月型曜日型のデータ)
    • 文字列: "abc""xyz" などの " で囲まれたもの(文字列列挙型のデータ)
    • 配列値: [1, 2, 3][4, 5.6, 7.0] などの複数個の数値の並びを [] で囲んだもの(次元数が指定された数値型のデータ)
  • JSON オブジェクト(予測因子データ)には、"key" という名前を含めてください。値には、予測因子データ 1 件ごとにユニークな文字列を指定します。

予測結果は、GCS のフォルダーに JSON 形式のテキストファイルで出力されます。ファイルは、以下のようなファイル名で出力され、XXXXXYYYYY の部分が出力するファイル数によって変化します。

prediction.results-XXXXX-of-YYYYY
  • XXXXX: 0 から始まるファイルのインデックスとなる番号(0000000001 など)。
  • YYYYY: 予測結果ファイルの総数(0000100003 など)。

以下は、数値分類タイプの予測結果の例です。

{"label_index": 2, "score": [9.230815578575857e-08, 0.007054927293211222, 0.9929450154304504], "key": "2", "label": "Iris-virginica"}
  • 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
  • 行は改行で区切られます。
  • 1 件分の予測結果を 1 つの JSON オブジェクトにまとまっています。
    "label_index" "score" 配列(分類ごとの予測の確からしさ)のどの値が、"label"(予測値)として採用されたかを示す値です。0 が先頭の配列要素、1 がその次の要素を示しています。
    "score" 分類ごとの予測の確からしさです。
    この例の場合は、左から順に分類値 0 が 0.000009231%、分類値 1 が 0.705492729%、分類値 2 が 99.294501543% の確からしさという意味になります。
    "key" 予測に使用した予測因子データの "key" の値です。
    "label" 予測値です。

以下は、数値回帰タイプの予測結果の例です。

{"output": 10304.1962890625, "key": "20170103"}
  • 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
  • 行は改行で区切られます。
  • 1 件分の予測結果を 1 つの JSON オブジェクトにまとまっています。
    "output" 予測値です。
    "key" 予測に使用した予測因子データの "key" の値です。
画像分類タイプ・画像物体検出タイプ

画像分類タイプの予測方法は、2 種類あります。

  • GCS 上の画像ファイルを指定して予測する方法
  • JSON ファイルを指定して予測する方法

画像ファイルの指定には、以下の留意点があります。

  • 透過あり(RGBA)画像には、対応していません。RGBA 画像は、RGB(透過なし)画像に変換後、利用願います。
    変換した RGB 画像の各画素の色がトレーニングや予測に及ぼす影響を統一させるため、統一した方法(同一ツール同一オプション)で変換処理することを推奨します。
  • 画像ファイルサイズは、おおよそ 1.125 MB までです。この数値は目安であり、実際には若干前後します。
  • 画像物体検出タイプで、複数画像の予測を一度に行う場合は、予測に使用する画像のサイズを合わせる必要があります。

以下、それぞれの方法について、解説します。

GCS 上の画像ファイルを指定して予測する方法

この方法は、簡単で一般的な方法です。

  • 画像ファイル群を GCS 上の 1 つのフォルダーにまとめてアップロードします。
  • そのフォルダーへの GCS URL を [予測因子データのファイルGCS URL] プロパティに指定します。
  • GCS URL の最後には、必ず / を付けてください。
  • 対応する画像ファイルの形式は、JPEG・PNG・GIF・BMP です。
  • 画像ファイルの拡張子は、.jpg.jpeg.png.gif.bmp のいずれかです(大文字でも小文字でも構いません)。
  • アップロードする画像ファイルは、1 つのフォルダーの中で、フォルダー分けした配置が可能です(下図参照)。
JSON ファイルを指定して予測する方法

画像ファイルを Base64 でエンコードして、JSON ファイルに書き込む方法です。

  • JSON ファイルには、改行で区切られた 1 つ以上の JSON オブジェクトが必要です。
    (例)
    {"key": "samp01", "image": {"b64": "/9j/4...(中略).../2Q=="}}
    {"key": "samp02", "image": {"b64": "/9j/4...(中略).../2Q=="}}
    
  • JSON オブジェクトの形式は、以下のとおりです。
    (形式)
    {"key": "キー", "image": {"b64": "Base64 エンコード画像データ"}}
    

    赤字の部分に予測画像の情報を設定します。
    名前
    "key" 予測画像を識別するためのキーとなる文字列を指定します。
    "b64" 予測画像を Base64 でエンコードしたデータを指定します。
  • 対応する画像ファイルの形式は、JPEG・PNG・GIF・BMP です。
  • JSON ファイルは、GCS 上にアップロードして、そのファイルへの GCS URL を [予測因子データのファイル GCS URL] プロパティに指定します。
予測結果

予測結果は、GCS のフォルダーに JSON 形式のテキストファイルで出力されます。ファイルは、以下のようなファイル名で出力され、XXXXXYYYYY の部分が出力するファイル数によって変化します。

prediction.results-XXXXX-of-YYYYY
  • XXXXX: 0 から始まるファイルのインデックスとなる番号(0000000001 など)。
  • YYYYY: 予測結果ファイルの総数(0000100003 など)。

以下は、予測結果の例です。

{"labels": ["cat", "dog"], "score": [1.0, 2.0886015139609526e-10], "key": "gs://my-bucket/images/sample_01.jpg", "label": "cat"}
{"labels": ["cat", "dog"], "score": [3.7939051367175125e-07, 0.9999996423721313], "key": "gs://my-bucket/images/sample_02.jpg", "label": "dog"}
  • 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
  • 行は改行で区切られます。
  • 1 件分の予測結果が 1 つの JSON オブジェクトにまとまっています。
    "labels"

    分類の種類のリストです。この例の場合、"cat"(猫)と "dog"(犬)の 2 種類です。

    "labels" のリスト順序は、次の "score" のリスト順序に対応しています。

    "score"

    分類ごとの予測の確からしさです。

    この例の場合、"score" の 1 番目の値は、"cat" に対応し、"score" の 2 番目の値は、"dog" に対応します。

    "key"
    • GCS 上の画像ファイルを指定して予測した場合は、画像ファイルへの GCS URL が出力されます。
    • JSON ファイルを指定して予測した場合は、ファイル内で指定した "key" の値が出力されます。
    "label"

    予測値です。"score" の最も高い分類値が予測値です。

プロパティ

プロパティ名 説明
ブロック名

編集パネルに配置した当該ブロックの表示名が変更できます。

ブロックリストパネル中のブロック名は変更されません。

GCP サービスアカウント このブロックで使用する GCP サービスアカウントを選択します。
モデル 予測に使用するモデルジェネレーターのトレーニング結果(モデル)を選択します。
予測に使うバージョン

予測に、[本番用]と[検証用]のどちらのバージョンを使用するかを指定します。

予測因子データのファイル GCS URL
  • 数値分類タイプと数値回帰タイプの場合は、予測因子データを格納しているテキストファイルの場所を GCS URL 形式で指定します。

    バケットが blocks-sample、予測因子データのテキストファイルが sample.json の場合は、gs://blocks-sample/sample.json のように指定します。

  • 画像分類タイプの場合は、予測画像をアップロードしたフォルダーへの GCS URL か、予測画像を埋め込んだ JSON ファイルへの GCS URL を指定します。

    バケットが blocks-sample、予測画像のフォルダーが images の場合は、gs://blocks-sample/images/ のように指定します(最後に必ず / を付けます)。

    バケットが blocks-sample、予測画像を埋め込んだファイルが sample.json の場合は、gs://blocks-sample/sample.json のように指定します。

変数展開の指定が可能][% 形式の文字列書式の指定が可能]
予測結果の出力先 GCS URL

予測結果を出力する GCS フォルダーの場所を GCS URL 形式で指定します。

例えば、バケットが blocks-sample、予測結果の出力用フォルダーが results の場合は、gs://blocks-sample/results/ のように指定します。

指定したフォルダーが存在しない場合は、自動でフォルダーを作成します。
既にフォルダーが存在して、そのフォルダー内に予測結果ファイルと同名のファイルが存在した場合は、上書きします。

変数展開の指定が可能][% 形式の文字列書式の指定が可能]
ブロックメモ このブロックに関するメモが記載できます。このブロックの処理に影響しません。
バッチサイズ

バッチ予測では、あらかじめ予測因子データをメモリに貯めて(バッファリングして)から、予測を行います。

バッチサイズでは、このバッファリングする予測因子データの件数(レコード数)を指定します。

バッチサイズを大きくすることで予測が速くなる可能性もありますが、メモリ使用量の増大により、メモリ不足で予測が失敗する可能性もあります。

このため、予測因子データのサイズを考慮した適切な(メモリ不足とならない)バッチサイズの設定が必要です。

この情報は役に立ちましたか?