Skip to content

toona note

GCP 上で PyTorch を利用する

内容

Google Cloud Platform 上で PyTorch を GPU を利用して実行するまでの設定方法。

プロジェクトの作成

最初にプロジェクトを作成します。
既存のプロジェクトを使用する場合は必要ありません。

GCP の画面の上の赤丸で囲った部分を選択します。

プロジェクトの作成_001

プロジェクトの選択画面が出てくるので、新しいプロジェクトを選択して作成します。

プロジェクトの作成_002

GCP の割り当て

PyTorch は GPU で実行したいので、GPU のしよう申請をします。
ここでは、プロジェクト内で使用する GPU の台数の申請をします。
申請しないと GPU は使用できません。

まずは、画面左のメニューバーから「IAM と管理」を選択します。

GPUの割り当て_001

次に、「割り当て」を選択します。

GPUの割り当て_002

画面が変わるので、指標の「すべての指標」を選択します。

GPUの割り当て_003

指標から GPU のみを選択します。
まず、「なし」をクリックし、次に「GPUs (all regions)」を選択します。

GPUの割り当て_004

画面のサービスに GPU が表示されるので、チェックを入れます。

GPUの割り当て_004-2

GPU が選択された状態で、「割り当てを編集」をクリックします。

GPUの割り当て_005

画面右側に必要事項の記入欄が現れるので全て記入して、「次へ」を選択します。

GPUの割り当て_006

使用したい GPU の台数と使用目的の記入欄が現れます。記入後「リクエストを送信」をクリックします。

GPUの割り当て_007

作業はここまでです。
承認までにしばらく時間がかかると表示されましたが、今回はすぐに使用許可のメールが届きました。
これで GPU の割り当て申請は終わりです。

インスタンスの作成

GPU を使用するインスタンスを立ち上げます。

まず、画面左上の三本線のメニューマークから、「Compute Engine」次に「VM インスタンス」を選択します。

インスタンスの作成_001
画面が変わるので、「インスタンスを作成」を選択します。

インスタンスの作成_002-1024x152
立ち上げたいインスタンスの内容を設定します。

インスタンスの作成_003
GPU は「CPU プラットフォームと GPU」から選択できます。

使用する GPU の型と使用台数を選択します。
使用できる GPU の種類は、リージョンにより異なります。

インスタンスの作成_004

プリエンプティブという、料金の安いインスタンスも作成できます。
画面下の方の「管理」から「可用性ポリシー」を変えることで選択できます。

インスタンスの作成_005
プリエンプティブは安い代わりに 24 時間以内に一度立下ります。また、Google のリソースの状況によっても立下ります。
今回は 1 時間以内に立ち下がってしまいました。立てたリージョンが混雑していたのかもしれません。

最後に画面下の「作成」を選択してインスタンスの立ち上げは終了です。

インスタンスの作成_006

環境設定

作ったインスタンスで PyTorch を実行できる環境を整えます。

まずはインスタンスを起動します。

先ほどの VM インスタンスの画面から、起動したいインスタンスのチェックボックスにチェックを入れ、「開始」を選択します。

環境設定_002-1024x330

インスタンスへアクセスします。
SSH の横の ▼ から、「ブラウザウィンドウで開く」を選択します。
(ほかの接続方法もありますが、今回はこれで行きます。)

環境設定_005

インスタンスに接続したら環境を整えます。

とりあえず、アップデートをかけます。
下のコマンドを実行します。

$ sudo apt update

次に解析時に使いたいものを入れます。

$ sudo apt install git vim build-essential tmux htop

y を打ち込んだりしなが、インストールの終了までしばらく待ちます。

次は、Anaconda を入れます。
Anaconda のサイトから URL を入手します。

サイトの Python 3.7 向けの「Download」ボタンの上で右クリックし、「リンクのアドレスのコピー」をします。

環境設定_003
コピーしたアドレスを使って、ファイルをダウンロードします。

$ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

ダウンロードが完了したらファイルを実行します。

$ sh Anaconda3-2019.10-Linux-x86_64.sh

yes や、enter を打ち込んで実行の完了までしばらく待ちます。

anaconda を有効化します。

$ . ~/anaconda3/bin/activate

次に PyTorch をインストールします。

コマンドはPyTorch のサイトから持ってきます。
OS は Linux, Package は Conda, Language は Python, CUDA は 10.1 としました。

$ conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

次に CUDA ドライバをインストールします。

google のサイトに説明があるので、コマンドをコピーしてきて実行します。

$ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda-10-1

しばらく待っているとインストールが完了します。

無事にインストールが終了したか確認します。 次のコマンドを実行します。

nvidia-smi
環境設定004

上のような画面が出力されたら導入は完了です。

ライブラリーのインストール

この後に、画像解析のネットワークを動かすためにいくつか入れました。

CV2, pillow, torch summary, tensorboard など

止め方

まずはコンソールから抜けます

$ exit

次に、 止めたいインスタンスにチェックを入れて「停止」をクリック。

環境設定_006

料金がかかるので確実に止めましょう。 (プリエンプティブは忘れてても勝手に止まるので、その点では安全かと思います。)

疑問

cudnn を入れる必要があるのかが分からない。 pytorch についてくるのでしょうか?

確認のために以下のプログラムを実行しました。

import torch
torch.cudnn.is_available()

True を返すので cudnn を認識しているようです。

おわりに

Google Cloud Platform の利用に関しては、丁寧な記事がネット上に沢山ありました。 ありがたいことです。それでも、悩む部分があったので、将来の自分のために記録しました。

cuDNN について疑問点はあるものの GCP で PyTorch を実行できる環境の構築ができました。 それなりの料金はかかりますが、100 万円前後の高性能 GPU を使用できるのですから素晴らしいことです。