はじめに
TensorFlow を GPU で使いたい場合、最も簡単な方法は Google Colab を使うことである。
Google アカウントさえあれば、環境構築なしで GPU(場合によっては TPU)をすぐに利用できるため、「とにかく学習を動かしたい」「環境構築で詰まりたくない」場合は Colab を使うのがおすすめである。
一方で、以下のようなケースでは ローカル環境での TensorFlow GPU 環境構築が必要になる。
- 長時間・高頻度の学習を行いたい
- インターネット接続に依存せずに作業したい
- データサイズが大きく、Colab へのアップロードが現実的でない
- 研究・業務用途で再現性のある環境を管理したい
ただし、ローカル環境で TensorFlow を GPU で利用する場合は、PC に搭載されている GPU(内蔵または外付け)を直接使用する必要がある。
具体的には、以下の点を満たしていることが望ましい。
-
Mac の場合
- Apple Silicon(M1 / M2 / M3)を搭載していること
- Intel Mac では GPU(Metal)を用いた TensorFlow は利用できない
-
Windows の場合
- NVIDIA 製 GPU を搭載していること
- AMD / Intel GPU では TensorFlow の CUDA GPU 版は利用できない
本記事では、Colab ではなくローカル PC で TensorFlow を GPU 利用したい人を対象に、
実際に動作確認まで完了した環境構築手順をまとめる。また、環境構築の方法は本記事以外にも様々な方法があるため、本記事はその中でも一つの方法を示しているに過ぎないことは最初に断っておく。環境構築では個々人によって様々なエラーが生じるため、詰まった場合にはChatGPT等の生成AIに相談しながら進めていくと解決する場合がある。
本記事の対象読者
- TensorFlow をこれから使い始める初学者
- Windows や Mac での GPU 環境構築に一度つまずいたことがある人
本記事で扱わない内容
-
Linux(Ubuntu 等)
→ Linux 環境では TensorFlow GPU の構築手順が比較的整理されており、
本記事の主な対象である「初学者向けの環境構築」という目的から外れるため扱わない。 -
WSL
→ とりあえずインストールすることを目標としているため、手順の多いWSLは扱わない。 -
Docker / Kubernetes などのコンテナ環境
-
分散学習・マルチ GPU 構成
本記事の構成
本記事では、以下の 2 つの環境に絞って解説する。
-
Apple Silicon Mac(M1 / M2 / M3)
→ Metal を用いた GPU 利用 -
Windows 11 + NVIDIA GPU
→ TensorFlow 2.10 + CUDA を用いた GPU 利用
OS と GPU の組み合わせによって手順は大きく異なるため、
以降の章ではそれぞれを 独立した手順として説明する。
Apple Silicon Mac(M1/M2/M3)で TensorFlow(GPU / Metal 対応)を使う手順
はじめに
Apple Silicon(M1 / M2 / M3)搭載 Mac では、NVIDIA CUDA を用いた TensorFlow GPU 環境は利用できない。その代わりに、Apple が提供する GPU 計算基盤 Metal を利用することで、
TensorFlow から GPU を用いた計算が可能である。
本章では、Miniforge(conda)を用いて、Jupyter Notebook 上で
TensorFlow(Metal GPU 対応)を使用するまでの手順をまとめる。
全体の流れ(Apple Silicon Mac)
- Apple Silicon(M1 / M2 / M3)であることの確認
- Miniforge(conda-forge ベース)のインストール
- TensorFlow 用 仮想環境の作成(Python 3.10)
- TensorFlow(Apple Silicon / Metal 対応)のインストール
- Jupyter Notebook のインストールと起動
- Jupyter Kernel(tf-mac)の選択
- GPU(Metal)が利用できているか確認
Apple Silicon(M1 / M2 / M3)であることの確認
Apple Silicon であることはターミナルにて、以下で確認できる。
uname -m
arm64 と表示されれば Apple Silicon である。
【動作確認環境】
- macOS(Sequoia 15.4.1)
- CPU / GPU : M2
- Python:3.10
Miniforge のインストール
Apple Silicon では Anaconda よりも、conda-forge ベースの Miniforge を使用した方が安定する。以下のページからMiniforge3-MacOSX-arm64.sh をダウンロードする。
ダウンロードしたファイルがあるディレクトリで以下を実行する。
bash Miniforge3-MacOSX-arm64.sh
インストール後、conda を zsh に初期化する。
~/miniforge3/bin/conda init zsh
このコマンドは PATH を直接通すものではなく、
~/.zshrc に conda 初期化処理を書き込むものである。
実行後は必ずターミナルを再起動すること。
インストールの確認を行う
conda --version
上記のコマンドによって、condaのバージョンが表示されれば成功である。
TensorFlow 用仮想環境の作成
Python 3.10 を用いて仮想環境を作成する。ここでは、仮想環境の名前をtf-macとする。
conda create -n tf-mac python=3.10 -y
conda activate tf-mac
TensorFlow(Metal GPU 対応)のインストール
Apple Silicon 用 TensorFlow は pip 経由でインストールする。
pip install --upgrade pip
pip install tensorflow-macos tensorflow-metal
- tensorflow-macos:Apple Silicon 対応 TensorFlow 本体
- tensorflow-metal:Metal GPU バックエンド
Jupyter Notebook のセットアップ
Jupyter Notebookのインストールおよび設定を行う。
pip install notebook ipykernel
python -m ipykernel install --user --name tf-mac --display-name "Python (tf-mac)"
Jupyter Notebookの起動
jupyter notebook
Jupyter Notebook 上で
Kernel → Change Kernel → Python (tf-mac) を選択する。(または、New → ython (tf-mac) )
GPU(Metal)が利用できているかの確認
以下を Jupyter Notebook 上で実行する。
import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices())
print(tf.config.list_physical_devices('GPU'))
Apple Silicon では、GPU が明示的に表示されない場合がある。しかし、この場合でも Metal backend は内部的に有効化されていることがある。
簡単な GPU 動作確認
import tensorflow as tf
import time
with tf.device('/GPU:0'):
a = tf.random.normal([6000, 6000])
b = tf.random.normal([6000, 6000])
start = time.time()
c = tf.matmul(a, b)
print("Time:", time.time() - start)
もちろんCPUやGPUの性能に依存するが、CPU実行では、約6秒以上要するが、GPU実行では約2秒程度で完了する。
Windows 11 + NVIDIA GPU で TensorFlow 2.10(GPU対応)を conda で構築する手順
はじめに
Windows 環境で TensorFlow を GPU 対応で利用しようとすると、
- TensorFlow のバージョン制約
- CUDA / cuDNN の対応関係
- NumPy 2.x との非互換
などにより、インストールで詰まりやすい。また、WindowsではTensorFlow 2.11版以降ではWindowsのGPU用ビルドが提供されないため、公式でのサポートが終了している。そのため、理想としてはWSL経由でTensorFlowを使うことになる。ただし、TensorFlow 2.10を用いればWindowsでもGPU版のTensorFlowを動かすことは可能である。
本記事では、Windows ネイティブ環境で TensorFlow 2.10(GPU 対応)を安定して動かすことを目的として、実際に動作確認まで完了した手順をまとめる。
【動作確認済み環境】
- OS:Windows 11 Pro
- CPU:Intel(R) Core(TM) Ultra 7 255HX
- GPU:NVIDIA RTX PRO 4000 Blackwell Generation Laptop GPU
- Python:3.10
- TensorFlow:2.10.0
- CUDA:11.2
- cuDNN:8.1
全体の流れ
- NVIDIA GPU の確認
- Miniconda のインストール
- TensorFlow GPU 用仮想環境の作成
- NumPy 1.x のインストール
- TensorFlow(GPU 対応)+ CUDA / cuDNN のインストール
- Jupyter Notebook のインストールと起動
- GPU が認識されているか確認
NVIDIA GPU の確認
まず NVIDIA GPU が正しく認識されているかを確認する。
コマンドプロンプトまたは PowerShell で以下を実行:
nvidia-smi
GPU 情報が表示されれば OK。
表示されない場合は、NVIDIA ドライバのインストールが必要。
Miniconda のインストール(軽量で推奨)
ダウンロード
以下から Miniconda3 Windows x86_64 をダウンロードする。
インストール後、スタートメニューから
Anaconda Prompt (Miniconda3) を起動する。
TensorFlow GPU 用 仮想環境の作成
Anaconda Prompt で以下を実行:
conda create -n tf-gpu python=3.10 -y
conda activate tf-gpu
以降の操作は 必ずこの環境を有効化した状態で行う。
NumPy 1.x のインストール(重要)
TensorFlow 2.10 は NumPy 2.x と非互換であるため、
事前に NumPy 1.x を明示的にインストールする。
conda install -y numpy=1.23.5
確認:
python -c "import numpy as np; print(np.__version__)"
TensorFlow(GPU対応版)+ CUDA / cuDNN のインストール
TensorFlow 2.10 のインストール(pip)
pip install --upgrade pip
pip install "tensorflow==2.10.0"
※ Windows ネイティブで GPU 対応なのは TensorFlow 2.10 が最終。
CUDA / cuDNN のインストール(conda)
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1 -y
この組み合わせが TensorFlow 2.10 の公式対応構成である。
Jupyter Notebook のインストール
conda install -y notebook ipykernel
カーネル登録:
python -m ipykernel install --user --name tf-gpu --display-name "Python (tf-gpu)"
Jupyter Notebook の起動
jupyter notebook
ブラウザが開いたら、
右上の Kernel 名、または Kernel → Change Kernel からPython (tf-gpu) を選択する。(または、New → ython (tf-gpu) )
GPU が認識されているか確認
Notebook 上で以下を実行:
import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))
期待される出力例
2.10.0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
これが表示されれば、TensorFlow が GPU を正しく認識している。
補足:NumPy 2.x と TensorFlow 2.10 の非互換について
TensorFlow 2.10(特に Windows ネイティブ GPU 版)は、NumPy 1.x を前提としてビルドされているため、 NumPy 2.x がインストールされている環境では正常に動作しない。
実際には、以下のようなエラーや警告が発生する。
A module that was compiled using numpy 1.x cannot be run in numpy 2.x-
ImportError/Segmentation fault -
import tensorflow時に異常終了
そのため、TensorFlow 2.10 を使用する場合は NumPy 1.x に固定する必要がある。
NumPy のバージョン確認方法
仮想環境を有効化した状態のAnaconda Promptで、以下を実行する。
python -c "import numpy as np; print(np.__version__)"
ここで、バージョンが2以上の場合はnumpyをアンインストールする。
pip uninstall -y numpy
NumPy の再インストール
TensorFlow 2.10 と最も相性の良いバージョンは NumPy 1.23.5 である。
conda install -y numpy=1.23.5
インストール後、再度バージョンを確認する。
python -c "import numpy as np; print(np.__version__)"
1.23.5 と表示されれば問題ない。
Special Thanks
エラー対処や文章の作成にはChat GPTさんに多大なご協力をいただきましたので、この場を借りて御礼申し上げます。