TensorFlowのためのGPU環境をGCPのGoogle Compute Engine (GCE)で構築するには、
- GPUの割り当て申請(初回のみ。所要時間は約5分)
- CUDAやcuDNNをインストール(NVIDIAのサイトからダウンロードしたりインストールしたりなんだりでスゲー時間かかって面倒)
- TensorFlowをインストール(所要時間は約5分)
って手順が必要。しかし最近、Cloud DatalabのGPUインスタンスが利用可能になったおかげで、この手順がぐんと簡単になった。
- GPUの割り当て申請(初回のみ。所要時間は約5分)
- Cloud Datalabインスタンスを作成(コマンド一発、待ち時間は15分ほど)
これでOK。DatalabインスタンスにはTensorFlowだけじゃなくて、scikit-learnとかpandas、matplotlib等の定番ツールも入ってるので、Anaconda的なお手軽環境をGPUインスタンス上でさくっと構成できる。
以下、その手順を解説する。
GPUの割り当て申請
GCPのGCEもしくはDatalabでGPUを使うには、初回のみ割り当て(クオータ)申請の手順が必要となる。申請とは言っても、べらぼうな数量を申請しない限り、2〜3分で割り当て許可が得られる(ちなみに、GCPの無料トライアルではGPU割り当て申請は行えない)。
まずはGCPのコンソールからIAMと管理
-割り当て
を選択する。指標
フィルタのなし
を選択してフィルタをクリアしたあと、NVIDIA P100
またはK80
を選ぶ。すると、GPU割り当ての一覧が絞り込み表示される。
GPU割り当てはリージョンごとに設定する。ここでは東京リージョンasia-northeast1
を選択し、割り当てを編集
をクリックする。
ここで、次に変更
の部分に使用したいGPU数の上限を指定する。ここで指定した数値はあくまで上限値なので、どのような数字を入れてもこの時点で課金が発生することはない。とりあえず4個くらいを指定しておけば、さくっと自動承認されるはず。あまり大きな数(100個とか)を入れるとサポート担当者とのやり取りが必要となる。理由
の部分にはGPUの使いみちを適当に書いておけばよい。
まもなくして、以下のような承認メールが届く。
Hello,
Your quota request for project 'xxx' has been approved and your quota has been adjusted accordingly.
The following quotas were increased:
+-------------------------+------------------+
| Region: asia-northeast1 | NVIDIA_P100_GPUS |
+-------------------------+------------------+
| Changes | 0 -> 4 |
+-------------------------+------------------+
これでP100を最大4個まで使う準備が整った。
Datalabインスタンスの作成
ここからはDatalabのQuickstartにしたがってGPUインスタンスを作成していく。以下に要点のみ書いておこう。
Google Cloud SDKのインストール
Datalab(というかGCPのいろいろなサービス)の利用にはGoogle Cloud SDKをインストールしておくと何かと都合がよいので、まずはこちらをインストールしておく。
Datalab GPUインスタンスの作成
DatalabのCPUインスタンスを作成するには、以下のようなコマンドオプションを指定する。
datalab beta create-gpu --machine-type n1-standard-8 --accelerator-type nvidia-tesla-p100 --accelerator-count 1 YOUR_INSTANCE_NAME
この例は、
-
--machine-type
としてn1-standard-8
(vCPUが8個) -
--accelerator-type
(GPU種別)はP100 -
--accelerator-count
(GPU個数)は1個
という意味になる。YOUR_INSTANCE_NAME
部分にはDatalabのインスタンス名を指定する。
このコマンドを実行すると、
$ datalab beta create-gpu --machine-type n1-standard-8 --accelerator-type nvidia-tesla-p100 --accelerator-count 2 YOUR_INSTANCE_NAME
By accepting below, you will download and install the following third-party software onto your managed GCE instances: NVidia GPU CUDA Toolkit Drivers: cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
Do you accept? (y/[n]): y
というプロンプトが表示されるのでy
と入力。これにより、GPUドライバ付きのDatalabインスタンスの作成が開始する。
Due to GPU Driver installation, please note that Datalab GPU instances take significantly longer to startup compared to non-GPU instances.
Created [https://www.googleapis.com/compute/beta/projects/xxx/zones/asia-east1-a/instances/xxx].
Connecting to xxx.
This will create an SSH tunnel and may prompt you to create an rsa key pair. To manage these keys, see https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys
Waiting for Datalab to be reachable at http://localhost:8081/
このメッセージに書いてあるように、普通のDatalabインスタンスに比べて、GPU版は作成にすっごく長い時間がかかる。15分くらい。なので、この状態のまま放置しておこう。
しばらくすると、以下のメッセージが表示され、ブラウザ上にはDatalab画面が現れるはずだ。
The connection to Datalab is now open and will remain until this command is killed.
You can connect to Datalab at http://localhost:8081/
GPU動作の確認
では、GPUがきちんと動作しているのかDatalab上で確認しよう。Datalab画面でnotebooks
フォルダを開き、Notebook
をクリックして新規Notebookを作成する。
つづいて、TensorFlowドキュメントのUsing GPUsを参考に、以下のコードを実行してみる。
こんなふうにエラーが発生せずに動作を確認できれば、GPUは正常に動作している。
これでTensorFlowをGPUで回す準備は整った。TFGANでガンガン遊んでみよう。
追記(1/1)
TFGANでガンガン遊ぼうと思ったら、2018年1月1日現在のDatalabではTensorFlow 1.4でGPUが動かない様子 :( デフォルトで入っているTF 1.2なら問題なく動く。
https://github.com/googledatalab/datalab/issues/1879
Disclaimer この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。