【Google Colab】ハードウェアアクセラレータ(GPU、TPU)のバージョン確認方法と現在のバージョン

2024年2月29日木曜日

Google Colab GPU TensorFlow TPU

t f B! P L

はじめに

こんにちは、SHOU です!
今回は、Google Colabを使用する上で気になるハードウェアアクセラレータのバージョンについて、調べてみました。
確認方法も載せていますので、ご自身で実行する際にも、確認してみてください!

Google Colabとは

Geminiによると・・・
Google Colab(Google Colaboratory:グーグルコラボラトリー)は、Google Researchが提供する無料のクラウドサービスです。ブラウザ上でPythonコードを実行でき、機械学習、データ分析、教育などに特化しています。

主な特徴

  • インストール不要: 特別なセットアップや環境構築なしで、すぐにPythonを実行できます。
  • 無料: GPUやTPUなどの高性能なハードウェアを無料で利用できます。
  • 共有・コラボレーション: 作成したノートブックを他者と簡単に共有し、共同編集できます。
  • 豊富なライブラリ: TensorFlow、Keras、PyTorchなどの主要なライブラリがプリインストールされています。
  • 豊富なチュートリアル: 機械学習やデータ分析に関するチュートリアルが豊富に用意されています。

用途

  • 機械学習: ニューラルネットワークの構築、モデルの訓練、評価
  • データ分析: データの読み込み、クリーニング、分析、可視化
  • 教育: 機械学習やデータ分析の学習
  • プロトタイピング: アイデアの検証、プロトタイプの作成

Google Colab のハードウェアアクセラレータについて

Google Colaboratory(Colab)では、ハードウェアアクセラレータとして、GPU(Graphics Processing Unit)と TPU(Tensor processing unit)を無料で使うことができます。
暗号通貨のマイニングに使用することはできないないなどの制限はありますが、ちょっと触ってみる分には十分だと思います。
詳細な使用条件等については、 よくある質問 を参照してください。

ハードウェアアクセラレータの使用方法

個別ノートブックごとに設定することができ、 [ランタイム] - [ランタイムのタイプを変更] より変更します。
ハードウェアアクセラレータは None 、GPU 、 TPU から選択することができ(デフォルトは None)、選択後、[保存]を押すとリソースの再割り当てが行われます。

TensorFlowからGPUを使用できているか確認

TensorFlowからGPUが使用できているか、以下のコードで確認することができます。
実際に、設定を切り替えて確認してみました。

確認するコード

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

ハードウェアアクセラレータが None の場合

ハードウェアアクセラレータが None の状態での実行結果です。
device_type が CPU のみになっています。

実行結果

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 4215876578589703592]

ハードウェアアクセラレータが GPU の場合

ハードウェアアクセラレータが GPU の状態での実行結果です。
device_type が CPU に加えて、 GPU も追加されていることがわかります。

実行結果

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 5488461665986765567, name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 14509932544
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 1739823294434788088
 physical_device_desc: "device: 0, name: Tesla T4, pci bus id: 0000:00:04.0, compute capability: 7.5"]

ハードウェアアクセラレータが TPU の場合

ハードウェアアクセラレータが TPU の状態での実行結果です。
device_type が CPU のみになっています。
このコードでは、 TPU については確認することができないようです。

実行結果

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 1062555679917502575]

TensorFlowからTPUを使用できているか確認

TensorFlowからTPUが使用できているか、以下のコードで確認することができます。

確認するコード

import tensorflow as tf

try:
  tpu = tf.distribute.cluster_resolver.TPUClusterResolver()  # TPU detection
  print('Running on TPU ', tpu.cluster_spec().as_dict()['worker'])
except ValueError:
  raise BaseException('ERROR: Not connected to a TPU runtime; please see the previous cell in this notebook for instructions!')

tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)
tpu_strategy = tf.distribute.TPUStrategy(tpu)

エラーが発生しなければ、TPUを使用できていることになります。

実行結果

Running on TPU  ['10.44.115.162:8470']

参考にしたサイト

TensorFlowからGPUが認識できているかを2行コードで確認する

QooQ