線形学習者組み込みアルゴリズム スタートガイド

AI Platform の組み込みアルゴリズムを使用すると、トレーニング アプリケーションのコードを一切作成せずに、トレーニング データの送信とアルゴリズムの選択を行い、AI Platform Training による前処理とトレーニングを実施できます。

概要

このチュートリアルでは、コードを一切作成せずに線形学習者モデルをトレーニングします。国勢調査所得データセットを AI Platform に送信して前処理とトレーニングを実施し、次にモデルを AI Platform にデプロイして予測を取得します。作成したモデルで、個人の年収が $50,000 を超える確率を予測します。

始める前に

コマンドラインでこのチュートリアルを実行するには、Cloud Shell を使用するか、Cloud SDK がインストールされている環境を使用します。

次の手順に従って、GCP アカウントの設定、必要な API の有効化、Cloud SDK のインストールとアクティブ化を行います。

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. AI Platform(Cloud Machine Learning Engine)と Compute Engine必要な API を有効にします。

    API を有効にする

  5. Cloud SDK をインストールして初期化します。

設定

組み込みアルゴリズムを使用するには、CSV ファイルからヘッダー行を削除し、ターゲット値を最初の列に移動する必要があります。このチュートリアルで使用するため、元の国勢調査データセットに変更を加えて、Cloud Storage の公開バケット gs://cloud-samples-data/ai-platform/census/algorithms/data/ でホストしました。

Console

トレーニング ジョブを開始する前に、Cloud Storage の公開バケットからご使用の Cloud Storage バケットにデータをコピーする必要があります。

サンプルデータを Cloud Storage バケットにコピーする

  1. まず、Cloud Storage の公開バケットからトレーニング データとテストデータをダウンロードします。

    1. Cloud Storage の公開バケットに移動します。

      サンプルデータを取得する

    2. test.csvtrain.csv の両方をダウンロードします。

      1. ファイル名をクリックします。

      2. [オブジェクトの詳細] ページで、[ダウンロード] をクリックします。これらのファイルは、それぞれ ai-platform_census_algorithms_data_test.csv および ai-platform_census_algorithms_data_train.csv としてローカル環境にダウンロードされます。

  2. 次に、トレーニング データとテストデータをご使用の Cloud Storage バケットにアップロードします。

    1. ご使用の Cloud Storage バケットの [ブラウザ] ページに移動します。[プロジェクトを選択] プルダウン リストからプロジェクトを選択するか、新しいタブでプロジェクトを開きます。

      Cloud Storage の [ブラウザ] ページ

    2. 使用するバケットの名前をクリックします。バケットがない場合は、新しいバケットを作成します(新しいバケットを作成する場合は必ずリージョン バケットにして、AI Platform トレーニング ジョブを実行するリージョンと同じリージョンを選択してください)。

    3. (省略可)[フォルダを作成] をクリックし、ファイルをアップロードするフォルダを作成します。フォルダの名前(「data」など)を入力して、[作成] をクリックします。次に、フォルダ名をクリックして新しいフォルダに移動します。

    4. [ファイルをアップロード] をクリックして、トレーニング ファイルとテストファイル(ai-platform_census_algorithms_data_train.csvai-platform_census_algorithms_data_test.csv)の両方をバケットにアップロードします。

これでデータがバケットにコピーされたので、使用するアルゴリズムの種類を選択してトレーニング ジョブを開始できます。

アルゴリズムを選択する

  1. Google Cloud Platform Console で、AI Platform の [ジョブ] ページに移動します。

    AI Platform の [ジョブ] ページ

  2. [新規トレーニング ジョブ] ボタンをクリックします。下に表示されるオプションから、[Built-in model training] をクリックします。[新しいトレーニング ジョブの作成] ページが表示されます。

  3. トレーニング ジョブの作成は 4 つのステップに分かれています。最初のステップはトレーニング アルゴリズムです。[Built-in linear learner] を選択して、[次へ] をクリックします。

gcloud

プロジェクト ID、Cloud Storage バケット、Cloud Storage 上のトレーニング データへのパス、使用するアルゴリズムのそれぞれを格納する環境変数を設定します。

AI Platform の組み込みアルゴリズムは、Container Registry でホストされている Docker コンテナにあります。

PROJECT_ID="[YOUR-PROJECT-ID]"
BUCKET_NAME="[YOUR-BUCKET-NAME]"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE="gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv"
TRAINING_DATA_PATH="gs://$BUCKET_NAME/algorithms-demo/data/train.csv"
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/linear_learner_cpu:latest"

トレーニング ジョブを送信する

ジョブを送信するには、基本的なトレーニング引数と、線形学習者アルゴリズムに関する基本的な引数を指定する必要があります。

トレーニング ジョブの一般的な引数:

トレーニング ジョブの引数
引数 説明
job-id トレーニング ジョブの一意の ID。トレーニング ジョブを送信した後、この ID を使用してログを検索し、トレーニング ジョブのステータスを確認できます。
job-dir トレーニング ジョブが正常に完了した後、AI Platform がトレーニング ファイルを保存する Cloud Storage パス。
scale-tier トレーニング用のマシンタイプを指定します。単一マシン構成を選択するには、BASIC を使用します。
master-image-uri トレーニング ジョブに使用する Docker コンテナを指定するための Container Registry URI。すでに IMAGE_URI として定義されている線形学習者組み込みアルゴリズムのコンテナを使用します。
region トレーニング ジョブを実行する利用可能なリージョンを指定します。このチュートリアルでは、us-central1 リージョンを使用できます。

線形学習者組み込みアルゴリズムに固有の引数:

アルゴリズムの引数
引数 説明
preprocess AI Platform でデータの前処理を実施するかどうかを示すブール値の引数。
model_type トレーニングするモデルのタイプ(分類または回帰)を示します。
training_data_path Cloud Storage 上のトレーニング データの場所。トレーニング データは CSV ファイルでなければなりません。
learning_rate 線形オプティマイザーによって使用される学習率。
max_steps トレーニングを実行するステップの数。
batch_size 1 つのトレーニング ステップで使用するサンプル数。

線形学習者アルゴリズムのすべてのフラグの詳細なリストについては、線形学習者組み込みアルゴリズムのリファレンスをご覧ください。

Console

  1. [自動データ前処理を有効にする] をオンのままにします。

  2. [トレーニング データパス] で [参照] をクリックします。右パネルで、トレーニング データをアップロードしたバケットの名前をクリックし、ai-platform_census_algorithms_data_train.csv ファイルに移動します。

  3. [検証データ] と [テストデータ] のフィールドはデフォルト設定のままにします。

  4. [出力ディレクトリ] に、AI Platform がトレーニング ジョブの出力を保存する Cloud Storage バケットのパスを入力します。Cloud Storage バケットのパスを直接入力するか、[参照] ボタンをクリックしてパスを選択します。

    ストレージを整理するため、このトレーニング ジョブ用の新しいディレクトリを Cloud Storage バケットに作成します。これは [参照] パネルで行うことができます。

    [次へ] をクリックします。

  5. [モデルタイプ] として [分類] を選択します。

  6. [モデルタイプ] として [分類] を選択します。

  7. 他のフィールドはすべてデフォルト設定のままにして、[次へ] をクリックします。

  8. [ジョブの設定] ページで次の操作を行います。

    1. [ジョブ ID] に一意の ID(「linear_example」など)を入力します。
    2. [リージョン] に使用可能なリージョン(「us-central1」など)を入力します。
    3. [スケール階層] で [BASIC] を選択します。

    [完了] をクリックして、トレーニング ジョブを送信します。

gcloud

  1. gcloud でジョブを送信する前に、トレーニング ジョブとアルゴリズムのすべての引数を設定します。

    DATASET_NAME="census"
    ALGORITHM="linear"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. ジョブを送信します。

    gcloud ai-platform jobs submit training $JOB_ID \
      --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
      -- \
      --preprocess --model_type=$MODEL_TYPE --batch_size=250 \
      --learning_rate=0.1 --max_steps=1000 --training_data_path=$TRAINING_DATA_PATH
    

  3. ジョブが正常に送信されたら、次の gcloud コマンドを使用してログを表示できます。

    gcloud ai-platform jobs describe $JOB_ID
    gcloud ai-platform jobs stream-logs $JOB_ID
    

ジョブ ディレクトリについて

トレーニング ジョブが正常に完了すると、AI Platform によってトレーニング済みモデルとその他のアーティファクトが Cloud Storage バケットに作成されます。JOB_DIR 内のディレクトリ構造は次のようになっています。

  • model/(TensorFlow SavedModel ディレクトリdeployment_config.yaml ファイルも格納します)
    • saved_model.pb
    • deployment_config.yaml
  • artifacts/
    • metadata.json
  • processed_data/
    • training.csv
    • validation.csv
    • test.csv

JOB_DIR のディレクトリ構造が上記と一致していることを確認してください。

gsutil ls -a $JOB_DIR/*

トレーニング済みモデルをデプロイする

AI Platform は、モデルリソースとバージョン リソースを使用してトレーニング済みモデルを整理します。AI Platform モデルとは、機械学習モデルの複数のバージョンを格納するコンテナに相当します。

モデルをデプロイするには、AI Platform にモデルリソースを作成し、そのモデルのバージョンを作成してから、モデルとバージョンを使用してオンライン予測をリクエストします。

AI Platform にモデルをデプロイする方法については、TensorFlow モデルをデプロイする方法をご覧ください。

Console

  1. [ジョブ] ページには、すべてのトレーニング ジョブが一覧表示されます。先ほど送信したトレーニング ジョブの名前(「linear_example」または実際に使用したジョブ名)をクリックします。

  2. [ジョブの詳細] ページで、ジョブの全般的な進捗を確認できます。[ログを表示] をクリックすると、進捗の詳細が表示されます。

  3. ジョブが成功すると、[モデルをデプロイ] ボタンが上部に表示されます。[モデルをデプロイ] をクリックします。

  4. [新しいモデルとしてデプロイ] を選択し、モデル名(「algorithms_linear_model」など)を入力します。次に、[確認] をクリックします。

  5. [バージョンの作成] ページでバージョン名(「v1」など)を入力します。他のフィールドはすべてデフォルト設定のままにします。[保存] をクリックします。

gcloud

線形学習者組み込みアルゴリズムを使用するトレーニング プロセスでは、deployment_config.yaml ファイルが生成されます。これを使用して、予測用のモデルを AI Platform に簡単にデプロイできます。

  1. このファイルをローカル ディレクトリにコピーして、内容を表示します。

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    deployment_config.yaml ファイルの内容は次のようになっているはずです。

    deploymentUri: gs://BUCKET_NAME/algorithms_training/census_linear_classification/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_linear_classification_20190227060114
    runtimeVersion: '1.12'
    
  2. AI Platform でモデルとバージョンを作成します。

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    バージョンの作成には数分かかります。

オンライン予測を取得する

予測をリクエストする際は、入力データをトレーニング データと同様にフォーマットする必要があります。トレーニングの前に、AI Platform はデータの前処理を行って、metadata.json で示されるコーパスに変換します。

TensorFlow Estimator モデルは、予測を行う前に同様の前処理を入力データに適用します。

  1. トレーニング アーティファクト ファイルをダウンロードして、metadata.json を確認します。

    gsutil cp $JOB_DIR/artifacts/* .
    
    # Let's look at the metadata.json file
    head metadata.json
    
  2. 1 つのデータ インスタンスについて予測入力を準備します。個々のデータ インスタンスは、次のフィールドを持つ JSON オブジェクトとして準備する必要があります。

    • csv_row。トレーニング中に使用されたインスタンスと同じ形式のカンマ区切り行を含む文字列です。
    • key。各インスタンスに固有の文字列識別子です。これは、予測出力の一部として示されるインスタンス キーの役割を持つため、各予測を対応する入力インスタンスと照合するために使用できます。

      バッチ予測では、予測不能な順序で入力を処理して出力を保存するので、このキーが必要になります。

      オンライン予測では、指定された入力と同じ順序で出力を生成するので、インスタンス キーはそれほど重要ではありません。この例では、1 つのインスタンスにのみ予測を実行するので、インスタンス キーの値は不要です。

    オンライン予測リクエストを送信するには、gcloud コマンドライン ツールを使用して、改行で区切られた JSON ファイルに各インスタンスを書き込みます。下記の例をご覧ください。

    ターミナルで次のコマンドを実行して、AI Platform Prediction に送信できる単一インスタンスの入力を作成します。

     # A sample record from census dataset. Ground truth is >50K
    RAW_DATA_POINT='44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States'
    
     # Create a prediction request file
    echo "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json
    
    # Check the prediction request file.
    cat sample_input.json
    
  3. 予測リクエストを送信します。

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json
    

予測出力には、高い確率でクラス >50K' が含まれます。これは、デプロイされたモデルが、情報を入力された個人が $50,000 を超える年収を得ると予測していることを示します(トレーニングは非決定論的であるため、モデルが異なる予測をする可能性もあります)。

データについて

このサンプルでトレーニングに使用している国勢調査所得データセットは、UC Irvine Machine Learning Repository でホストされています。

国勢調査データ転載元: Lichman, M.2013。UCI Machine Learning Repository http://archive.ics.uci.edu/ml。Irvine, CA: University of California, School of Information and Computer Science。

次のステップ

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

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

Google Cloud 機械学習ドキュメント