囲碁AI・PhoenixGo、オープンソースへ

中国のWechat翻訳チームが開発した囲碁AI・PhoenixGoがオープンソースとなった。
野狐囲碁では「BensonDarr」、CGOSでは「cronus」として猛威を振るっていた。
なお、第1回貝瑞基因杯世界AI囲碁大会で優勝を果たし、世界一の栄冠に輝いている。
GPU版とCPU版の二つがあるが、今回はCPU版のPhoenixGoの使い方を紹介していきます。
※今回も64bitのパソコンが前提です。

①CPU版のPhoenixGoをダウンロード
こちらから「PhoenixGo-win-x64-cpuonly-v1.zip」をダウンロードします。
それを解凍したらbinやckptなど様々なものが出てくると思います。
デスクトップ上で空のファイルを作り、中身を全て入れてください。

②動作環境準備
こちらから「Visual Studio 2015のVisual C++ 再頒布可能パッケージ」をダウンロード。

③動作の確認
フォルダの中に「start」というものがあるのでクリックして実行してください。

このような画面が出て、下三行のコマンドが出てくれば成功です。

④sabakiのダウンロード
こちらから最新のものを入れていきます。
64bitでwindowsの場合は「sabaki-v□.□□.□-win-x64-setup.exe」です。
その後、入れたものをクリックして実行します。

⑤sabakiの設定
「sabaki」を実行をすると下図の画面が現れるはずです。
まずは上の方にある「Engines」→「Manage Engines」をクリック。

左下の「Add」を押して項目を追加します。
「(Unnamed Engine)」は名前なので、わかりやすいものであれば何でも大丈夫です。

その下に「Path」と表記されている左にファイルマークがあるのでクリックします。
PhoenixGoのファイルの中にある「start」をクリックした後、右下の「開く」を押します。

「Initial Commands(; -separated)」には「time_settings 0 10 1;」を入れて下さい。
※0は持時間[分]、10 1は1手10秒の意味です。

下図のように設定できれば一段落です。(PhoenixGo_cpuonlyと書かれたもの)

対局方法
左上の「File」→「New」を押した後、下の方に対局設定が現れます。
BlackとWhiteの両端に「>」のような部分を押してLeelaZeroを選択すれば設定完了。
後は細かい設定をして「OK」を押せば対局開始できます!

「編集後記」
PhoenixGoのGPU版は重くて動かすのに苦労するので、現段階ではCPU版がオススメです。
ただ、他のGPU版と比べて劣る部分があり、できるならGPU搭載のPCで稼働するのがベスト。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. かみhtj より:

    囲碁AI初心者(囲碁は3段)です。
    ノートPC(i7・内蔵GPU)の場合、okaoさんならどのフリーソフトがオススメでしょうか?
    また、leela zero以外でもlizzieは使えるのでしょうか?
    (他のフリーソフトでもlizzie以上の検討機能があれば必要ありませんが)

    お忙しいとは思いますが、もし宜しければ教えて頂けたら幸いです。

    • okao より:

      対局するならLeelaZeroのELF(facebookの囲碁AI)です。比較的に軽い動作で強いのでオススメします。また、LizzieはLeelaZero専用の検討機能なはずなので、LeelaZero用のweight.txtが出ないとおそらく使えないと思います。(拡張子を取り除けば、ELF版やPhoenixGo版のweight.txtでも試せるので挑戦してみてください)

      • かみhtj より:

        ありがとうございます。
        どれを入れようか迷っていたので参考にさせて頂きます。

  2. ソーマピーリス より:

    ウチのしょぼいノートだと一手1分くらいだった
    もっと軽いのでないかな

    • okao より:

      処理速度によっては1手10秒に設定しても想定以上に時間がかかる場合があります。フォルダ内のPDFを読むとわかるのですが、PhoenixGoはそこそこのスペックが必要なようです。

  3. YT より:

    気になった点について、質問させてください。
    こちらの囲碁AI(PhoenixGo)のGPU版とCPU版は比較した場合、GPU版のほうが勝率は良いのでしょうか?また、CPU版とGPU版に強さの違いはありますか?
    なお、当方のPC環境で、LeelaZero(ELF Open Goのweight版)とPhoenixGo(CPU版)で自己対局させたところ、前者のほうが勝率は良かったです。これは妥当なのでしょうか。設定や環境等で変化があればご指摘頂ければ助かります。

  4. okao より:

    使用しているPC次第ですが、ほぼGPU版の方が強いです。
    また、ELFOpenGoは比較的動作が軽い上に他の囲碁AIよりも強い気がします。
    GPUがもしあればELFOpenGoを強くお勧めします。(CPU版は非常に重いです)

  5. KUNIOKI ICHINOSE より:

    Phoenixを動かそうとしたのですが、以下のエラーメッセージが出て動きません。

    E0605 01:58:15.688863 600 mcts_config.cc:30] read config file error: Invalid argument [22]
    F0605 01:58:15.772922 600 mcts_main.cc:74] Check failed: config != nullptr Load mcts config file ” failed
    *** Check failure stack trace: ***

    エラーは名前からしてMCTS関係のようですが、ログも見ましたがよく解りません。なんかヒント的なことがあればご教示ください。

    • okao より:

      残念ながら、この手のエラーはどう解決すべきかわかりません。Invalid argumentは無効な引数の意味なので、sabakiの数値設定に問題があったのかもしれません。

    • viewlagoon より:

      KUNIOKI ICHINOSEさん

      横から失礼します。

      まず、OS が Windows なら README (https://github.com/Tencent/PhoenixGo/blob/8a4c1c6b49f3269a9b7fb5f042337cc2d444b2c4/README.md) に Work in progress と書いてあるので今動かないのは仕方がないです。公式対応を待ってください。
      Linux か Mac だとすると以下のように原因を調査することになるでしょう。 (ちなみに Mac は CPU のみ対応とも書いてあります)

      ログに書いてあるソースを読みます。https://github.com/Tencent/PhoenixGo/blob/master/mcts/mcts_main.cc#L71-L73

      config_path に相当するところが空文字になっているようです。
      InitEngineの呼び出し元を見ると、FLAGS_config_path なるものを呼んでいます
      これ自体で検索してもよくわからないのですが、 gflags/gflags.h なるファイルを読み込んでいるのでそれにあたりをつけてみると、どうやら実行時のコマンドライン引数を処理してくれるものらしいということがわかります。

      改めて PhoenixGo の README を読んでみます。
      Running の項目に
      start.sh will detect the number of GPUs, run mcts_main with proper config file, and write log files in directory log. You could also use a customized config by running scripts/start.sh {config_path}. See also #configure-guide.
      とあるので、適切な config file を作って指定してやれば先には進めるではないでしょうか。

    • viewlagoon より:

      ごめんなさい。いつの間にか最新でない README を読んでいました。 Windows 対応中といったのは最新 (master) では対応済みに変化しているようなので訂正します。

  6. KUNIOKI ICHINOSE より:

    すみません、うまく行きました。
    慌てていてPathに勝手なexeファイルを指定してました、start.batであることを読み飛ばしていました。
    お詫び申し上げます。