こんにちは、TC3 Data Scienceチームの
@mumeco_ml
です!弊社は2022/10からGCP Cloud Partnerとなっておりまして、現在GCP(Google Cloud Platform)のプロジェクトでの活用をより促進しております。今回は、このGCPの機能の1つであるCompute Engineを利用したAI開発環境の作り方をご紹介いたします。GCPのVMで開発環境を作る場合、大きく分けて事前にML用に用意された環境を利用する方法と、Dockerを使ってOS環境等も含めて作る方法があると思いますが、今回は前者を説明します。需要があれば、後者の解説も作ろうと思います。
クラウド開発環境の利点・欠点
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| 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 T4 Off | 00000000:00:04.0 Off | 0 |
| N/A 63C P0 31W / 70W | 0MiB / 15360MiB | 10% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
インスタンス停止をした場合にCUDA等がリセットされてしまう場合
たまに?インスタンスを停止して再度起動した際にCUDA環境が壊れてしまうことが発生します。この場合はSSH接続時に最初にコンソールに表示される情報通り
sudo /opt/deeplearning/install-driver.sh
を実行すると、再度CUDA環境をインストールすることが出来ます。
開発環境の構築
ローカル開発環境
インスタンスができて、SSH接続が出来るようになってもそのまま開発する、ということはないと思います。おすすめの開発方法はVSCodeのRemote Development機能を使用しての開発です。先ほど作成した
~/.ssh/config
を使用できるので余計な設定をすることなく接続が出来ます。
細かいVSCodeの設定方法などは以下の記事を参考にすると良いと思います。
curl -LO https://aka.ms/gcm/linux-install-source.sh &&
sh ./linux-install-source.sh &&
git-credential-manager configure &&
export GCM_CREDENTIAL_STORE=cache
2. 任意のプライベートリポジトリを
git
cloneをすると以下のように聞かれるので1を選択し、指示に従うとそのままcloneできます
Select an authentication method for 'https://github.com/':
1. Device code (default)
2. Personal access token
おまけ:CUDA, CuDNNバージョンの確認方法
CUDAバージョンの確認で有名な
nvidia-smi
は実は使えるCUDAの最大バージョンらしい・・・?なので
nvcc -V
で本当のインストールされたバージョンを確認できます
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
CuDNNのバージョンは以下の方法で確認できます。ちょっと見づらいのですが、以下の内容で
CuDNN 8.2.0
がインストールされていることになります。
$ cat /usr/local/cuda/include/cudnn_version.h
#ifndef CUDNN_VERSION_H_
#define CUDNN_VERSION_H_
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 2
#define CUDNN_PATCHLEVEL 0
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#endif /* CUDNN_VERSION_H */
おまけ:CuDNNのアップグレード方法
今回紹介した
Deep Learning on Linux OS
ですが、
現時点で
CuDNNのバージョンが8.2.0で、pytorchをインストールしようとすると以下のようなエラーが発生しました。
RuntimeError: cuDNN version incompatibility: PyTorch was compiled against (8, 3, 2) but linked against (8, 2, 0)
エラー内容を見るとPyTorchはCuDNN8.3.2用にコンパイルされているけど、8.2.0がインストールされているよ、ということなので素直にCuDNNをアップグレードします。基本的には
公式のガイド
に従い以下のようにします。
1.
CuDNNのダウンロードページ
に行きます。ダウンロードにはNVIDIAへの登録が必要です。
2. 以下の選択肢の中から
Local Installer for Linux x86_64 [tar]
を選び、まずローカルへダウンロードします
$ sudo cp cudnn-linux-x86_64-8.7.0.84_cuda11-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-linux-x86_64-8.7.0.84_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
6. 一応最後にバージョンを確認してみます。無事CuDNN8.7.0になっていますね!
$ cat /usr/local/cuda/include/cudnn_version.h
#ifndef CUDNN_VERSION_H_
#define CUDNN_VERSION_H_
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 7
#define CUDNN_PATCHLEVEL 0
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
今回の記事ではGCPを使用して爆速でAI開発環境を作成する方法を解説しました。GCPのUIはとてもすっきりしていて使いやすいので個人的にとてもおすすめです。
[告知] TC3では、Gigコミュニティとの革新的なコラボレーションでDataScience/AI分野での社会実装をより進めていくAIエンジニアを大募集しています!TC3の話が聞きたい、ちょっと興味がある、社内の文化や雰囲気が知りたいという方は
@mumeco_ml
(ぜひフォローしてください~😊)までご連絡頂ければご相談に乗れますし、お店でお肉でも食べながらカジュアルにご紹介も可能でございます!
TC3の会社概要は
こちら
TC3の応募ポジション一覧は
こちら
TC3の社員インタビューは
こちら
Related Posts