TensorFlowをGPU搭載マシンで使用している場合、GPUを使用して計算を高速化できますが、場合によってはCPUで実行する必要があることもあります。この記事では、GPUからCPUに切り替えてTensorFlowを実行する方法を解説します。また、簡単なサンプルコードを提供し、GPUとCPUの切り替え方法を詳しく説明します。
(1)GPUで実行する簡単なサンプルコード
まずは、GPUで実行する簡単なTensorFlowコードを見てみましょう。以下は、GPUを使用してモデルをトレーニングするシンプルなサンプルコードです。
import tensorflow as tf
# GPUデバイスのリストを表示
print("Available GPUs:", tf.config.list_physical_devices('GPU'))
# サンプルのテンソルを生成
x = tf.random.normal([100, 100])
# 単純な線形モデルを作成
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(100,)),
tf.keras.layers.Dense(1)
])
# モデルをコンパイル
model.compile(optimizer='adam', loss='mse')
# ダミーデータでトレーニング
model.fit(x, tf.random.normal([100, 1]), epochs=5)
このコードは、TensorFlowがGPUデバイスを利用できる場合、そのデバイスを使用して計算を行います。
(2)CPUで実行する方法
次に、同じコードをCPUで実行する方法について説明します。TensorFlowはデフォルトで利用可能なGPUを使用しますが、CPUに切り替えたい場合は、次の方法で指定できます。
import tensorflow as tf
# GPUを無効化してCPUで実行
with tf.device('/CPU:0'):
# サンプルのテンソルを生成
x = tf.random.normal([100, 100])
# 単純な線形モデルを作成
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(100,)),
tf.keras.layers.Dense(1)
])
# モデルをコンパイル
model.compile(optimizer='adam', loss='mse')
# ダミーデータでトレーニング
model.fit(x, tf.random.normal([100, 1]), epochs=5)
このコードは、`tf.device(‘/CPU:0’)`を使用して、CPUでモデルのトレーニングを行うように指定しています。これにより、TensorFlowはGPUを無視してCPU上で計算を行います。
GPUからCPUに切り替える理由
通常、GPUは大規模なデータセットや計算を高速化するために使用されます。しかし、場合によっては、GPUが使用できない環境や、GPUを無駄にしたくない場合などに、CPUで処理を行いたいことがあります。CPUに切り替える理由としては、以下が考えられます。
- GPUが使用できない環境において、CPUを代替として使用する
- 開発・テスト段階で、軽い負荷で動作を確認するためにCPUを使用する
- 一部のモデルや処理がGPUよりもCPUでの実行が最適な場合
まとめ
TensorFlowをGPU搭載マシンでCPUに切り替えて実行する方法は簡単です。`tf.device(‘/CPU:0’)`を使って、GPUを無効にし、CPU上で実行できます。この方法を使うことで、CPUでの実行も可能になり、開発・テスト環境に合わせた柔軟な計算が可能です。TensorFlowは非常に柔軟で、ユーザーが必要に応じてデバイスを切り替えながら作業を行うことができます。


コメント