2018年07月07日

コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編

「PhoenixGo」は、Tencent社が開発しオープンソース化した、自己対戦による深層学習の手法にもとづくコンピュータ囲碁プログラムです。
2018年1月にTencent社の囲碁対局プラットフォーム「野狐」で「BensonDarrz」という名前で打ちはじめましたが、同4月に「世界囲碁AIトーナメント2018」で優勝してより広く知られるようになった、とのことです。

「PhoenixGo」GitHubレポジトリ
・Windowsバイナリ配布あり。
・64bit対応。
・GPUバージョンおよびCPUバージョン。

関連記事
Tencent unveils China's first open source Go AI, made on spare WeChat server processing power

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「PhoenixGo」をインストールするにあたっては、Windows7以上の64bit OSが前提となっています。
GPUバージョンを動かすためには、「NVIDIA製GPU」+「CUDA 9.0」+「cuDNN 7.1.4」環境が必要で、それ以外の場合はCPUバージョンを使うことになります。

*****「CUDA 9.0」+「cuDNN 7.1.4」環境構築*****
(必要な環境がすでに構築されている場合、もしくはCPUバージョンを使う場合は、このセクションは無視して先へすすんでください。)

a) 「Visual Studio Community 2017」インストール
Visual Studioのダウンロード」ページから、「Visual Studio Community 2017」の「無償ダウンロード」ボタンを押して、インストールファイル「vs_community__1550688207.1530707720.exe」をダウンロードする。
ダウンロードしたファイルをダブルクリックしてインストーラを起動、「C++によるデスクトップ開発」カテゴリの「Windows 10 SDK」コンポーネントにチェックをいれて、インストールを実行する。
コンピュータを再起動するよう指示されるので、それにしたがって再起動する。

b) 「CUDA 9.0」インストール
NVIDIA DEVELOPER」サイトの「CUDA Toolkit Archive」から「CUDA Toolkit 9.0 Downloads」ページへすすみ、「Windows」「x86_64」「10」「exe (local)」用の「CUDA 9.0」インストールファイル「cuda_9.0.176_win10.exe」をダウンロードする。
ダウンロードしたファイルをダブルクリックしてインストーラを起動、あらかじめ推奨チェックがはいっているとおりにインストールを実行する。

c) 「cuDNN 7.1.4」インストール
NVIDIA cuDNN」ページで「DOWNLOAD cuDNN」ボタンを押し、「cuDNN Download」ページへすすむ(必要におうじてアカウント作成のうえログインする)。
「I Agree To the Terms of the cuDNN Software License Agreement 」にチェックをいれ、「Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0」を選択、「cuDNN v7.1.4 Library for Windows 10」をクリックして「cudnn-9.0-windows10-x64-v7.1.zip」ファイルをダウンロードする。
ダウンロードしたファイルを展開、生成した「cuda」フォルダのなかの「bin」「include」「lib」の三フォルダを、「CUDA 9.0」インストールフォルダ「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0」にコピーする。


2. 「PhoenixGo」インストールファイルのダウンロード
「PhoenixGo」の現行バージョンは「v1」で、「PhoenixGo」GitHubレポジトリの「Releases」ページから「PhoenixGo-win-x64-gpu-v1.zip 」をクリックして、GPUバージョンのWindows用インストールファイル「PhoenixGo-win-x64-gpu-v1.zip」を取得します。
CPUバージョンを使う場合は、「PhoenixGo-win-x64-cpuonly-v1.zip」のほうをクリックして、CPUバージョンのWindows用インストールファイル「PhoenixGo-win-x64-cpuonly-v1.zip」を取得します。

3. 「PhoenixGo」のインストール
ダウンロードした「PhoenixGo-win-x64-gpu-v1.zip」ファイルもしくは「PhoenixGo-win-x64-cpuonly-v1.zip」ファイルを右クリックして「すべて展開」を選ぶと、「PhoenixGo-win-x64-gpu-v1」フォルダもしくは「PhoenixGo-win-x64-cpuonly-v1」フォルダができるので、そのフォルダの名前を「PhoenixGo」に変更しておきます。
この「PhoenixGo」フォルダのなかにインストール手順書「how to install phoenixgo(en).pdf」ファイルがあるので、基本的にはこのファイルに記述されているとおりに作業していけばO.K.です。
まずは「PhoenixGo」フォルダをそのまましかるべき場所、たとえば「C:\Users\username\PhoenixGo」(「username」はお使いのユーザ名)などに設置のうえ、フォルダを開いて「start.bat」ファイルをダブルクリックします。

XXXX-XX-XX XX:XX:XX.XXXXXX: I model\zero_model.cc:100] Create session succ
XXXX-XX-XX XX:XX:XX.XXXXXX: I model\zero_model.cc:107] Create graph succ
XXXX-XX-XX XX:XX:XX.XXXXXX: I model\zero_model.cc:119] Load checkpoint succ


コマンドプロンプトが開いて何行かメッセージが表示されますが、その最後の三行が上記のように「Create session succ」「Create graph succ」「Load checkpoint succ」となっていれば問題ないので、そのままコマンドプロンプトを閉じます。
以上でインストール作業は完了です。
もし「the program can’t start because XXX.dll is missing」というメッセージが表示された場合は、「https://www.microsoft.com/ja-jp/download/confirmation.aspx?id=48145&6B49FDFB-8E5B-4B07-BC31-15695C5A2143=1」へいって「Visual C++ Redistributable for Visual Studio 2015(ファイル名「vc_redist.x64.exe」)」をダウンロードのうえ、インストールする必要があります。
再度「start.bat」ファイルをダブルクリックして、表示されるメッセージを確認してください。

4. 「PhoenixGo」の設定
GPUを一個搭載したコンピュータでGPUバージョンを動かす場合は「PhoenixGo」フォルダ -> 「etc」フォルダ -> 「mcts_1gpu_notensorrt.conf」ファイルが、CPUバージョンの場合は「PhoenixGo」フォルダ -> 「etc」フォルダ -> 「mcts_cpu.conf」ファイルが、「PhoenixGo」の動作条件を制御する設定ファイルとなっています。
以下に、編集する可能性のある項目だけ抜き出して、各項目の意味と設定方法を記述します。

num_eval_threads: 1 # 使用するGPUの個数。
num_search_threads: 4 # 「num_eval_threads」と「eval_batch_size」をかけた値よりもちょっと大きい値に設定するらしい。
timeout_ms_per_step: 10000 # 一手ごとの考慮時間をミリ秒で指定。
max_simulations_per_step: 0 # 一手ごとのシミュレーション数。「0」で無指定。
gpu_list: "0" # 使用するGPUの認識番号をコンマで区切って登録。CPUバージョンの設定ファイルには行じたい存在しない。
model_config -> train_dir: "pkct" # 学習ずみネットワークが保管されているフォルダを指定。
max_search_tree_size: # ツリーノードの最大サイズ。メモリ容量によって指定する。
max_children_per_node: # 各ノードがもてる子ノードの最大サイズ。メモリ容量によって指定する。
enable_background_search: 0 # 「ponder」機能を使うときは「1」、使わないときは「0」に設定。
early_stop -> enable: 0 # 勝敗が確定してしまったあとはすぐに打つ。一定ペースで打たせたいときは「0」に設定。
unstable_overtime -> enable: 0 # 次の手が確定しないときは余計に考える。一定ペースで打たせたいときは「0」に設定。
behind_overtime -> enable: 0 # 形勢がよくないときは余計に考える。一定ペースで打たせたいときは「0」に設定。
time_control -> enable: 0 # GTPコマンド「time_settings」への対応。一定ペースで打たせたいときは「0」に設定。


5. GTP対応囲碁GUIとの連携方法
「PhoenixGo」として公開されているのはGUIをもたない囲碁思考エンジン部分のみなので、グラフィカルに対局や棋譜分析をおこなうためにはGTPを解釈できる囲碁GUIと連携させる必要があります。
「PhoenixGo」フォルダをたとえば「C:\Users\username\PhoenixGo」に設置したとして、「C:\Users\username\PhoenixGo\start.bat」が、囲碁GUIに登録するべきGTP思考エンジンのパスになります。

5-1. GTP対応囲碁GUI「GoGui」への思考エンジン登録
メニューバーの「プログラム」から「新規プログラム」を選び、あらわれた画面の「コマンド:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「PhoenixGo」フォルダを「C:\Users\username\PhoenixGo」に設置した場合、「コマンド:」欄に入力する絶対パスは「C:\Users\username\PhoenixGo\start.bat」のようになります。
「OK」ボタンを押下して何度か「待機」をクリックしながら待っていると、ステイタスバーに表示されていた「プログラムの開始中」メッセージが消えて新規プログラム登録画面が開くので、「ラベル:」欄にたとえば「PhoenixGo」などと入力して「OK」ボタンを押下します。
これで登録完了となるので、次回以降はメニューバーの「プログラム」 -> 「プログラムの起動」とすすんで「PhoenixGo」を選ぶと、「PhoenixGo」が起動して対局や棋譜分析に利用できるようになります。
登録した囲碁思考エンジン「PhoenixGo」と対局するには、「PhoenixGo」を起動した状態で、メニューバーの「対局」から「碁盤サイズ」「置石」「コンピュータの手番」を指定したうえで、「新規対局」をクリックします。
検討したい局面を指定して、そこで「PhoenixGo」がどう打つかをみることもできます。
「PhoenixGo」を起動したあと、メニューバーから「コンピュータの手番」を「なし」にして、どんどん石を置いていって対象となる局面をつくり、黒番の局面なら「PhoenixGoに黒を打たせる」、白番の局面なら「PhoenixGoに白を打たせる」アイコンをクリックします。
そのさい「GTPシェル」を開いておけば、読み筋や評価値も表示されるので、着手の意味を考えるときに参考になります。

5-2. 「Sabaki」への思考エンジン登録
メニューバーの「Engines」から「Manage Engines」を選び、あらわれた画面で「Add」をクリックします。
「(Unnamed Engine)」と表示されている欄にカーソルをもっていって、わかりやすい表示名を、そして「Path」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「PhoenixGo」フォルダを「C:\Users\username\PhoenixGoに設置した場合、「(Unnamed Engine)」欄にカーソルをもっていって「PhoenixGo」と入力、「Path」欄に絶対パス「C:\Users\username\PhoenixGo\start.bat」を指定します。
登録した「PhoenixGo」と対局するには、メニューバーの「File」から「New」をクリックします。
開いた画面で「Board Size」「Handicap」「Komi」を指定のうえ、黒番と白番それぞれの担当者を選択します。
自分が担当する手番は「Manual」を選択、「PhoenixGo」に担当させる手番は登録されている思考エンジンの表示名から「PhoenixGo」を選んで、「OK」ボタンを押下します。
「Sabaki」にほかの囲碁思考エンジンを登録しておいて、「PhoenixGo」をほかの思考エンジンと対局させることもできます。
その場合は、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないかたちで対局をおこなう必要があります。


参考ウェブページ一覧表(順不同)

https://github.com/Tencent/PhoenixGo
https://github.com/Tencent/PhoenixGo/releases
https://qiita.com/take-iwiw/items/0bf12bec9c3bade2e331
posted by hatakazu at 17:38| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください