はじめに

TensorFlow で機械学習やディープラーニングを行う場合、GPU を利用することで学習速度を大幅に向上させることができます。しかし、TensorFlow のバージョンアップに伴って GPU が認識されなくなるケースがあります。

この記事では、Windows 環境で TensorFlow を 2.10 から 2.13 にアップデートした際に GPU が認識されなくなった原因と対処法を紹介します。

TensorFlow が GPU で動かなくなった話

TensorFlow の最新バージョンがようやく Python 3.11 に対応したので、早速バージョンを 2.10 から 2.13 にアップデートしました。
しかし、さっそく動かしてみたところ GPU を認識してくれませんでした。

バージョン 2.10 と同じように GPU で AI 学習を行おうとしても、なぜか CPU で動作します。

そういう時にまず疑うのは CUDA, CuDNN のバージョンが TensorFlow のパッケージとあっているかどうかです。

TensorFlow が対応している CUDA, CuDNN のバージョン対応表は以下を参照してください。

TensorFlow を GPU で動かすときの CUDA, CuDNN バージョン早見表

今回は tensorFlow のバージョンを 2.13.0 にアップデートしたので cuDNNを 8.6、CUDAを 11.8 に更新しました。

しかし、バージョンをそろえても GPU を認識してくれませんでした。

GPU を認識しなかった原因

2.10 の時は GPU で動作していたので、CUDA や CuDNN のバージョンが原因でなければ TensorFlow の仕様変更が怪しいと考え、TensorFlow のリリースノートや更新情報を読み漁りました。

( TensorFlow は毎回更新するたびに何かが動かなくなっている気がする... )

どうやら TensorFlow 2.11 以降のバージョンではネイティブ Windows での GPU をサポートしなくなった らしいです。

Windows で バージョン 2.11 以降の TensorFlow を GPU で動かすには WSL2 を使う必要があります。

まとめ

TensorFlow 2.11 以降では、ネイティブ Windows 上での GPU サポートが廃止されました。Windows 環境で TensorFlow の GPU を利用する場合は、WSL2 上に環境を構築する必要があります。

WSL2 での TensorFlow セットアップについては公式ドキュメントに詳しい手順が記載されていますので、そちらを参考にしてください。TensorFlow のバージョンアップ時にはこのようなプラットフォームに関する変更がないか、事前にリリースノートを確認することをおすすめします。