#概要
Google Cloud PlatformにGPU付きのTensorFlow環境を設定する手順を備忘録として残す。
- 実施期間: 2020年7月
- 環境:GCP
- Python3 + TF2.2.0
- GPU: NVIDIA Tesla T4
##背景
Google ColaboratoryのGPUを使わせていただきDNNモデルをいじくっているが、やはり無料ということもあって、連続でTraining させるにはつらいシーンもある。
GCPは初めの$300分まで無料利用できるので、どんな感じか試してみたのだが、GPUの割付に手間取った。それがこの備忘録を残す理由である。
GCPの手順書をくまなく読めば理解できるのであろうが、とても分かりづらく読む気が起きない。
いくつかサイトを見つけたが、基本がわかっていないせいなのか、その通りにやってもうまくいかない。
##ユーザ登録と最初のプロジェクト作成
まず、使っているOSがWin10の場合、デフォルトブラウザをIEからChromeに変更しておくこと。
GCPのサイトに行きユーザ登録する。$300を超過した分が自動的に徴収されるので、登録にはクレジットカードが必須。
自分のトップページから「新しいプロジェクト」を作成しておく(キャプチャをとった時点ではすでに"GPU-VM-test01"というプロジェクトを作成済み)。
##GPUの申請
GCPはAWSと違いデフォルトでGPUはついていない。そのため以下の手順でGPUを申請する必要あり。
GCPの手順書をよ~っく読むとそれらしいことが書いてあるが、よほど根気強くなければその手順書まで辿り着けないと思う。
「Compute Engine システムとユーザーを保護するため、新しいプロジェクトにはグローバル GPU 割り当てが設定されます。この割り当ては、サポート対象のすべてのゾーンで作成できる GPU の総数を制限するものです。GPU 割り当てをリクエストするときは、各リージョンで作成する GPU モデルに対する割り当てに加え、すべてのゾーンにおけるすべてのタイプの GPU の総数に対するグローバル割り当てもリクエストする必要があります。」
[IAMと管理]→[割り当て]を選択する。割り当て画面で「場所」に”asia-northeast1”と”グローバル”の2つを選択、「指標」に”GPUs (all regions)”、”NVIDIA T4 GPUs”の2つを選択する。
asia-northeast1(Tokyo)/2(Osaka)ではTesla T4しか選択できない。米国のどこかにするとGPU全種が選択可能となるが、大きなファイルのUploadがあるため近場を選択する。T4が一番安いし。
東京か大阪かは各位の住まいによる。
初期状態では、上図右端の「上限」はどちらも”0”となっている。左2つのチェックボックスにチェックを入れて「割り当てを編集」を押すと、「2件の割り当てを選択」ペインが現れる。
左上図で名前とメアドはデフォルトのまま、電話番号(+81はなくてもOK)のみ記入し「次へ」を押す。
右上図で”GPUs (all regions)”と”NVIDIA T4 GPUs - asia-northeast1”にそれぞれ”1”と入力し、リクエストの説明を簡単に(例えば、”Need this for DNN training.”くらい)記入して「完了」→「リクエストを送信」を押す。
2営業日ほどで申請時のメアドに下記のような返信が来る。
このメールにもあるようにGPUは申請したプロジェクトに対し割り付けられる。
プロジェクト内で作成されるVMインスタンすべてでシェアすることが可能。
ここまでが今回キモであった前準備
##環境の作成
承認を待っている間、GCPを弄っていると3つくらいの方法がありそう。
- VMインスタンスを作成し、そこにCUDAやTFやAnacondaを入れる。
- Marketplaceにある設定済みVMからVMインスタンスを作成する。
- ノートブック専用のVMインスタンスを作成する。
おいらの用途で使えるのは3のみ。
1,2はそもそも環境構築後、どのように使うかイメージできない。VMインスタンスの操作はローカルPCのCUIからだけで、それでTF開発はきつい。
VMインスタンスには外部IPアドレスが割り振られ、ゲートウェイを設定するとVMにインストールしたAnacondaのJupyterにローカルからアクセスできることは確認したが、GCPの手順通りにCUDAをインストールしても入ってくれず諦めた。たとえできたとしても、それって結局3のことだもの。
ノートブック用GPU付きVMインスタンスを作成する。
[AI Platform]→[ノートブック]を選択する。「新しいインスタンス」を押し、「TensorFlow 2.2」→「With 1 NVIDIA Tesla T4」を選択する。
TFのバージョンは所望のものを選択する。
「新しいノートブック インスタンス」画面でノートブック用VMインスタンスの設定を行う。
インスタンス名は適当に、「リージョン」にリクエストした時の”asia-northeast1 (Tokyo)”、「ゾーン」に” asia-northeast1-a”か、”…-c”を選択する。今現在”…-b”にはGPUが割り当たらない。
ML後進国の日本人にはGPUはそんなに必要ないのだろうと…
2,3分待つとVMインスタンスが作成されるので一旦ホッとして、目的のGPUが割りついていることを確認し、”JUPYTERLABを開く”を押すとブラウザの別タブでJupyterが起動する。
##Jupyter動作確認
最初のセルでGPUが認識されているか確認する。
import tensorflow as tf
print(tf.__version__) #2.2.0が表示されること
tf.config.list_physical_devices(‘GPU’) #'/physical_device:GPU:0'的なことが表示されること
“File”から”Shut Down”を選択しブラウザのこのタブを閉じる。
VMインスタンスが停止するわけではないので、インスタンスが選択されている状態で「停止」を押す。
「停止」を押さなければずっと課金されるので注意。
以上