端の知識の備忘録

技術メモになりきれない、なにものか達の供養先

TensorFlow2.11からはWindows用のGPU対応ビルドがpipで配布されないらしい

内容

最近少しkaggleをお休みしTypeScriptを勉強していたり、仕事でもほとんどPyTorchしか使っていなかったりでTensorFlowの動向を追っていなかったのだが、ちょっとした衝撃的なニュースを今日知った。なんとタイトルの通り、TensorFlowの最新版2.11.0(2022年11月18日リリース)からはWindowsGPU用ビルドが提供されずサードパーティ(Intel)によるCPU用のwhlのみが提供されるとのこと。

github.com

TF pip:

Windows CPU-builds for x86/x64 processors are now built, maintained, tested and released by a third party: Intel. Installing the Windows-native pip packages for tensorflow or tensorflow-cpu would install Intel's tensorflow-intel package. These packages are provided on an as-is basis. TensorFlow will use reasonable efforts to maintain the availability and integrity of this pip package. There may be delays if the third party fails to release the pip package. For using TensorFlow GPU on Windows, you will need to install TensorFlow in WSL2.

これは簡単に言ってしまうと、 Windowsで特にバージョンを指定せず pip install tensorflowを行うと、 CPU専用のものがインストールされてしまうということである。

公式によると”これからTF最新版でGPUを使いたければ、WindowsではWSL2経由で使ってね!”ということらしい。 まあ確かにそれで問題ない場合もあるであろうが、WSLって何?という初心者にはハードルが高くなるだろうし、私の職場のPCのようにLTSBで古いWindows10に固定されておりWSL2を利用できない環境もあるだろうから、ちょっと乱暴な話のようにも思える。

ということで、もう一つ解決策として提示されているのが、本ブログでも紹介したDirectML-pluginの利用である。 ただ、現在まだベータ版の扱いで実装されていない機能も多く、更にはNativeのCUDAよりは遅いはずなので、これは完全な代替策にはならないと個人的には感じる。

github.com

hashicco.hatenablog.com

(20240905追記) どうやらDirectML-Pluginも1年以上Commitが無く、開発停止になっている模様。ONNX Runtimeの利用が後継として案内されているが、ONNXって推論だけじゃないのかな?

これでTensorflowのフル機能をWindowsで使うにあたり残された手段はWSL2のみでしょうか。

⚠️ Development of TensorFlow-DirectML-Plugin has been paused until further notice. To take advantage of the latest DirectML features and performance improvements for inference scenarios, we recommend taking a look at ONNX Runtime. ⚠️

とはいえ既にWindowsからバージョンの指定なしにTensorFlowをpipからインストールすると、 tensorflow-intel というCPU専用のものがインストールされ、GPUによる高速化の恩恵を受けることができないようだ。

ではどうすればよいのかというと、上に書いたとおりであるが、①2.10以前のTensorFlowを使い続ける、 ②WSL2を使う、 ③ DirectML-Pluginを使う、の3つが解決策となるだろう。

  • ①はそのままの意味で pip install tensorflow=2.10.0などと、過去のバージョンを指定してインストールする。一応TensorFlow2.10はPython3.10で動くので、Python3.10 のサポート期限の2026年10月まではこの方法で使えなくはないだろう。ただし、今後最新版に追加されていく機能はもちろん使えない。

  • ②は少し準備が必要だが、公式で言及されている最も確実な方法だ。 セットアップの方法はここに書くよりも、こことかにより良い情報がありますので、そちらをご覧ください。

  • ③は過去のブログ記事に書いたように、 pip install tensorflow したのちに、 pip install tensorflow-directmi-plugin を行うことで対応可能。ただまだ開発途上のプロジ エクトなので、DirectML-plugin起因のトラブルにあたることも多いだろう。私もIssueを報告したことがあるが、Open Sourceコミュニティの一員として人柱になる心づもりでなければ、まだ使うべきではないと思う。

もしかすると今後はAnacondaとかで非公式なWindows用tensorflow-gpuが提供されることもあるかもしれないが、今のところは上の①〜③で対応するしかないだろう。もしくはもうPyTorchに移行してしまうか?Windowsを捨ててLinuxに移行するか?

とりあえず私はちょっと前にメインPCのPython実行環境をWSL2に移したので、それを使っていくことにします。

どのコミュニティにも属さない孤独なMLエンジニアもどきである私にとっては結構大きいニュースに感じたが、世間ではどう受け止められているのであろうか?ちょっと気になるところです。

皆様も新しいバージョンのTensorFlowをWindowsで使う場合、ご注意ください。