Colab無料版の利用時間制限とGPU性能比較
Google Colaboratory は自分の PC やリモートサーバに環境を構築することなく,ブラウザ経由で Python の実行が可能になる便利なサービスです.
しかも,GPU まで無料で利用することができます.
第3次機械学習ブームが始まって間もない頃はどうやって高価な GPU を入手するかが鬼門になっていたと思いますが,今となっては環境構築すらせずに簡単に利用できるところに時代を感じます.
まあそんなことはどうでもいいですが,Colab には無料版と有料版があり,利用できる GPU や実行時間の制限に違いがあります.
無料版と有料版の違い
Colab | Colab Pro | |
---|---|---|
無料 | 料金 | $9.99/mo |
Tesla K80 | GPU | Tesla T4 / P100 |
12H | 実行時間 | 24H |
12GB | メモリ | 25GB (high-memory VMs) |
無料版はコネクションを維持できる時間が最長 12 時間となっています.
回線が切断されると実行が終了するため,12 時間以内に収まるプログラムなら満足に動かせますが,何日もかかるような DNN のプログラムは厳しいです.
また,大量のメモリを食う処理はできないので,処理中に 12GB を超えるような大きなデータを扱う場合はミニバッチ化する必要があります.Unified memory は使えなさそうです.
GPU 性能比較
NVIDIA GPU で GPGPU するときには CUDA を利用しますが,今回はこれを Python で簡単に実装できる CuPy を用いて,GPU の計算速度を比較してみます.
ベンチマークとしては不十分ですが,参考までに.
実行環境
MacBook Pro (15-inch, 2018, macOS Catalina 10.15.5)
- Intel Core i9-8950HK 2.90GHz 6C/12T
- 32GB 2,400MHz DDR4
Ubuntu Server (Ubuntu 16.04)
- Intel Xeon E5-2680 v4 2.40GHz 14C/28T
- NVIDIA Tesla P100 16GB x2
Google Colaboratory
- Intel Xeon CPU 2.20-2.30GHz
- NVIDIA Tesla K80 16GB
- Python 3.6.9
使用するプログラム
GPU は簡単な演算を大量に並列化して実行する能力に長けており,高速化が狙えるのは行列計算を伴うようなプログラムです.
例として,大きな行列計算を行うプログラムを実行してみます.
# For GPU
from time import perf_counter
import cupy as cp
perf_counters = []
for i in range(10):
start = perf_counter()
A = cp.arange(1e8).reshape(10000, 10000)
B = cp.dot(A.T, A)
perf_counters.append(perf_counter() - start)
perf_counters = cp.array(perf_counters)
print('average of process time [ns]: ', cp.average(perf_counters) * 1e9)
# For CPU
from time import perf_counter
import numpy as np
perf_counters = []
for i in range(10):
start = perf_counter()
A = np.arange(1e8).reshape(10000, 10000)
B = np.dot(A.T, A)
perf_counters.append(perf_counter() - start)
perf_counters = np.array(perf_counters)
print('average of process time [ns]: ', np.average(perf_counters) * 1e9)
Colab で GPU を使うときは [Edit] > [Notebook settings] でハードウェアアクセラレータを GPU に変更する必要があります.
実行結果
- MacBook Pro: 9032536339.0 [ns]
- Ubuntu Server: 49640674.010152 [ns]
- Google Colab: 61558302.40004434 [ns]
MacBook Pro の CPU で計算した場合は平均 9.0 秒かかったのに対し,Colab では平均 0.062 秒とかなりの高速化が実現できます.
また,Colab Pro で使えるという Tesla P100 を搭載した別サーバで同様の計算をしたところ,平均 0.050 秒という結果になりました.
課金したほうが GPU 性能自体も良くなることがわかります.