らんだむな記憶

blogというものを体験してみようか!的なー

GCPオベンキョ(7) — Deep Learning VM の VM インスタンス作成

とりあえず GPU の申請ができたのでDeep Learning VM Image  |  Google Cloudを使う。

推定費用: $295.20/月

だが全力では使わないので・・・。
ソースからのビルド  |  TensorFlowより、tensorflow-2.1.0 は CUDA 10.1 でテスト済み。Start Locally | PyTorchより、PyTorch 1.4 も CUDA 10.1 とのこと。

  • Deployment name
    • 適当
  • Zone
    • us-west1-b
  • Machine type
    • vCPU: x 2, メモリ: 13 GB
  • GPUs
  • Framework
    • TensorFlow Enterprise 2.1 (CUDA 10.1)
  • GPU
    • Install NVIDIA GPU driver automatically on first startup?
  • Access to the Jupyter Lab
    • Enable access to JupyterLab via URL instead of SSH. (Beta)
  • Boot Disk
    • Boot disk type: Standard Persistent Disk
    • Boot disk size in GB: 100
  • Networking
    • 事前に VPC で作成しておいたネットワーク

に相当する情報で VM インスタンスを作成したい。・・・が、UI 上から「プリエンプティブル」に指定できないように見えるので gcloud で作成する。面倒臭いので VM インスタンスの作成と起動  |  Compute Engine ドキュメント  |  Google Cloud などを参考に Cloud Shell から実行する。(イメージの選択  |  Deep Learning VM  |  Google Cloudも参考にする)

gcloud compute --project=プロジェクトID instances create ml-dev --zone=us-west1-b --image-family=tf2-latest-gpu --image-project=deeplearning-platform-release --subnet=VPCで作成したサブネット名 --network-tier=PREMIUM --no-restart-on-failure --maintenance-policy=TERMINATE --preemptible --machine-type=n1-highmem-2 --accelerator="type=nvidia-tesla-t4,count=1" --metadata="install-nvidia-driver=True" --boot-disk-size=100GB --boot-disk-device-name=ml-dev --labels=env=ml-dev

みたいなので良いのではないかと・・・(東京なら --zone=asia-northeast1-c とかかな)。ただ、これだと

WARNING: You have selected a disk size of under [200GB]. This may result in poor I/O performance. For more information, see: https://developers.google.com/c
ompute/docs/disks#performance.

というログが出る・・・。SSH で接続したいので、「VM インスタンスの詳細」にて「SSH 認証鍵」の登録も行う。セットアップ後に

$ nvidia-smi
Tue Apr 14 13:58:49 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   51C    P0    26W /  70W |      0MiB / 15079MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
$ lspci | grep -i nvidia
00:04.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
$ ls -l /usr/local/cuda/lib64/libcudnn*
-rwxr-xr-x 1 root staff 428711256 Mar 31 00:26 /usr/local/cuda/lib64/libcudnn.so
-rwxr-xr-x 1 root staff 428711256 Mar 31 00:26 /usr/local/cuda/lib64/libcudnn.so.7
-rwxr-xr-x 1 root staff 428711256 Mar 31 00:26 /usr/local/cuda/lib64/libcudnn.so.7.6.5
-rw-r--r-- 1 root staff 403829728 Mar 31 00:26 /usr/local/cuda/lib64/libcudnn_static.a
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

みたいなので GPU 関連の情報を取得できる。
VM インスタンス起動時には、「IAM と管理」の「割り当て」からは GPUs (all regions)Preemptible NVIDIA T4 GPUs がそれぞれ「現在の使用量」が 1 として見えている。

プリエンプティブルな VM にしていることもあって、1 日に 3 時間、週 5 日程度遊んだ場合の費用見積もりは 8.79 + 4.00 で

Total Estimated Cost: USD 12.79 per 1 month

とのこと。これが普通の VM だと 30.52 + 4.00 で

Total Estimated Cost: USD 34.52 per 1 month

となるのでお得感はかなり違う。これは n1-highmem-2 の費用だが、メモリ量も微妙ということで、n1-highmem-4 にすると、それぞれ USD 14.42, USD 42.23 で、n1-highmem-8 にするとそれぞれ USD 17.66, USD 57.66 となる。

通信量などの諸々も込みで 4 月分は以下のような費用だった。

設定 時間 費用 総和
1 n1-highmem-2 2.1 30 円 30 円
2 3.4 50 円 80 円
3 n1-highmem-4 1.6 24 円 104 円
4 1.8 32 円 136 円
5 2.8 48 円 184 円

詳細はGCP費用 - らんだむな記憶で飽きるとこまで。

*****

GCPとDockerでKaggle用計算環境構築 - Qiitaにも書いてあるが、CPU数, GPU数, メモリについてはコンソール上からマシンタイプや GPU 設定を変更することで変更できそうに見える。後日メモリ不足のため n1-highmem-2n1-highmem-4 に変更した。VM インスタンスを停止させて設定を変えて起動したら反映されていた。

参考程度に us-west1 での 1 時間あたりの VM インスタンスの費用は以下であり、

total hours 1 per month 1 per month 1 per month 1 per month
VM class preemptible regular preemptible regular
Instance type n1-highmem-4 n1-highmem-4 n1-highmem-4 n1-highmem-4
Region Oregon Oregon Oregon Oregon
GPU dies 1 NVIDIA TESLA T4 1 NVIDIA TESLA T4 2 NVIDIA TESLA T4 2 NVIDIA TESLA T4
GPU's Cost USD 0.11 USD 0.35 USD 0.22 USD 0.70
GCE Instance Cost USD 0.05 USD 0.24 USD 0.05 USD 0.24
Estimated Component Cost USD 0.16 per 1 month USD 0.59 per 1 month USD 0.27 per 1 month USD 0.94 per 1 month

標準永続ディスク 100 GB と共に運用すると、1 日に 3 時間、週 5 日程度(1 月あたり 21.7 日程度)遊んだ場合で 1 月あたり以下となる。

Total Estimated Cost USD 14.42 per 1 month USD 42.23 per 1 month USD 21.59 per 1 month USD 65.05 per 1 month

ついでに V100 だと、

total hours 1 per month 1 per month 1 per month 1 per month
VM class preemptible regular preemptible regular
Instance type n1-highmem-4 n1-highmem-4 n1-highmem-4 n1-highmem-4
Region Oregon Oregon Oregon Oregon
GPU dies 1 NVIDIA TESLA V100 1 NVIDIA TESLA V100 2 NVIDIA TESLA V100 2 NVIDIA TESLA V100
GPU's Cost USD 0.74 USD 2.48 USD 1.48 USD 4.96
GCE Instance Cost USD 0.05 USD 0.24 USD 0.05 USD 0.24
Estimated Component Cost USD 0.79 per 1 month USD 2.72 per 1 month USD 1.53 per 1 month USD 5.20 per 1 month
Total Estimated Cost USD 51.48 per 1 month USD 177.06 per 1 month USD 103.71 per 1 month USD 342.71 per 1 month

us-northeast1 での 1 時間あたりの VM インスタンスの費用は以下であり、

total hours 1 per month
VM class preemptible
Instance type n1-highmem-4
Region Tokyo
GPU dies 1 NVIDIA TESLA T4
GPU's Cost USD 0.11
GCE Instance Cost USD 0.07
Estimated Component Cost USD 0.18 per 1 month

で、永続ディスク 100 GB は USD 5.20 とのこと。