0
2

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 3 years have passed since last update.

gcp上でTensorFlowをGPU実行

Last updated at Posted at 2020-11-25

概要

画像系の機械学習のために、gcpでGPU環境を構築し、TensorFlowを実行しました。
今回はその備忘録です。

前提条件

  • gcpアカウントがあること
  • プロジェクト作成されていること
  • GPU割り当て申請がされていること
    • ※ここは色々面倒だったので後述します。

GPUの割り当て申請

gcpでGPU使用するには初回のみ申請が必要です。
下記2つの申請が必要です。

  • グローバル GPU 割り当て
  • 使用リージョンのGPUモデルに対する割り当て

自分の場合、
1回目に使用リージョンのGPUモデルに対する割り当て

リージョン GPUモデル
asia-east1 tesla K80

2回目にグローバル GPU 割り当て
GPUs (all regions)

をそれぞれ出しています。
1度の申請でまとめて出すことも可能なようです。

申請方法ですが、既に詳細に説明されてる記事があったので、
そちらを紹介させて頂きます。

ちなみにですが、
自分は申請してないtesla V100の上限もいつのまにか1になっており、
起動することもできました。
正直GPU割り当てについては手探りでやったので良く分かってません。

インスタンス作成(コンソールの場合)

Compute engine -> VMインスタンス
から「作成」をクリック。
スクリーンショット 2020-11-25 0.17.39.png

その後、MarketPlaceをクリック。
スクリーンショット 2020-11-25 0.18.46.png

テキストフィールドに「deep learning vm」と入力し、一番先頭に表示されるイメージをクリックします。
スクリーンショット 2020-11-25 0.19.30.png

適用開始
スクリーンショット 2020-11-25 0.34.44.png

一部の設定を変更後に「デプロイ」をクリックして、インスタンスを起動します。

項目名 設定例 備考
Deployment name tf-test001 インスタンス名です
Zone us-west1-b リージョン(us-west1)はGPU割り当て申請時のところにしてください。ゾーン(b)は起動したいGPUがあるところにしてください。ゾーンによっては起動できないGPUがあります
GPUの数 1 そのまま
GPUのタイプ Tesla K80 特に理由がなければv100以外で選ぶのをおすすめします。v100は人気だからなのかたまにデプロイに失敗することがあります
NVIDIA GPUドライバ チェック インスタンス起動時にNVIDIA GPUドライバを自動でインストールするかどうかです。自前で特殊なドライバを入れる場合以外はチェックを入れたほうがいいと思います。
Boot disk size 200 インスタンスのディスクサイズです。200Gより小さいと、起動後にパフォーマンスが下がると警告が出るので基本200で

スクリーンショット 2020-11-25 0.23.36.png
スクリーンショット 2020-11-25 1.10.43.png

インスタンス作成(CLIの場合)

CLIで同様にする場合は下記になります。

export IMAGE_FAMILY="tf2-2-3-cu110"
export ZONE="us-west1-b"
export INSTANCE_NAME="tf-test001"
export BOOT_DISK_SIZE="200GB"
export MACHINE_TYPE="n1-highmem-2"
gcloud compute instances create $INSTANCE_NAME \
 --zone=$ZONE \
 --image-family=$IMAGE_FAMILY \
 --image-project=deeplearning-platform-release \
 --maintenance-policy=TERMINATE \
 --accelerator='type=nvidia-tesla-k80,count=1' \
 --metadata='install-nvidia-driver=True' \
 --boot-disk-size=$BOOT_DISK_SIZE \
 --machine-type=$MACHINE_TYPE

ブラウザウィンドウでSSH接続

起動後、しばらく待つと
Compute engine -> VMインスタンス一覧にインスタンスが表示されます。
SSH -> ブラウザウィンドウで開く をクリック。
するとSSHのウィンドウが表示されます。
スクリーンショット 2020-11-25 2.11.05.png

GPUドライバの確認

インスタンス起動時にNVIDIA GPUドライバをインストールする
チェックを入れて起動したので、すでにNVIDIA GPUドライバがインストールされています。
nvidia-smiコマンドで確認してみます

GPUドライバ入ってる場合

$ nvidia-smi
Tue Nov 24 15:42:42 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   43C    P0    72W / 149W |      0MiB / 11441MiB |    100%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

GPUドライバ入ってない場合

$ nvidia-smi
-bash: nvidia-smi: command not found

tensorflow用のdockerを起動する

googleが用意したdeep learning向けのコンテナを起動します。
コマンドは下記です。
イメージはdeeplearning-platform-releaseから選びます。
自分は tf2-gpu(tensorflow2向けのGPU用イメージ)を選択してます。

docker run -it --rm --name tensorflow-gcp gcr.io/deeplearning-platform-release/tf2-gpu

実行後は自動でJupyter Labが起動します。
スクリーンショット 2020-11-25 2.50.23.png

#SSHポートフォワーディングでJupyter Labに接続
SSHポートフォワーディングし、ローカルポートにアクセスするとJupyter Labに繋がるようにします。

$ gcloud compute ssh --zone {インスタンスのゾーン} "{インスタンス名}" -- -N -f -L 28888:localhost:8080
例
gcloud compute ssh --zone us-west1-b "tf-test001" -- -N -f -L 28888:localhost:8080

実行後はhttp://localhost:28888でJupyter Labに接続できます。
スクリーンショット 2020-11-25 3.16.22.png

Jupyter Labでtensorflowを実行

まずは新規のnotebookを作成
スクリーンショット 2020-11-25 23.26.45.png

次に下記コードでTensorFlowからGPU認識されているか確認します

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

スクリーンショット 2020-11-25 23.41.30.png
大丈夫そうです。
これでtensorflowをGPU実行できます。
初心者のための TensorFlow 2.0 入門を実行してみました。
スクリーンショット 2020-11-25 23.44.45.png

###その他の参考にした記事

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?