Google Colaboratory で TPU 実行してみる


TL;DR

ローカルで作成したTensorflow.kerasで CNN を実装し、
Google Colaboratory でモデル作成したら、自分のPCで実行するよりも早くできた
忘れないようにするためのメモがてら情報を残します

はじめに

Deep Learning したいデータ と tensorflow.kerasを利用したpython ファイルを
Google Drive に置いて、Google Colaboratory で、TPU を利用して、 model(VGG8) を作成しました。

Google Colaboratory で TPU を使うときのコード

TPUを使うときのおまじない。

vgg8.py
tpu_grpc_url = "grpc://"+os.environ["COLAB_TPU_ADDR"]
tpu_cluster_resolver = tf.contrib.cluster_resolver.TPUClusterResolver(
            tpu_grpc_url)
tf.contrib.distribute.initialize_tpu_system(tpu_cluster_resolver)
strategy = tf.contrib.distribute.TPUStrategy(
            tpu_cluster_resolver, steps_per_run=100)

with strategy.scope():
    model = モデル作成
    model.compile(xxx)
    model.fit(xxx)
    result = model.evaluate(xxx)

注意点
strategy.scope() の中で model を作成すること

実際に作成したコードは 最後のリンク に置いています。

Google Drive へデータを保存する

1. ブラウザ上で、Googleアカウントでログイン後、以下の画像の順番でアクセスすると、Google Drive のページへ飛ぶ

2. pythonを実行したい階層に、Deep Learning したいデータ、および、コードをドラッグ&ドロップして、ファイルをコピーする(今回コピーしたのは、カッコで括った部分)

Google Colaboratory で TPU を有効にする

  1. Google にて、"Google Colaboratory" で検索すると、上位に検索結果が出てくる。"Colaboratory - Google"を選択する
  2. ポップアップが表示されるので、右下の"PYTHON 3 の新しいノートブック" を選択する
  3. 新しいノートブックが表示されるので、上部のタブ"ランタイム" -> "ランタイムのタイプを変更"を選択する
  4. ポップアップが表示されるので、ハードウェアアクセラレータの項目を "None" から "TPU" へ変更し、保存を選択する

Google Colaboratory で CNN を実行

  1. Google Colaboratory で Google Drive をマウントするために、左上の"メニューアイコン" -> "フォルダアイコン" -> "ドライブをマウント"を選択すると、右側にコマンドが出てくるので、"再生アイコン"を選択。選択後、リンクが表示されるので、そこから、Google Driveの利用許可画面が出てくるので、認証を実施し、認証コードを取得し、"Enter your authorization code"にペーストする
  2. "cd /content/drive/My\ Drive/" で実行ファイルが置いてあるディレクトリまで移動する
  3. "!python xxx.py" と入力後、"再生アイコン" を選択することで python を実行する

注意
Google Colaboratory では RAM 12.72GB 利用できるようだが、
Deep larning 実施時に、上記 RAM をオーバーすると、処理が停止する。
そのため、画像サイズやCNNのモデルのパラメータサイズについては細心の注意が必要です。

CNN の model を Google Drive から取得

  1. 上記実行時に、Outputディレクトリにmodel を保存しているのであれば、Google Drive からドラッグ&ドロップで取得可能。作成したコードでは、以下の2つのファイルを作成する。

さいごに

CNN を手軽に実装できる Google Drive と Google Colaboratory の組み合わせはPCでdeep larningを行うよりも高速に実施できるのでおすすめです。
ただし、画像サイズが大きかったり、モデルが大きすぎるとpythonが途中で止まるため、そのときにはPCやクラウドサービスの利用に置き換える必要です。
今回の作成したコードでは、256x256の画像で、全部で2700枚の教師データであれば、問題なく動作しました。

ぜひ、tensorflow.keras を実装試してみたい人は是非実施ください。

参考URL