囲碁AI・LeelaZeroの対局方法

今回は囲碁AI・LeelaZeroの対局方法を紹介していきます。
LeelaZeroは第1回貝瑞基因杯世界AI囲碁大会で3位に入賞した強豪囲碁AIです。
シチョウに弱い欠点はありますが、その他は人間の域を超えていると言って良いでしょう。
動作環境さえ整っていれば誰しも活用できるので、ぜひ活用してみてください。

【対局方法の手順】
GPU搭載のPCであるか否か(最大のポイント)+64bitのPCであるか(32bitは未検証)
→高額なものが多いため、誰しも動作環境を整えるのが最大の壁となっています。

LeelaZeroのダウンロード
こちらから最新のものをPCに入れていきます。
「leela-zero-□□□-win64.zip」です。
※□□□には最新版の番号が入っています。

autogtpの起動
ダウンロードしたzipを解凍した後、ファイルの中に「autogtp」があるので起動します。
→黒色の画面が出ますが、しばらく放置して自己対戦が始まるのを待ちます。
→無事自己対戦が始まったら閉じてしまって大丈夫です。

networkの抽出(ここも重要ポイント)
解凍したファイルの中に「networks」というフォルダーがあると思います。
そこを開くと謎の文字列が書かれたものがあるのでそれをコピーします。
(「90560d926216c9842add40913a023fd59fde761a64014c48d8246648ddd272a3」のようなもの)

これを「autogtp」がある場所と同じ場所に貼り付けてください。
その後に貼り付けたものを「weights.txt」に名前を変更します。
※1、「.txt」を打ち忘れて失敗する方が多いです。
※2、うまくいかない場合は記事下部にある備考を参照ください。

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

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

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

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

「No arhuments」には「-t 2 -g -p 1600 –noponder -w weights.txt」を入れて下さい。
※1、コマンドはいろいろありますが、-tと-pの値を変える程度で十分だと思います。
-t 2:使用するスレッド数
-g:Enable GTP mode
-p 1600:プレイアウトの設定(大きいと強くなる)
–noponder:相手番では考えない設定
-w:ネットワークの場所
※2、文字間のスペースなども意味をなすので、ご注意ください。

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

下図のように設定できれば一段落です。

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

※備考
ネットワークは日々進化するので、こちらを確認して最新のものに入れ替えられます。
ファイルを解凍するとテキストファイルが出るので、それを④から同じ手順で導入できます。
ただし、新しいものに入れ替える場合は動作できたものを必ず保存しておくこと。
もし解凍できない場合は、Alzipというフリーソフトを使うことをオススメします。

「編集後記」
いちをかなり丁寧に書いたつもりですが、分からない点があればコメントへ。
動作環境さえあれば誰でも使える便利なツールなので入れてみてください。
明日はGPUがなくても、便利な検討機能が使えるものを紹介します。

シェアする

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

フォローする

コメント

  1. M.K. より:

    本ブログをいつも楽しく拝見しております。
    あまり使いこなせてないですが、LeelaZeroを使っています。

    ご存知と思いますが、以下にnetworkが公開されています。

    http://zero.sjeng.org/networks/

    ちなみに、62b541…で始まるファイルを解凍するとelf_converted_weights.txtというELFOpenGoのweightファイルができます。

  2. okao より:

    貴重なご意見ありがとうございます!
    networkの場所を知っていたのですが、どれが何なのかわからずにいました。
    ELFOpenGoの情報は全く分からなかったので、非常に助かりました!
    早速、自分のPCでも試してみようと思いますっ

  3. Zr より:

    試してみましたが、なぜか自己対戦させるとお互いパスばかりしてしまって対局してくれないんですよね…なぜなんでしょう?

  4. okao より:

    試しに自己対戦させてみましたが、自分の環境では問題なく対局してくれました(i7-7700,GTX1050)。囲碁AIと対戦できるところまで進めば、後は対局相手を同じ囲碁AIにするだけで自己対戦が進むはずです・・・。すぐに改善案が出せそうになくて申し訳ありません。

  5. YT より:

    初めまして、いつも見させてもらってます。
    手順通りに実行したのですが、Zrさんと同様に自己対局ができないようです。。
    GPU搭載PCである必要があるとのことですが、これは外部GPUをさしているのでしょうか?
    ノートパソコン向けやCPU内蔵タイプのGPUでは、動作できないのでしょうか?
    設定方法や手順に問題があれば、お教え頂きたいです。
    よろしくお願いします。

    • okao より:

      囲碁AIとご自身は対戦できるでしょうか?もしできない時は最新のネットワークを入れる必要があります。(記事下部の備考を参照ください)

    • okao より:

      leela-zeroのファイルの中にある「leelaz」をクリックしてエラーが出ないでしょうか?もしエラーが出る場合はこちらからVisual Studio2015のVisual C++ 再頒布可能パッケージをダウンロードしてみてください。改善するかもしれません(検討機能はこれで改善できました)

  6. M.K. より:

    自己対局ができないとのコメントがあり気になったので、参考になるかわかりませんが、再度コメントします。

    動作しない原因としてNo arhumentsに記載するコマンドに誤りがあることが多いです。(私は気づくまで時間がかかり、何度も失敗しました。。。)

    例えば、「-」(ハイフン)が足りない(noponderの前には2つ必要)とか「 」(半角スペース)が適切に入っていない等です。
    あとはファイルの指定場所やファイル名に誤りがあることも考えられます。
    gzファイルをダウンロードして解凍したときにできるテキストファイルを指定する場合はファイル名に「.txt」を入れる必要がありますが、autogtpを実行したときにnetworksフォルダに格納される拡張子のない文字列のファイルを指定する場合は「.txt」は不要です。

    私はnetworksフォルダに読み込ませるファイルを格納しているので、以下のような感じで動作させています。
    -g -t 8 -p 30000 –noponder -w networks\elf_converted_weights.txt

    GPU非対応の可能性があるPCの場合はcpuonlyのLeelaZeroをダウンロードして動作するか確認するのが良いかもしれません。(未検証)

    • okao より:

      「autogtpを実行したときにnetworksフォルダに格納される拡張子のない文字列のファイルを指定する場合は「.txt」は不要です。」自分の場合は入れないと実行しませんでした。

  7. YT より:

    okao様、M.K.様
    ご丁寧に、ご返信頂きありがとうございます。お二方にご指摘頂いたところを見直したところ、無事に動作致しました。お手数おかけしました。

    何もお返ししないのは申し訳ないですので、今後、この記事を見て利用される方のために、原因と対処法を共有しておこうと思います。

    原因は、「①最新のネットワークファイルの取り扱い」と「②No arhumentsに記載するコマンドの誤り」でした。
    ①について
    この記事に記載されている通り、networksのフォルダ内に英数字羅列されたファイルがあります。これは、autogtpを起動した際に生成されるネットワークファイルのようです。生成したファイルは最新のものだと思いますが、PC環境によっては拡張子無し(ファイルの種類がファイル)のファイルとなるようです。ファイル名、拡張子が変更されていることを確認する必要がありました。その後、動作確認済みです。
    okao様ご指摘通り、最新のネットワークファイルをウェブページ上からダウンロードして解凍、ファイル名、拡張子を変更することで動作致しました。
    ②について
    M.K.様ご指摘通り、noponderの前には半角「-」が2つ必要でした。参考まで、以下記述で動作確認しました。
    「-t 2 -g -p 1600 –noponder -w weights.txt」

    長文失礼しました。何かの足しになれば幸いです。

  8. okao より:

    今回の件は、多くの方が躓くポイントだと思うので、遠出の用事が終わり次第記事に反映させていこうかと思います。YTさん、Zrさん、M.K.さん、貴重なアドバイスとご指摘ありがとうございました。

  9. YT より:

    失礼いたしました。最後の「No arhumentsの記述」は「-」を2つ追加したものです。

    -t 2 -g -p 1600 –noponder -w weights.txt

    ちなみに、先程この設定で、自己対局とAI対人間で両方共に動作確認出来ました。

  10. より:

    対局しようとするとCurrent board arrangement cant be recreated on teh GTP engine というエラーが出て対局ができません
    原因は何でしょうか?

    • okao より:

      自分の場合、GPU未搭載のPCでやると同じエラーがでました。また、sabakiに実装する際に設定を誤っている場合があります。もう一度確認お願いします。

  11. Y.T より:

    今回の記事ではLeela Zeroを取り上げているのですが、ただのLeelaとはどのような違いがあるのでしょうか?導入のしやすさや、使いやすさ、また強さの違いなどご存知であれば教えていただけないでしょうか?よろしくお願いします。

    • okao より:

      LeelaZeroはAlphaGoZeroと同等の方法で強化しているもので、Leelaは従来のモンテカルロ法または人間の棋譜学習により強くしたものです。公開されているものだと、強さはハッキリZero版の方が強いですね。

  12. 小宮 典夫 より:

    sabakiをインストールしても、画面頭部の「File」、「Play」、Edit」などのメニューが表示されません。
    インストールの方法が間違っているのでしょうか。ご教示下さい。小宮

    • okao より:

      ダウンロードする際にお使いのPC環境とは異なるものを選んだのかもしれません。もう一度ダウンロードするところから始めて見てください。もし、それでも治らない場合はGoGuiなど別の対局環境で囲碁AIを設定して試すしかなさそうです。

    • ASHIOTO より:

      小宮様
      私も同じ状況です。メニューを表示するチェックが外れていており、隠れているだけでした。ALT+Eなどを押すと出てきますので、すかさず、VIEWの toggle menuを選んでください。

  13. 通りすがり より:

    こんばんは。いつも拝見しております。

    遅まきながらLeelaZeroを試してみましたが、さすがに旧式のノートPCでは厳しいです。
    一応CUDA対応の独立GPU内蔵型ではありますが、世代が古すぎました。

    GPUはnVIDIAのGeForce GT650Mで、熱処理が間に合うギリギリのPlayout数はせいぜい200、それでも連続使用は危ない感じです。まともに動かしたいなら新しいPCに強力なグラボを載せないといけない、という当然の結論に達しました(笑)

    追伸:
    ひとつコマンドオプションの機能を確認できたのでご報告を・・・
    -rを使うとLeelaZeroの投了勝率を設定できます。例えばLeelaZero側の期待勝率が33.3%の閾値を下回ったら投了させたい場合、”-r333″と書けばその通りに投了してきます(うちのLeelaちゃんは弱いのでこういう事もあります)。

    • okao より:

      GT650だとそんな現象が起こるとは・・・。ぜひこれを機に、GPUをGTX1050以上のスペックに買い替えてください!

  14. shun より:

    初めまして。こんばんは。leelazeroの検討機能で④のnetworkの取得で「Best Network Hash」をダウンロードするのはいいんですが、解凍せずに「network」という名前に変更し、③でダウンロードしたファイルの中に入れてるというところがどうやってやるのか具体的に教えていただきたいです。あまりにも初歩的なことだと思いますが、パソコンを使い始めたばかりで解凍ソフトとか全く知らないのでお願いします。

    • okao より:

      ②でダウンロードしたzipファイルを解凍すると「lizzie」というファイルが出てくると思います。その中に「network」を入れれば大丈夫です。また、最新版のものはgzファイルを解凍する必要がないので、解凍ソフトは不要で導入できるはずです。

  15. Noriyuki Kimua より:

    ②でダウンロードしたzipファイルを解凍すると「lizzie」というフォルダが出てきます。
    その中には既に「network」と言う.gzファイルがありますので、これを更新すると言うことでしょうか?

    • okao より:

      念のため、既に入っているものはバックアップ代わりに別の場所に移し、新たなものを「lizzie」に入れて名前を「network」に変えれば更新できます。

  16. 田尻 誠 より:

    GPU版を利用し、ご紹介記事の手順でInstいたしました。Autoで自己対戦までしています
    (CMDP画面で)。④の説明が自分にはよく理解できないのでご教授ください。
    (1)CMCP上で見ると hashtとnetが同じ文字列で、Networkフォルダからコピ-したものと同じです。
    (2)その同じ文字列を貼りつける場所に戸惑っています。「Autogtpと同じ場所に貼り付けると」とあるのですが、そのフォルダーの中にでしょうか
    (3)それとも外(べつの変な表現ですが「Auto」フォルダーと同じ高さ)に貼り付けるのでしょうか。
    (4)(3)の場合 名前の変更(Txt)をすると 数列がなくなってしまうようなので
    混乱していています。
     
    何分にも 後期高齢者なので理解力不足からの質問で申し訳ないです。

    • okao より:

      Autogtpと同じ高さに貼り付ける要領で大丈夫です。ただし、sabakiが更新されてからこの方法ではうまくいかないようです。応急処置としてはsabakiのバージョンを下げるとうまくいきます。

      .txtの拡張子を強引につけないと作動しないかと思います。sabakiが更新されて以来、そういった点を検証していないため動作するかわかりません。
      ※中国の囲碁AI・PhoenixGoについてはCUDAを導入する手間はありますが、sabakiで動作できます。(こちらの記事を参照ください)

  17. yuuta より:

    okao様

    インストール方法の詳細なご説明ページありがとうございます。

    Lizzieの方は無事動いたように思います。

    Lizzieについて、まだほとんど使えてはいませんが、

    > 上手の画面が出てくれば大成功です。

    の部分まではいきました。

    ありがとうございます。

    それとは別に、LeelaZeroもインストールしたく、こちらのページでご説明いただいている手順でインストールしてみました。

    しかし、LeelaZeroの方はうまく動かず、手順中で私がどこかで誤解しているような気がするのですが、とくに以下の箇所について誤解していないか、大変お手数ですが確認およびアドバイスをいただけますか。

    【環境】

    Windows7 64bit
    NVIDIA GeForce GTX750Ti

    インストールしたLeelaのバージョン
    leela-zero-0.16-win64.zip

    LeelaZeroをインストールしたパス
    C:\source\igo\leelazero\leela-zero-0.16-win64

    インストールしたsabakiのバージョン
    最初 こちらのブログ記事が書かれた当時の最新版と思われる sabaki-v0.33.4-win-x64-setup.exe
    その後、現時点での最新版 sabaki-v0.40.1-win-x64-setup.exe

    【起きている現象】

    別の方の質問に対するOkaoさんの回答で
    > sabakiが更新されてからこの方法ではうまくいかないようです。
    と書かれているのをみたので、いったん
    sabaki-v0.33.4-win-x64-setup.exe
    をインストールしてみました。
    (こちらのブログ記事が書かれた当時での最新版と思えるバージョンのsabaki)

    その後、Newから白をLeelaZero、黒をマニュアル(自分?)に設定をしてOKを押し開始しようとしたところ
    Current board arrangement can’t be recreated on the GTP engine.
    といううSabakiでのエラーメッセージのようなものが表示されてそれ以上は動かず。

    その後、白黒両方ともLeelaZeroとしてOKを押したところ、今度はエラーメッセージはでなかったのですが、延々とSabakiの画面上でマウスポインタがぐるぐる回転しているだけで、5分以上たっても一手も着手されず動かないので、断念、となりました。

    念のため、
    sabaki-v0.33.4-win-x64-setup.exe
    をいったんアンインストールし、
    Sabakiの現時点での最新版である
    sabaki-v0.40.1-win-x64-setup.exe
    をいれこちらでも試してみました。

    こちらの場合、
    とくにSabakiでのエラーメッセージはでず、マニュアルで黒は自分としていたので、一手は打てたのですが、その後のLeelaZeroの着手となると、また延々とグルグル回っているだけで、5分以上たっても反応がありません。やはりなんだかとまっているような印象です。

    その後白黒両方ともLeelaZeroで実行してみましたが、やはりグルグル回っているだけで一手も進まない状態です。

    後述で質問させていただいているgzファイルそのものをweights.txtへリネームするのか、あるいはgzファイルを解凍した中身のものをweights.txtへリネームするのかの部分についても、一応両方試してみましたが、同じ状態でした。

    【とくにご確認いただけるとありがたい(私が誤解している気もする)箇所】

    【質問1】

    > ④networkの抽出(ここも重要ポイント)
    > 解凍したファイルの中に「networks」というフォルダーがあると思います。
    > そこを開くと謎の文字列が書かれたものがあるのでそれをコピーします。
    > (「90560d926216c9842add40913a023fd59fde761a64014c48d8246648ddd272a3」のようなもの)
    > ↓
    > これを「autogtp」がある場所と同じ場所に貼り付けてください。
    > その後に貼り付けたものを「weights.txt」に名前を変更します。
    > ※1、「.txt」を打ち忘れて失敗する方が多いです。
    > ※2、うまくいかない場合は記事下部にある備考を参照ください。

    networksの中をみると
    febf1d9c230f9c6f8a7b83056faa87779abb09ae64b538b836f99c91af50b0b8.gz
    というファイルがありました。
    (謎の文字列+gzの拡張子がついています)

    そして

    > これを「autogtp」がある場所と同じ場所に貼り付けてください。
    > その後に貼り付けたものを「weights.txt」に名前を変更します。

    ですが、
    C:\source\igo\leelazero\leela-zero-0.16-win64\networks\febf1d9c230f9c6f8a7b83056faa87779abb09ae64b538b836f99c91af50b0b8.gz
    をまさにそのまま
    C:\source\igo\leelazero\leela-zero-0.16-win64\
    へファイル自体をコピーし、その後
    febf1d9c230f9c6f8a7b83056faa87779abb09ae64b538b836f99c91af50b0b8.gz

    weights.txt
    へ拡張子ごと名前変更する、という理解でよろしかったでしょうか?

    あるいは
    febf1d9c230f9c6f8a7b83056faa87779abb09ae64b538b836f99c91af50b0b8.gz
    のgzファイルを解凍すると
    40b_186_56k_q
    という拡張子なしのファイルがでてきたのですが、これを
    weights.txt
    へ名前変更しつつ拡張子をつける、という意味になるでしょうか?

    ちなみにgzファイルの解凍はALZipと7-Zipそれぞれでおこなってみました。
    (どちらで解凍しても同じ内容がでてきました、念のため)

    また、リネーム対象の問題とは別に、
    weights.txtを設置する場所が
    C:\source\igo\leelazero\leela-zero-0.16-win64
    ではなく
    C:\source\igo\leelazero\
    などなのだろうかという疑問も若干あるのですが、前者という理解で問題はなかったでしょうか?

    【質問2】

    > ※備考
    > ネットワークは日々進化するので、こちらを確認して最新のものに入れ替えられます。
    > ファイルを解凍するとテキストファイルが出るので、それを④から同じ手順で導入できます。

    「最新のもの」ですが
    Best Network Hash
    の表の中で一番上の方にある「Hash」の列のリンクからダウンロードできるファイルという認識でよろしかったでしょうか?

    ちなみにそう解釈したとして、そこからダウンロードした
    febf1d9c230f9c6f8a7b83056faa87779abb09ae64b538b836f99c91af50b0b8.gz
    を解凍すると、
    > ファイルを解凍するとテキストファイルが出るので、
    とあるようにテキストファイルはでてこず、やはり
    40b_186_56k_q
    という名前の拡張子なしのファイルがでてきます。
    .txtがついていないこういうファイルがでているのは何かおかしい状態でしょうか?

    gzファイルの解凍はALZipと7-Zipそれぞれでおこなってみました。
    (どちらで解凍しても同じ内容がでてきました、念のため)

    以上、おかしな点や、試してみたら良さそうなことやアドバイスなどご教示いただけましたら大変助かります。

    お手数ですが、どうぞよろしくお願いいたします。

    • okao より:

      恐らく、cudaをダウンロードする必要があると思います。同ブログのphoenixgo導入手順に従って行ってみてください。なお、cudaは最新のもので大丈夫だと思います。取り急ぎ

    • okao より:

      ・質問1への返答
      現在は導入方法が異なる可能性があるので、gz.ファイルのまま使えるかもしれません。
      当時はgz.ファイルでは出力されなかったため、検証していません。
      昔のままなら解凍して名前を変えて、場所を置き換えればできます。
      ・質問2への返答
      強引にテキストファイルにしてください。
      もしできないのであれば、仕様が変わっている可能性があります。

      承知していると思いますが、
      囲碁AIの情勢は刻一刻と変わるので昔の方法が使えない場合も多々あります。
      別の方法で出来る可能性はありますが、現在はLizzieを使うことが主流です。
      Lizzieで対戦もできるので参考にしてください。