ふかうら王のインストール手順 - mizar/YaneuraOu GitHub Wiki
ふかうら王とは、Deep Learningを用いたやねうら王です。
特徴
- dlshogi互換エンジン
- dlshogiと同等以上の棋力
- dlshogiのモデルファイルの読み込み可能
- やねうら王と互換性のあるエンジンオプション(思考時間設定、定跡設定等)
- やねうら王の定跡ファイルの読み込みなどをサポート
- GPUなしでは本来の性能の1/10も出ません。
Windows版のふかうら王には、次の4つの種類があります。
種類 | 内容 | GPU利用 | 探索速度 |
---|---|---|---|
ORT-CPU | CPUのみで実行 | × | 低速 |
ORT-DML | DirectMLを利用 | △ | 中速 |
ORT-TRT | TensorRT自動ビルド | ○ | 速い |
TensorRT | TensorRT | ◎ | 速い |
💡 ORT-TRTはTensorRTとほぼ同様で、TensorRT版よりは少しだけ遅いですが、自動ビルドに対応できるため、やねうら王プロジェクトでは、実行ファイルはこれの形式で配布しています。
🖋 TensorRT用の実行ファイルはいまのところ自動ビルドでは作れないので配布していません。
⚠ ORT-TRT版とTensorRT版は、TensorRTが使える環境でしか動作しません。つまりは、NVIDIAのGPUでしか動作しません。NVIDIAの比較的最近のGPUならば対応しています。
💡 「ORT」と言うのは、OnnxRuntimeの略です。OnnxRuntimeは、Microsoftの開発したcross platformで動作する機械学習のアクセラレータです。OnnxRuntimeには、「Execution Provider」と呼ばれる、プラグインを使う仕組みが搭載されています。この仕組みを用いて、DirectMLやTensorRTを呼び出しているのが、それぞれふかうら王のORT-DML版とORT-TRT版です。
CPUで動作するので、特に何も追加でインストールしなくとも動作すると思います。
GPUで処理するのに較べると100倍ぐらい遅いです。(比喩ではなく本当に…)
DirectMLというMicrosoftの開発した機械学習ライブラリを用いて動作します。これも遅いです。GPUが使える環境ならば自動的にGPUを使ってくれるのですが、それでもGPU本来の性能を100%引き出せないためか、遅いです。
DirectML自体は、最新のWindowsならばインストールされているはずなので新たに何かをインストールする必要はありません。
ORT-TRT版とTensorRT版は、TensorRTに対応したGPUが必要になります。
NVIDIAの比較的最近のGPUならば対応しています。
🖋 対応確認済みの機種
GeForce RTXシリーズなら2000番台, 3000番台。
V100 , A100など(ワークステーションで使われるGPU)。
🖋 おそらく対応する機種
Tensor Core搭載のNVIDIAのGPU
- Hopper世代(2022年~)
- NVIDIA H100 (ワークステーション・データセンター向け)
- (2022年発表?) (クリエイターグラフィック向け)
- NVIDIA GeForce RTX 40シリーズ? (2022年発表?) (一般ゲーミング向け)
- Ampare世代(2020年~)
- NVIDIA A100, A30, ... (ワークステーション・データセンター向け)
- NVIDIA A6000, A5500, A5000, ... (クリエイターグラフィック向け)
- NVIDIA GeForce RTX 30シリーズ (3090Ti, 3090, 3080Ti, 3080, ...) (一般ゲーミング向け)
- Turing・Volta世代(2018年~)
- NVIDIA V100 (ワークステーション・データセンター向け)
- Quadro RTX 8000, 6000, 5000, ... (クリエイターグラフィック向け)
- NVIVIA GeForce RTX 20シリーズ (2080Ti, 2080SUPER, 2080, ...) (一般ゲーミング向け)
また、動作に際して、CUDA、TensorRT、cuDNN、zlibが必要になります。
これらの導入に関しては、dlshogi(WCSC31)版の導入の記事を参考にしてください。ただし、それらのライブラリの必要なバージョンがdlshogiとふかうら王では異なります。
ふかうら王V7.61は、以下のバージョンで動作することを確認済みです。
🌛 TODO : 実行ファイルのダウンロードへのリンク用意する。
⚠ ふかうら王のバージョンが上がった時に依存するバージョンが変わることはあります。
🌛 REMIND : 依存するTensorRTのバージョンがこまめに変更になると実行ファイルを差し替える作業が面倒になるのでふかうら王のメジャーバージョンアップとか何かの節目にしか変更しないようにすべき。
🍙 こられ以外のバージョンで動作する保証はありません。ふかうら王が動作しないと言う人は、以下のバージョンで動作するかを試してみてください。
Version | Installer/Zip Filename | |
---|---|---|
CUDA | 11.6 | cuda_11.6.2_511.65_windows.exe |
TensorRT | 8.2.5.1 (8.2 GA Update 4) | TensorRT-8.2.5.1.Windows10.x86_64.cuda-11.4.cudnn8.2.zip NVIDIA TensorRT Download |
cuDNN | 8.4.0.27 | cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive.zip cuDNN Download (最新版) / cuDNN Archive (旧版) |
zlib | 1.2.3 | zlib123dllx64.zip |
🚧 2022/05/21 : TensorRT 8.4.0.6 (8.4 EA) は動作確認中 👉 TensorRT-8.4.0.6.Windows10.x86_64.cuda-11.6.cudnn8.3.zip
- EA(Early Access): 先行アクセス版: 新機能のテスト目的版
- GA(General Availability): 正式版・安定版
ダウンロード | URL | 備考 |
---|---|---|
CUDA |
https://developer.nvidia.com/cuda-downloads (最新版) https://developer.nvidia.com/cuda-toolkit-archive (過去バージョンのダウンロード) |
|
cuDNN |
https://developer.nvidia.com/rdp/cudnn-download (最新版) https://developer.nvidia.com/rdp/cudnn-archive (過去バージョンのダウンロード) |
⚠要NVIDIAユーザー登録 |
TensorRT | https://developer.nvidia.com/nvidia-tensorrt-download | ⚠要NVIDIAユーザー登録 |
zlib | https://www.winimage.com/zLibDll/zlib123dllx64.zip | cuDNN 8.3.0 以降の場合に必要 |
実行ファイルと同一のフォルダにこれらのdllを配置しない場合、環境変数PATHに、
- CUDAのbinフォルダ
- TensorRTのlibフォルダ
- cuDNNのbinフォルダ
を追加する必要があります。
⚠ ただし、ふかうら王とdlshogiを共存させる場合などでは、それぞれ依存するcuDNNやTensorRTのバージョンが異なるためこれは上手く行かず、CUDAのbinフォルダ以外にPATHを通すのはお勧めしません。(環境変数PATHのリストの順番が先になっているライブラリが読み込まれるため、違うバージョンのライブラリが読み込まれることになって失敗するものが出る。)ふかうら王、フォルダ構成例の構成をお勧めします。
以下で順番に説明します。
デフォルトのインストールディレクトリの場合、CUDAのbinは、以下のパスになります。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\【CUDAのバージョン番号】\bin
%CUDA_PATH% がCUDAのインストール先になっているはずなので
- %CUDA_PATH%\bin
を環境変数PATHに追加すれば良いでしょう。(CUDAインストーラによって自動的に追加されている筈ですが)
環境変数PATHはWindowsでは大事な資源です(例: 指定できる合計文字数は約2000文字まで)。また、環境変数PATHの指定順によってはそれぞれ別のバージョンのライブラリに依存する同士で競合を起こしてしまうことがあります。以下ではTensorRT・cuDNN・zlibをPATHに加える方法を説明していますが、環境変数PATHに極力頼らない方法を推奨します。 👉 dlshogiとふかうら王との共存
⚠ dlshogiとふかうら王とでは要求するTensorRTのバージョンが異なるので、ここに書いてある方法でTensorRTとcuDNNのlibにPATHを通すとdlshogiと共存できなくなる可能性が高いです。そこでTensorRTとcuDNNのlibにはPATHを通さずない方法をお勧めします。👉 dlshogiとふかうら王との共存
🍙 以下は、PATHを通す場合の説明ですが、ふかうら王では、この手順は非推奨です。
環境変数PATHに、TensorRTのlibディレクトリを追加します。
C:\に解凍した場合、以下のパスになっています。
C:\TensorRT-【TensorRTのバージョン番号】\lib
これを環境変数PATHに追加すれば良いでしょう。
cuDNNのbinにも同様にPATHを通す必要があります。
⚠ TensorRT同様に、これもPATHを通さない方法をお勧めします。 👉 dlshogiとふかうら王との共存
🍙 以下はPATHを通す場合の説明です。ふかうら王では、この手順は非推奨です。
cuDNNに対しても同様にPATHを通すのは面倒なので、TensorRTのインストール先のフォルダにファイルコピーしてしまうのが手っ取り早いです。
例) cuDNNのbinフォルダのファイルが TensorRTのインストール先のlibフォルダのファイルになるようにファイルコピー。
cuDNN 8.3.0 になってから、zlibが必要になったようです。 cuDNN 8.3.0 リリースノート
インストールガイド参考 : https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#install-zlib-windows
👉 zlibのdownload先 : https://www.winimage.com/zLibDll/zlib123dllx64.zip
解凍すると"zlibwapi.dll"というファイルがあるはずです。
cuDNNが内部的にこのファイルを用いるようです。
⚠ 本来このファイルは、cuDNNのbinフォルダにコピーすると良いのですが、TensorRT同様に、これもふかうら王の実行ファイルのあるフォルダに配置することをお勧めします。 👉 dlshogiとふかうら王との共存
「dlshogiは動作するけどTensorRT版のふかうら王が動作しない」という話をよく聞きます。
CUDAはバージョンが多少違っても動くようなのですが、TensorRTはバージョンが異なると動作しないことが多いです。
例えば、dlshogiのために、ふかうら王が想定しているのと異なるTensorRTのバージョンをインストールして、そこにPATHを通していたら、ふかうら王は動作しなくなります。(動かないと掲示板で書いているような人は、たいていこれが原因)
そこで、CUDAは(インストール先のフォルダを変更せず)普通にインストールします。
🍙 CUDA Toolkit 11.6 の場合、下記のフォルダにインストールされるはず。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6
TensorRTやcuDNNはzipファイルを展開してもそこにPATHは通さずに
- cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive\bin
- TensorRT-8.2.5.1.Windows10.x86_64.cuda-11.4.cudnn8.2\TensorRT-8.2.5.1\lib
のなかにある アプリケーション拡張(.dll) ファイルを、すべてふかうら王の実行ファイルがあるのと同じフォルダに配置してしまうという方法が良いと思います。
dlshogiのほうも同様に、cuDNNの"bin"フォルダ と TensorRTの"lib"フォルダ にある アプリケーション拡張(.dll) ファイルは、dlshogiの実行ファイルと同じフォルダに配置してしまうのが良いと思います。
こうしておけば、dlshogiとふかうら王と、どちらも起動するようにできます。
TensorRTとcuDNN、zlibwapi.dllをふかうら王の実行ファイルと同じフォルダに配置する場合の例です。(dlshogiと共存させるのであれば、この構成がお勧めです。)
💡 dlshogi側も同様に構成すればすべてのバージョンのdlshogi、ふかうら王が共存できます。
-
CUDAにPATHを通す ものとします。
-
そのあと、ふかうら王の実行ファイルを配置したフォルダを以下のように構成します。
-
以下は、ふかうら王(V7.61)とdlshogi(WCSC32版)とを共存させる構成例です。
- 📁 YaneuraOu-Deep-TensorRT-V761
- 📁 book
- 📄 *.db (やねうら王の標準定跡ファイルの場合)
- 📄 book.bin (Apery定跡ファイルの場合)
- 📁 eval
- 📄 *.model (推論モデルファイル)
- 🗒️ YaneuraOu-Deep-TensorRT.exe (ふかうら王エンジン本体・実行ファイル)
- 📄 cudnn_adv_infer64_8.dll (cuDNN v8.4.0)
- 📄 cudnn_cnn_infer64_8.dll (cuDNN v8.4.0)
- 📄 cudnn_ops_infer64_8.dll (cuDNN v8.4.0)
- 📄 cudnn64_8.dll (cuDNN v8.4.0)
- 📄 nvinder.dll (TensorRT 8.2.5.1)
- 📄 nvinder_builder_resource.dll (TensorRT 8.2.5.1)
- 📄 nvinder_plugin.dll (TensorRT 8.2.5.1)
- 📄 nvonnxparser.dll (TensorRT 8.2.5.1)
- 📄 zlibwapi.dll (zlibライブラリ)
- 📁 dlshogi-wcsc32
- 🗒️ build_onnx.exe (dlshogi-wcsc32同梱)
- 📄 DirectML.dll (dlshogi-wcsc32同梱)
- 🗒️ dlshogi_onnxruntime.exe (dlshogi-wcsc32同梱)
- 🗒️ dlshogi_onnxruntime_double.exe (dlshogi-wcsc32同梱)
- 🗒️ dlshogi_tensorrt.exe (dlshogi-wcsc32同梱)
- 🗒️ dlshogi_tensorrt_double.exe (dlshogi-wcsc32同梱)
- 📄 onnxruntime.dll (dlshogi-wcsc32同梱)
- 📄 book.bin (Apery定跡ファイル)
- 📄 *.model (推論モデルファイル)
- 📄 cudnn_adv_infer64_8.dll (cuDNN v8.1.1)
- 📄 cudnn_cnn_infer64_8.dll (cuDNN v8.1.1)
- 📄 cudnn_ops_infer64_8.dll (cuDNN v8.1.1)
- 📄 cudnn64_8.dll (cuDNN v8.1.1)
- 📄 myelin64_1.dll (TensorRT 7.2.3.4)
- 📄 nvinfer.dll (TensorRT 7.2.3.4)
- 📄 nvinfer_plugin.dll (TensorRT 7.2.3.4)
- 📄 nvonnxparser.dll (TensorRT 7.2.3.4)
- 📄 nvparsers.dll (TensorRT 7.2.3.4)
🖋 "*.db" の * はワイルドカード(何か具体的なファイル名が入る)の意味です。
🕊 なぜこの状態でZipにしてふかうら王を配布しないのかと言うと、TensorRTとかcuDNNのライブラリ(.dll)は、そのライセンスにより再頒布が禁止されているからです。お手数おかけしますが、NVIDIAのサイトからダウンロードしてきていただきたく…。🙇
ふかうら王のビルド手順 - Ubuntuでふかうら王を参考にしてください。
🚧 ORT(OnnxRuntime) + CoreMLを用いてGPUで処理するようにする作業が進行中です。
🍙 ふかうら王でMacのCoreMLを使う(失敗) : https://select766.hatenablog.com/entry/2022/05/26/190100
種類 | 内容 | GPU利用 | 探索速度 |
---|---|---|---|
ORT-CPU | CPUのみで実行 | × | 低速 |
ORT-CoreML | CoreML | ◎ | 速い |
かきかけ。
ふかうら王の思考エンジンオプションの大半は、やねうら王と同一のものです。
以下に詳しいまとめがあります。
お手軽に設定したい方は、こちらだけでも。
dlshogiではエンジンの実行ファイルがあるのと同じフォルダに評価関数のモデルファイルを配置することになっていますが、ふかうら王ではエンジンオプションのEvalDirで指定したフォルダに配置することになっています。
また、dlshogiは、モデルファイル名が model-dr2_exhi.onnx の時、model-dr2_exhi.onnx.ini にオプション設定を書けるようになっています。
やねうら王は、EvalDirで指定したフォルダのなかにあるeval_options.txt にオプション設定を書けるようになっています。
なので、dlshogiの model-dr2_exhi.onnx.ini を、やねうら王の eval/eval_options.txt にコピーすればそのまま動きます。
その書式は、 エンジンオプション名 = 値 のように書けます。(やねうら王、dlshogi共通)
例)
C_init=144
C_init_root=116
C_base=28288
C_base_root=25617
C_fpu_reduction=27
C_fpu_reduction_root=0
Softmax_Temperature=140