囲碁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」に変えれば更新できます。