7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Cloud ML EngineでTensorFlow機械学習訓練実行

Last updated at Posted at 2019-01-02

Google Cloud ML EngineでTensorFlowを使って機械学習をします。クラウド側で実行すれば、GPUが手軽に使えるので非常に速く実行できます。

#参考

#環境

種類 バージョン 内容
Host OS Windows8.1 64bit 自宅環境なのでProfessionalでもないです
Guest OS Ubuntu18.04 LTS 64bit Oracle VirtualBox上に環境作成
Python Python3.5 Google Cloud MLのランタイム1.10を使うのでPythonは最新の3.7を使いません(2018/12/24時点)
TensorFlow TensorFlow1.10 Google Cloud MLのランタイム1.10を使うのでTensorFlowは最新の1.12を使いません(2018/12/24時点)

※**Google Cloud MLのランタイムを確認するときは英語のページで見てください。**日本語ページは更新が遅れています。

#前提
pyenvはインストール済
GCPのアカウントを持っていること

#手順
##1. GCP プロジェクトの設定
公式ガイドをもとにGoogle Cloud Platform設定。
###1.1. プロジェクト作成
「リソースの管理」ページでプロジェクト作成
「プロジェクトを作成」ボタンクリック
10.ConfigureGCP01.JPG

「プロジェクト名」を入力して「作成」ボタンクリック
10.ConfigureGCP02.JPG

###1.2. 課金有効の確認
ガイド をもとにプロジェクトに対して課金が有効かを確認します(デフォルトで有効っぽい)。

###1.3. API有効化
GCPコンソールからCloud Machine Learning Engine と Compute Engine API(複数)を有効化
プロジェクトを選択して「続行」ボタンクリック
10.ConfigureGCP03.JPG

###1.4. 認証情報設定
「サービス アカウント キーの作成」ページで新しいサービスアカウントを作成(「役割」はプロジェクトオーナー)してJSON形式で秘密鍵を保存。
10.ConfigureGCP05.JPG

環境変数にダウンロードしたJSON形式の秘密鍵を設定(下記のファイルパスとファイル名を変更してください)。

export GOOGLE_APPLICATION_CREDENTIALS="/home/<user>/Downloads/<service-account-file.json>"

###1.5. Google Cloud SDKインストール
公式ガイドに従い、Google Cloud SDKをインストールします。Ubuntuなのでapt-getを使っています。

export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
gcloud init

Google Cloud SDK の確認をします。
まずは下記コマンド実行するとURLを返してくれるので、ブラウザでそのURLにアクセスします。

gcloud auth login

10.ConfigureGCP06.JPG

アカウントを選択
10.ConfigureGCP07.JPG

「許可」ボタンをクリック
10.ConfigureGCP08.JPG

これでGoogle Cloud SDKの設定ができたので、プロジェクト名を設定してモデル一覧を表示します(まだ作っていないので0で返ってきます)。プロジェクト名はIDであることに注意ください。

gcloud config set project <project id>
# 昔は gcloud ml-engine だった(2019/7/8)追記
gcloud ai-platform models list

##2. 訓練コードとデータ設定
訓練用コードとデータをダウンロードし、クラウドにアップロードします。

###2.1. 訓練用コードダウンロード
GitHubから訓練用のコードをダウンロードして解凍します(git cloneでもいいはず)。

###2.2. 訓練データダウンロード
カレントディレクトリを手順「2.1. 訓練用コードダウンロード」で解凍したcloudml-samples-master/census/estimatorに設定して、"data"フォルダーを作り、公開されているGoogle Cloud Storageから訓練データをダウンロードします。

cd cloudml-samples-master/census/estimator
mkdir data
gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/

###2.3. 環境変数の設定
TRAIN_DATA および EVAL_DATA 変数をローカル ファイルパスに設定します。

TRAIN_DATA=$(pwd)/data/adult.data.csv
EVAL_DATA=$(pwd)/data/adult.test.csv

##3. Python環境構築
###3.1. Pythonバージョン3.5設定
前提としてpyenv(ver1.2.8)とvenvを使っています。
pyenvでPythonバージョンを3.5.6に設定します。今回はローカル環境ではなく、クラウド側で訓練をするのでPythonは必須ではありません。TensorBoardで訓練情報を確認するためだけに構築します。
pyenvとvenvに関しては記事「WSLのUbuntuにpyenvとvenvでPython開発環境構築」も参考にしてください。

pyenv global 3.5.6
python --version
which python

###3.2. 仮想環境作成
カレントディレクトリをvenv用の場所に設定して、venvで"clml-tf10"という仮想環境を作成し、有効化。

python -m venv clml-tf10
source clml-tf10/bin/activate

###3.3. TensorFlow等インストール
カレントディレクトリを手順「2.1. 訓練用コードダウンロード」で解凍したcloudml-samples-master/census/estimatorに設定して、requirementsファイルからTensorFlow等をインストールします。チュートリアル通りに--userオプションをつけると仮想環境にインストールされないので注意してください。

  pip install -r ../requirements.txt

##4. 訓練実行
###4.1. バケット関連の環境変数設定。
バケット(Google Cloud Storage)関連の環境変数としてバケット名とリージョンを設定。

BUCKET_NAME="cl-ml01"
REGION=us-central1

###4.2. バケットに訓練データアップロード
バケットに訓練データをアップロードし、環境変数にそのパスを設定します。

gsutil cp -r data gs://$BUCKET_NAME/data
gsutil cp ../test.json gs://$BUCKET_NAME/data/test.json
TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
TEST_JSON=gs://$BUCKET_NAME/data/test.json

###4.3. 訓練ジョブ関連の環境変数設定
訓練ジョブ関連の環境変数を設定します。

JOB_NAME=census_single_1
OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME

###4.4. 訓練ジョブ実行
訓練ジョブをクラウド上で実行します。

gcloud ml-engine jobs submit training $JOB_NAME \
    --stream-logs \
    --runtime-version 1.10 \
    --job-dir $OUTPUT_PATH \
    --module-name trainer.task \
    --package-path trainer/ \
    --region $REGION \
    -- \
    --train-files $TRAIN_DATA \
    --eval-files $EVAL_DATA \
    --train-steps 1000 \
    --eval-steps 100 \

##5. 結果確認
###5.1. コンソールから確認
GCPのコンソールでジョブステータスを確認します。
20.GCPLog01.JPG

View Logsのリンクをクリックすると詳細画面に行けます。トラブルシュートする場合に、このログが非常に重要です。
20.GCPLog02.JPG

###5.2. TensorBoardから確認
TensorBoardを起動しようとしたら権限エラーが出たので、事前にログインしておきます。

gcloud auth application-default login

以下のコマンドでTensorBoardを起動して訓練情報を確認します。Windowsの場合、logdirにGoogle Cloud Storageのパスを指定して実行できませんでした。

tensorboard --logdir=$OUTPUT_PATH

image.png

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?