Windows 11+Anaconda+Keras+TensorFlow+CUDA

メインマシン更新しました。RTX3060入りゲーミングノート。でDNNでAlphaZeroとかを追ってみます。

環境構築

これまでの環境はCygwinMinGWが5個以上入っていて片付かないわDocker+WSL2を動かしてみたが非力だわでストレスがたまっていたので、今回はミニマリストを目指します。Chocolateyでインストールできる奴はChocolateyで。バイナリパッケージがあるならそれ優先で。システム環境変数は嫌がりすぎると.batファイルからしか起動できない環境が増えるので臨機応変に。

  • Chocolateyインストール。Chocolatey GUIインストール。
  • ChocolateyからGit for Windowsインストール(MSYS2環境を兼ねて)。その他GitHub DesktopやNotepad++など。
  • ChocolateyからMiniconda (Python 3.9)インストール。

minicondaで仮想環境を作るとその中からconda install等がSSLError等になる

ググると似たようなエラーが出ている人はいるが少し違う(base環境ですらエラーになるのでOpenSSLのバイナリを手作業で導入するしかないらしい?)

自分はbase環境からだとconda install等できるのでcondaの範囲内で何とかならんかと調べていたら、仮想環境でconda listするとopensslパッケージが見当たらないことに気づきました。base環境からconda -n env_name opensslで解決しました。

opensslのバージョン指定とかが必要になる場合もありそうです。以下の公式Issueを参照のこと。

Conda SSL Error: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages. · Issue #11982 · conda/conda · GitHub

TensorFlow環境構築

囲碁界最強のアルゴリズムAlphaGoを使ってみよう | CodeCampus

↑を動かせる環境を、ピュアWindowsで構築できるか?

  • 最近のTensorFlowにはKerasも含まれている(少し差異があるらしいがそもそもTensorFlow1系と2系の差だってあるのだし)
  • NVIDIAのドライバーはStudio版の最新版で
  • 例に限らずpython最新版を持ち出す意味はないはず→python3.6の仮想環境を作ってみたがcondaパッケージが少ないので3.7で作り直し
  • [環境構築] TensorFlow+KerasをGPUで動かす[venv] - 開発めもとか
  • ↑に従いバージョンを決定しCUDA ToolkitとcuDNNをインストール
  • conda install tensorflow=2.9.1=gpu_py37****←2つありあてずっぽうで選んだ
  • するとcudatoolkitとcudnnまで少し違うバージョンで入ってきた…
  • tf.config.list_physical_devices('GPU')等で疎通確認

ノートブックが動き出すところまで

  • conda install jupyter
  • conda install matplotlib
  • ノートブック実行でCUDA_ERROR_OUT_OF_MEMORYになったのでdGPUを使わないようにする→CUDAからも見えなくなってしまったがとりあえず進める
  • conda install pydot
  • currently only supports the NHWC tensor format on the CPU.→CPUではなくcuDNNを使わせる必要がある
  • CUBLAS_STATUS_NOT_INITIALIZED
  • モリー割り当ての問題らしい、allow_growth=Trueが必要、TensorFlow2系では↓の書き方
  • 【TF2】Tensorflow2.x でGPU設定をする (旧 allow_growth の呼び替え) | マキシ’sディーパラ
  • nvidia-smiでほかのプロセスがメモリーを握ってないか確認、それでもエラーが出るならPC再起動