ふかうら王のインストール手順 - mizar/YaneuraOu GitHub Wiki

ふかうら王とは?

ふかうら王とは、Deep Learningを用いたやねうら王です。

特徴

  • dlshogi互換エンジン
  • dlshogiと同等以上の棋力
  • dlshogiのモデルファイルの読み込み可能
  • やねうら王と互換性のあるエンジンオプション(思考時間設定、定跡設定等)
  • やねうら王の定跡ファイルの読み込みなどをサポート
  • GPUなしでは本来の性能の1/10も出ません。

Windowsでふかうら王

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版です。

ORT-CPU版

CPUで動作するので、特に何も追加でインストールしなくとも動作すると思います。

GPUで処理するのに較べると100倍ぐらい遅いです。(比喩ではなく本当に…)

ORT-DML版

DirectMLというMicrosoftの開発した機械学習ライブラリを用いて動作します。これも遅いです。GPUが使える環境ならば自動的にGPUを使ってくれるのですが、それでもGPU本来の性能を100%引き出せないためか、遅いです。

DirectML自体は、最新のWindowsならばインストールされているはずなので新たに何かをインストールする必要はありません。

ORT-TRT版とTensorRT版

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に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とふかうら王との共存

TensorRTにPATHを通す

⚠ dlshogiとふかうら王とでは要求するTensorRTのバージョンが異なるので、ここに書いてある方法でTensorRTとcuDNNのlibにPATHを通すとdlshogiと共存できなくなる可能性が高いです。そこでTensorRTとcuDNNのlibにはPATHを通さずない方法をお勧めします。👉 dlshogiとふかうら王との共存

🍙 以下は、PATHを通す場合の説明ですが、ふかうら王では、この手順は非推奨です。

環境変数PATHに、TensorRTのlibディレクトリを追加します。

C:\に解凍した場合、以下のパスになっています。

C:\TensorRT-【TensorRTのバージョン番号】\lib

これを環境変数PATHに追加すれば良いでしょう。

cuDNNにPATHを通す

cuDNNのbinにも同様にPATHを通す必要があります。

⚠ TensorRT同様に、これもPATHを通さない方法をお勧めします。 👉 dlshogiとふかうら王との共存

🍙 以下はPATHを通す場合の説明です。ふかうら王では、この手順は非推奨です。

cuDNNに対しても同様にPATHを通すのは面倒なので、TensorRTのインストール先のフォルダにファイルコピーしてしまうのが手っ取り早いです。

例) cuDNNのbinフォルダのファイルが TensorRTのインストール先のlibフォルダのファイルになるようにファイルコピー。

zlibwapi.dll

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とふかうら王との共存

「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でふかうら王

ふかうら王のビルド手順 - Ubuntuでふかうら王を参考にしてください。

macOSでふかうら王

🚧 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
⚠️ **GitHub.com Fallback** ⚠️