GCP で PyTorch

はじめに

Google Cloud Platform でGPUを使うまでの設定方法です。

プロジェクトの作成

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

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

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

GCPの割り当て

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

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

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

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

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

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

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

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

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

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

インスタンスの作成

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

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

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

立ち上げたいインスタンスの内容を設定します。

GPUは「CPUプラットフォームとGPU」から選択できます。

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

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

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

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

環境設定

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

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

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

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

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

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

$ sudo apt update

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

$ sudo apt install git vim build-essential tmux htop

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

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

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

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

$ 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

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

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

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

CV2, pillow, torch summary, tensorboard など

止め方

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

$ exit

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

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

疑問

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

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

import torch
torch.cudnn.is_available()

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

おわりに

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

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

コメント

タイトルとURLをコピーしました