TensorFlowでGPUを使う方法を解説|インストール手順・確認方法・認識しないときの対処法まで

catch-img

「TensorFlowを使ってGPUで高速な機械学習をしたいのに、インストール後にうまく認識してくれない」「本当にGPUを利用できているのか確認方法がわからない」と悩んでいる方は多いのではないでしょうか。

ディープラーニングや機械学習の処理を高速化するために利用するTensorFlowで、GPUを活用するには、CUDAやcuDNNのバージョン適合やドライバ環境など複数の条件が揃っていなければ正しく動作しません。

本記事では、TensorFlowでGPUを使うためのインストール手順から、認識状況の確認方法、GPUがうまく認識されない場合の対処法まで、初心者にもわかりやすく解説します。

ハイレゾのGPUクラウドでは、最新のGPUを搭載したクラウド環境を低価格で提供しており、面倒なセットアップを行う必要がありません。

TensorFlowでGPUを使うと何ができるのか

TensorFlow(テンソルフロー)はGoogleが開発したオープンソースの機械学習ライブラリであり、GPUを利用することでディープラーニングの膨大な計算処理を劇的に高速化できる点が特徴です。

GPUは並列処理能力に優れており、行列演算との相性が良いため、CPUでは数日から数週間かかっていた学習処理を数時間から数日に短縮し、研究者や開発者が短い開発サイクルで多くの実験やモデル改善を重ねることができるようになりました。

例えば数百万枚規模の画像データ処理や複雑で大規模なネットワーク構造を持つモデル開発にはGPUが必須であり、AlphaGo Zeroのように専用のTPUを活用することでCPUでは実現不可能だった深層ニューラルネットワークの構築が可能となりました。

CPUだけでは処理が遅くなる理由

TensorFlowの計算処理は、膨大な量の行列演算を伴うため、CPUのみで実行すると処理が著しく遅くなる場合があります。

CPUは順次処理を得意としており、汎用的なタスクに適している一方で、大量の単純な計算を同時にこなす並列処理は得意ではありません。そのため、ディープラーニングのような並列計算が求められる処理では、CPUがボトルネックとなり、学習に膨大な時間がかかってしまいます。

この課題を解決するためには、NVIDIA製のGPUのように、並列処理に特化したハードウェアを利用する環境を整え、対応するソフトウェアとの連携を確認する必要があるのです。

【対応表】Tensorflow GPUとCUDA・CuDNN・Python

TensorFlow バージョン

Python バージョン

cuDNN バージョン

CUDA Toolkit バージョン

tensorflow-2.16

3.9 - 3.12

8.9

12.3

tensorflow-2.15

3.9 - 3.11

8.9

12.2

tensorflow-2.14

3.9 - 3.11

8.9

12.2

tensorflow-2.13

3.8 - 3.11

8.6

11.8

tensorflow-2.12

3.8 - 3.11

8.6

11.8

tensorflow-2.11

3.7 - 3.10

8.1

11.2

tensorflow-2.10

3.7 - 3.10

8.1

11.2

tensorflow-2.9

3.7 - 3.10

8.1

11.2

tensorflow-2.8

3.7 - 3.10

8.1

11.2

tensorflow-2.7

3.7 - 3.9

8.1

11.2

tensorflow-2.5 / 2.6

3.6 - 3.9

8.1

11.2

tensorflow-2.4

3.6 - 3.8

8.0

11.0

tensorflow-2.2 / 2.3

3.6 - 3.8

7.6

10.1

tensorflow-2.1

3.5 - 3.7

7.6

10.1

tensorflow-2.0

3.5 - 3.7

7.4

10.0

出典: TensorFlow公式ドキュメント|関連技術ブログ

TensorFlowでGPUを効果的に利用するには、TensorFlowのバージョンと、NVIDIAが提供するCUDA ToolkitおよびcuDNNライブラリのバージョンが適切に対応していることを確認することが重要です。

バージョンに不整合があると、GPUが正常に認識されなかったり、パフォーマンスが低下したりする原因となります。

GPU環境を構築する際は、まずこの対応表を参照し、使用するTensorFlowのバージョンに合わせて適切なCUDAおよびcuDNNのバージョンを選定することが不可欠です。

TensorFlowでGPUを動かすための準備

TensorFlowでGPUを動かすためには、以下5つのポイントを留意しましょう。

・NVIDIA製のGPUカードがPCに搭載されているか確認する

・GPUがCUDAに対応しているかチェックする

・最新のNVIDIA GPUドライバをインストールする

・TensorFlowのバージョンに対応したCUDA Toolkitをダウンロード・インストールする

・cuDNNライブラリをダウンロードし、所定の場所に配置する

これらの環境を整えることで、TensorFlowでGPUを利用することが可能になります。

【コマンド付き】TensorFlowでGPUを使用する手順

TensorFlowでGPUを使うための環境構築から動作確認までを、コマンド付きでわかりやすく解説。初心者でも迷わず設定できる手順をまとめました。

以下5つのステップで使用しましょう。

  1. 必要なソフトウェアをインストールする

  2. TensorFlow(GPU対応版)のインストール

  3. メモリを設定する

  4. TensorFlowプログラムを実行する

①必要なソフトウェアをインストールする

NVIDIAの公式サイトから、GPUモデルに適合する最新のドライバをダウンロードし、インストールします。

インストール時には、カスタムインストールを選択し、「クリーンインストールを実行する」にチェックを入れることで、以前のバージョンのドライバが完全に削除され、新しいドライバがクリーンな状態で導入されるため、不具合を避けることができます。

ドライバーのインストール後は、nvidia-smiコマンドを実行することで、正常にインストールされたかを確認できます。

②TensorFlow(GPU対応版)のインストール

ここでは、Anacondaで仮想環境を作成してTensorFlowをインストールする方法をステップごとに紹介していきます。

ステップ
01

ステップ1. 仮想環境の作成

他のソフトウェアとのバージョン依存や競合を防ぐためにAnacondaを利用してTensorFlow専用の仮想環境を作ります。

bash

conda create -n tf_gpu python=3.10

conda activate tf_gpu

ステップ
02

ステップ2. TensorFlow-GPU対応版のインストール

・conda経由の場合(自動でCUDA/cuDNNもインストールされることが多い)

bash

conda install tensorflow

・pip経由の場合(CUDA/cuDNNは手動で用意しておく必要あり)da i

bash
pip install tensorflow
※tensorflow-gpu パッケージは廃止され、現在は tensorflow パッケージがGPU対応となっています。

ステップ
03

ステップ3. 動作確認

・Pythonで下記コードを実行し、GPUが認識されるか確認

python
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
→ [PhysicalDevice(name='/physical_device:GPU:0', ...)] のように表示されれば完了です。

③メモリを設定する

TensorFlowでGPUを利用する際には、「必要な分だけメモリを動的に確保する方法」と「GPUの最大使用メモリ量を制限する方法」がよく使われます。

ここでは、それぞれの具体的なコード例と説明をまとめます。

ステップ
01

GPUメモリの「動的確保」を有効にする方法

デフォルトでは、TensorFlowはGPUの全メモリを確保しようとしてしまうので、必要な分だけメモリを確保するに設定します。

python
import tensorflow as tf

gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
except RuntimeError as e:
print(e)

コードの内容とポイント
・set_memory_growth を True に設定すると、必要な分だけメモリを順次確保します。
・既にGPUに他のプロセスがメモリを確保している場合でも、一部を使えます。
・この設定はTensorFlowの初期化前に行う必要があります。

ステップ
02

最大GPUメモリ使用量を制限する方法

GPUメモリの40%までしか使わないように制限したい場合は次のように設定します。

python

import tensorflow as tf

gpus = tf.config.list_physical_devices('GPU')

if gpus:

try:

tf.config.set_logical_device_configuration(

gpus[0],

[tf.config.LogicalDeviceConfiguration(memory_limit=4096)] # 例:4096MB = 4GB

)

except RuntimeError as e:

print(e)

コードの内容とポイント

・memory_limit でMB単位で制限できます。

・この設定はTensorFlowの初期化前に行う必要があります。

ステップ
03

設定の確認

設定後、以下コマンドでGPUの使用状況を確認できます。

bash
nvidia-smi

TensorFlowのコード実行中に、メモリの使用量が希望通りになっているかをチェックします。

④TensorFlowプログラムを実行する

ここでは、TensorFlowでGPUが利用できるか確認しながら、実際に簡単なニューラルネットワークを使ってMNIST手書き数字データセットの分類を行うサンプルプログラムを紹介します。

ステップ
01

GPUの認識状況を確認

まず、TensorFlowがGPUを認識しているか確認します。

python
import tensorflow as tf

print("GPUの一覧:", tf.config.list_physical_devices('GPU'))

実行結果
【成功】GPUの一覧 [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
【失敗】GPUの一覧: []

ステップ
02

GPUの認識状況を確認

以下は、TensorFlowとKerasを使ったMNIST分類のサンプルコードです。

python
import tensorflow as tf
from tensorflow.keras import layers, models

MNISTデータセットの読み込み

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

データの前処理

x_train = x_train.reshape(-1, 28, 28, 1).astype("float32") / 255
x_test = x_test.reshape(-1, 28, 28, 1).astype("float32") / 255

モデル構築

model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])

モデルのコンパイル

model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

モデルの学習

model.fit(x_train, y_train, epochs=5, batch_size=64, validation_split=0.1)

テストデータで評価

test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"テスト精度: {test_acc:.3f}")

ステップ
03

MNIST分類モデルの実行結果

テスト精度: 0.983

このテストでは、約98%の精度が出ることが多く、成功結果となります。

このサンプルコードは、TensorFlow環境でGPUが期待通りに動作しているか確認でき、実際のディープラーニング開発のスタートに使われています。

GPUが認識されないときに確認するポイントと対処法

TensorFlowでGPUが認識されない場合、いくつかの一般的な原因が考えられます。

原因を特定し、適切な対処法を講じることで、問題を解決できる可能性が高まります。

ここでは、よくある原因とその対処法を具体的に解説します。

CUDAやcuDNNのバージョンが合っているか確認する

TensorFlowがGPUを認識しない最も一般的な原因の一つは、TensorFlow、CUDAToolkit、およびcuDNNライブラリのバージョン間の不整合です。

これらのソフトウェアは特定のバージョン間でしか互換性がなく、異なるバージョンを組み合わせるとGPUが正常に動作しないことがあります。

この問題を解決するには、TensorFlowの公式ドキュメントで提供されている対応表を確認し、すべてのコンポーネントが互換性のあるバージョンであることを再確認して、必要に応じて再インストールしましょう。

仮想環境・Docker環境で設定がずれていないか見直す

Docker環境でTensorFlowを利用する場合は、公式のTensorFlow GPU対応イメージ(tensorflow/tensorflow:latest-gpuなど)を利用しましょう。

チェックリストを上から順番に確認して、ずれていないか見直します。

仮想環境(Anaconda/venv)でのチェックリスト

基本確認

  •  仮想環境が有効化されているか(conda activate 環境名 or source venv/bin/activate)
  •  正しい仮想環境で作業しているか(conda info --envs で確認)
  •  TensorFlow-GPUがインストールされているか(pip list | grep tensorflow)

バージョン確認

  •  TensorFlow、CUDA、cuDNNのバージョンが互換性があるか
  •  conda list cudatoolkit でCUDAのバージョンを確認
  •  conda list cudnn でcuDNNのバージョンを確認

パス設定確認

  •  echo $PATH でCUDAのbinディレクトリが含まれているか
  •  echo $LD_LIBRARY_PATH でCUDAのlib64ディレクトリが含まれているか(Linux)
  •  nvcc --version コマンドが実行できるか
  •  nvidia-smi コマンドでGPUが表示されるか

Python内での確認

  •  import tensorflow as tf
  •  tf.config.list_physical_devices('GPU') でGPUが表示されるか
  •  tf.test.is_built_with_cuda() がTrueを返すか

Docker環境でのチェックリスト

ホスト側の確認

  •  NVIDIA GPUドライバがインストールされているか
  •  nvidia-smi でホスト側でGPUが認識されているか
  •  NVIDIA Container Toolkit(nvidia-docker2)がインストールされているか
  •  Dockerデーモンが再起動されているか(sudo systemctl restart docker)

Dockerイメージ・コンテナの確認

  •  GPU対応のTensorFlowイメージを使用しているか(例:tensorflow/tensorflow:latest-gpu)
  •  コンテナ起動時に --gpus all オプションを付けているか

bash

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash

  •  または --runtime=nvidia を使用しているか(旧方式)

コンテナ内での確認

  •  nvidia-smi コマンドがコンテナ内で実行できるか
  •  nvcc --version でCUDAバージョンが表示されるか
  •  /usr/local/cuda/ ディレクトリが存在するか
  •  Python内でGPUが認識されているか

python

import tensorflow as tf

print(tf.config.list_physical_devices('GPU'))

Docker Composeを使用している場合

  •  docker-compose.yml に以下の設定があるかを確認

yaml

services:

app:

runtime: nvidia

environment:

- NVIDIA_VISIBLE_DEVICES=all

環境変数が正しく設定されているか確認する

環境変数の確認方法から設定手順までをステップごとに解説します。

ステップ
01

CUDA・cuDNN関連の環境変数確認

以下の環境変数が正しく設定されているか確認します。

  • PATH:CUDAのバイナリ(bin)ディレクトリのパス
  • LD_LIBRARY_PATH(Linux):CUDA、cuDNNのライブラリ(lib64)ディレクトリのパス
  • CUDA_HOMEまたはCUDA_PATH:CUDA Toolkitのインストール先

ステップ
02

設定確認のテスト方法

・Windowsの場合

コマンドプロンプトで以下のコマンドを入力します。

cmd

echo %PATH%

echo %CUDA_PATH%

・Linux/macOSの場合

ターミナルで以下を入力します。

bash

echo $PATH

echo $LD_LIBRARY_PATH

echo $CUDA_HOME

ステップ
03

正しいパスの例

以下のパスの例を参考にしてただく設定されているか確認します。

CUDA Toolkitが C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2 (Windows)や /usr/local/cuda-12.2(Linux)にインストールされている場合は、以下の箇所のディレクトリを確認します。

・Windows

PATHに C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\bin が含まれているか

CUDA_PATHに C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2 が設定されているか

・Linux

PATHに /usr/local/cuda-12.2/bin が含まれているか

LD_LIBRARY_PATHに /usr/local/cuda-12.2/lib64 が含まれているか

CUDA_HOMEに /usr/local/cuda-12.2 が設定されているか

TensorFlowでGPUを使う際によくある質問

TensorFlowでGPUを使用する際、多くのユーザーが疑問に思う点をまとめてみました。 ここでは、バージョン互換性からAnaconda環境でのGPU認識、さらには複数GPUの利用まで、よくある質問とその回答を詳しく解説します。

Q.

CUDAやcuDNNのバージョンが合っていないとどうなりますか?

A.

CUDAやcuDNNのバージョンがTensorFlowのバージョンと合っていない場合、GPUが正常に認識されず、利用できない、または予期せぬエラーが発生することがあります。

具体的には、「Status:devicekernelimageisinvalid」のようなエラーメッセージが表示される場合があります。

これは、TensorFlowパッケージに、お使いのGPUアーキテクチャに対応するPTX(ParallelThreadExecution)コードが含まれていないために発生します。

この問題を避けるためには、TensorFlowの公式ドキュメントで提供されている互換性リストを確認し、すべてのコンポーネント(TensorFlow,CUDAToolkit,cuDNN,NVIDIAドライバ)に対応するバージョンでインストール行うことで解決ができます。

Q.

Anaconda環境でGPUが認識されません。

A.

Anaconda環境でTensorFlowがGPUを認識しない場合、いくつかの原因が考えられます。

以下の設定を一つずつ確認・修正することで、GPU認識の問題解決につながります。

・TensorFlow、CUDA、cuDNNのバージョンが互換性のある組み合わせか確認する

・conda installコマンドを使い、TensorFlow・CUDA・cuDNNをまとめてインストールするパッケージを利用する

・Windows環境では、Windows StoreからインストールしたPythonが原因でGPUが認識されないことがあるので、公式サイトから適切なPythonバージョンを導入し、「アプリ実行エイリアス」でMicrosoft Store版Pythonへの紐づけをオフにして実行する

・環境変数PATHが正しく設定されているか、CUDAやcuDNNのパスが通っているか確認する

Q.

TensorFlowで複数のGPUを使うことはできますか?

A.

TensorFlowでは複数のGPUを使用することが可能です。

TensorFlow2.0以降では、tf.distribute.StrategyというAPIが提供されており、これを活用するのが複数のGPUを扱う最も推奨される方法になっています。

Strategyを使用すると、コードを大幅に変更することなく、シングルGPU環境からマルチGPU環境へ移行できます。

Tensorflowの実行環境はクラウドGPUが快適!

TensorFlowでGPUを活用する方法について、インストール手順、GPUが正しく認識されているかを確認する方法、そして認識しない場合の対処法までを詳しく解説しました。GPUを活用することで、ディープラーニングのトレーニング時間を大幅に短縮し、生産性を向上させることが可能です。

もし、ローカル環境でのGPU設定が難しい、手元に高性能なGPUがない、または複数のGPUを使いたい場合は、クラウドGPUの活用を検討してみてはいかがでしょうか?クラウドGPUを使えば、大規模な計算リソースを手軽に利用でき、インストールやハードウェアの保守の手間も省けます。

さらに、クラウドGPUの導入をスムーズに進められるよう、詳しい手順や活用法をまとめた「クラウドGPU活用ガイド」を無料でダウンロードいただけます。ぜひ、この機会に資料をダウンロードして、クラウド環境でのGPU利用を始めてみてください!

👉 [資料ダウンロードはこちらから]

HIGHRESO|テックブログ編集部
HIGHRESO|テックブログ編集部
HIGHRESO GPUのテックブログは、最新のGPUコンピューティング技術やクラウドインフラストラクチャに関する情報を発信しています。 本ブログは、GPUクラウドやAI技術に精通した専門家が、活用方法や最新技術、パフォーマンス最適化など実践的な情報をわかりやすく発信します。業界トレンドや事例も紹介し、読者がGPUクラウドを効果的に活用できるようサポートします。

人気記事ランキング

タグ一覧

ページトップへ戻る