WCSC34、技術的まとめ

去る5月3日~5日に開催された第34回世界コンピュータ将棋選手権(以下WCSC34と略す)について、私の視点で書きたいことをいくつか書いておきたい。

今回、優勝したのは「お前、CSA会員にならねーか?」(以下、たぬきと記す)である。この作者は、たぬきシリーズの作者の野田さん(nodchip)だ。

関連記事 : その名は「お前、CSA会員にならねーか?」2024年・世界コンピュータ将棋選手権、チャンピオン決定!(Yahooニュース) : https://news.yahoo.co.jp/expert/articles/3490be9ce374b0afe114ca3d6e5a422d0db85923

今回のたぬきは、Deep Learning型の将棋AIではなく、従来型(NNUE系と言われている)の将棋AIである。

nnue-pytorchについて

今年に入ってから、NNUE系はいくつかの大きな進展があった。

その中でも特筆すべきなのは、nnue-pytorchがまともに動き出したことである。

nnue-pytorch : https://github.com/nodchip/nnue-pytorch

nnue-pytorchは、PyTorchを用いたNNUE評価関数の学習を行うプログラムである。従来は評価関数の学習(機械学習)はCPUで行っていたのだが、それがGPUを用いてできるようになった。nnue-pytorchのプロジェクトは、長らく、純正の学習器(やねうら王本体を用いたCPUを使った学習)に比べ、学習結果が劣っており、純正の学習器と同じレベルの強さにはならなかった。

ところが、昨年末ぐらいにようやくその原因がわかり、GPUで学習を完全に代替できるようになった。GPUでの学習はCPUで学習する時の8倍程度の速さであり、0からの学習(評価関数をランダムパラメーターで初期化した状態からの学習)がGeForce RTX 4090で、3日程度で完了すると言う。

補足しておくと、純正の学習器は、学習が16スレッド程度で頭打ちになる。それ以上のスレッド数があっても役に立たない。(これはNNUEのネットワークが小さいので仕方がないところ) 16スレッドの8倍速、すなわちnnue-pytorchは(GeForce RTX 4090を用いてCPUの)128スレッド相当ということである。4090を用いているにしては、少し遅い気もするが、野田さんによると「自分は、ひとまず、新しいネットワークアーキテクチャの実験を進めたいと考えています。学習速度のボトルネックの調査と高速化については、有志の方にお願いできればと思っています。」とのことだそうだ。

ともかく、従来1ヶ月近くかかっていたものが3日で済むようになったので、評価関数のアーキテクチャを変更したり、学習条件を変更したりするような実験を多数行うことができるようになり、ついにNNUEの標準的な評価関数アーキテクチャ(標準NNUEなどと呼ばれる)以外にいくつもの優れたアーキテクチャが見つかったのである。(本大会では、nnue-pytorchを用いているのは、たぬきの作者である野田さんのみで、かつ、新しく見つかった評価関数アーキテクチャも、用いているのは野田さんのみ)

良質な教師データが多数公開されたこと

NNUE系の進化の2つ目の要因として、良質な教師データが公開されたことも挙げられるだろう。

特に、たややんさんによる水匠1000万ノード(探索局面数が1000万局面という意味)×1億局面のデータセット。

ダウンロード先 : たややん 将棋AI水匠の紹介! # 公開データ群 : https://note.com/tayayan_ts/n/nacdfae58b4ef#4008bcdc-67a8-4f3a-9e6b-7b5055fd8cc4

以上のデータは、やねうら王チームのスポンサーであるAMD様にモンスターマシンを提供していただいて生成したものである。

Threadripper 3990X換算だと生成に1年以上要するし、AWS換算で言うと300万円程度、生成に費やしたことになる。

たややんさんは、それを無償で公開してしまったのだ。

たややん、何してくれてるんだー!!

この教師データセットで追加学習(fine tuning)することで強くなるようだ。

ただし、今回のたぬきの評価関数は、このデータセットで追加学習はしていないのだそうだ。(追加学習する時間がなかった&追加学習する前の段階で、従来のものよりR40程度強かった。)

NNUE探索部の進化について

NNUE系の進化の理由の3つ目としては、門外不出だったやねうら王の開発版を、昨年末からやねうら王の支援者向けに配布し始めたというのがある。(GitHub SponsorsかFANBOXで支援した人に配布している。このブログのグローバルメニューの「やねうら王を支援する」から支援先に飛べる。)

また、今年に入ってから、その開発版から、少しずつやねうら王の公式GitHubの方にも反映させていっている。まだ差分は多少あるものの、2024年5月現在、かなり開発版に近くなっている。

ちなみに、この開発版は、昨年末に開催された電竜戦で水匠が優勝する原動力となった。(その時点では、やねうら王の開発版を持っていたのは、私を除けば、水匠の開発者のたややんさんだけであった。)

また、この開発版は長い持ち時間での棋力の伸びが従来版より顕著であることもわかっている。

本大会では、以下の4チームがNNUE系で、3位、4位の東横将棋とkoronが(支援者向けに配布している)やねうら王開発版とのことである。

1位 お前、 CSA 会員にならねーか?
3位 東横将棋
4位 koron
7位 十六式いろは煌

1位の「お前、 CSA 会員にならねーか?」(以下、「たぬき」と記す)は、やねうら王の公開版なのだが、その開発者の野田さんによると「開発版が強くなっているかの計測が間に合わなかったので(計測していないものを使うのは怖いので)、仕方なく公開版を用いた」とのことであった。

いずれにせよ、やねうら王の開発版の公開がたぬきの優勝の原動力となったいることは疑う余地もない。

なぜNNUEの探索部をここまで強くできたのか?については、これも長文になるので別の記事に改めて書くことにする。

二次予選でdlshogiが予選落ちしかけた件について

WCSC34、二次予選で前回、前々回優勝のdlshogi with HEROZチームが9位に終わった。(8位以上で二次予選抜け)

これは一つの事件であった。しかし8位のあすとら将棋さんが決勝参加を辞退されたので、dlshogiが決勝に駒を進めることになった。

Deep Learning(以下DLと略す)系の将棋AIでは主としてGPUを用いる。それに対して従来型の将棋AI(NNUE型などと呼ばれる。以下NNUEと記す)は、主としてCPUを用いる。

GPUとCPUとを比べるとGPUの方がハードウェアの進歩が早い。いままでGPUは2年おきに倍ぐらいのスペックの製品が発売されてきた。GeForce RTX 2080Ti(2018年9月発売) ⇨ 3090(2020年9月発売) ⇨ 4090(2022年10月発売)と言った具合である。CPUはCPUクロックはほぼ頭打ちで、ここ10年ぐらいはコア数を増やす方向で進化してきたのだが、NNUE型の将棋AIの探索で用いるαβ法は、並列化の実効は√Nぐらいと言われており、コア数が2倍になっても√2倍(≒1.4倍)程度の効果しかない。2年で2倍のコア数になるわけでもなければ、2倍のコア数になっても√2倍の効果しかないのでGPUとは比較にならないほどハードウェアの進化の恩恵にあやかれない。

そんなわけで、一度(ひとたび)、DL系がNNUE系を抜き去れば、ハードウェアの進化に恵まれるDL系は、そのまま未来永劫、首位独走するはずであった。

関連 : 誰もdlshogiには敵わなくなって将棋AIの世界が終わってしまった件 https://yaneuraou.yaneu.com/2022/06/27/nobody-could-compete-with-dlshogi-anymore/

実際、2022年のWCSCでdlshogiが優勝したあと、2023年も優勝し、dlshogiの牙城を崩すのは不可能という雰囲気が開発者コミュニティに存在していた。

それが、今年の大会では蓋を開けてみれば、dlshogiは瀕死の状態でのスタートである。(dlshogiはシードなので二次予選より参加)

dlshogiに何があったのだろうか?

dlshogiの開発者の山岡さんのブログを読むとその詳しい理由が書かれている。

第34回世界コンピュータ将棋選手権 結果報告 : https://tadaoyamaoka.hatenablog.com/entry/2024/05/06/140552

dlshogiはResNetを用いている。

20b(bはブロック数の意味)と30bのモデルとでは、後者の方が盤面評価の精度が高く、探索できる局面数は減るが、トータルでは強いとされている。(だからこそ大きなブロック数の評価関数を頑張って育成している。) ところが、dlshogiは二次予選で30bを用いたところ、読みぬけが多く終盤で逆転しがちであったようだ。

どういう現象が起きているのかは現時点ではよくわかっていないが、もし長い時間で30bより20bの方が強いということが証明されてしまうと、ブロック数を増やす意味がなくなってしまう。これは将棋AI界にとって大きな火種となりそうである。

ともかく、山岡さん視点の敗因分析は、上の山岡さんのブログに詳しいので、以下では私の視点から書いていく。

dlshogiのマシンについて

dlshogiは今回(も)、A100×8を9台(Multi Ponderという先読み技術のため)用いた。Multi Ponder分ではいくらも強くならないので、無いと思ってもいいぐらいだから、つまりはA100×8である。A100は推論に用いる場合、GeForce RTX 3090より2,3割速いだけなので、4090と比べると7割ぐらいの速度でしかない。つまりは、4090換算で言うと5,6台分と言ったところだ。

HEROZの林社長に聞いたところ、HEROZにはH100(A100の倍ぐらいの速度がでる)もあるそうなのだが、(山岡さんの判断で)そっちは別の業務に使っているから使わないという判断のようである。

それで、GeForce RTX 4090だが、クラウドでx8(4090 8枚が1つのPCにぶら下がっている)とかx14とかが借りれてしまうのである。

今回、AobaZeroは、RunPodで4090×12を1時間$6.5で借りていたそうである。

RunPod : https://www.runpod.io/

決勝に残ったPolonaise(開発者はプロ棋士の谷合先生)は、vast.aiで4090×14。

やねこま王チームは二次予選ではvast.aiで4090×14、決勝日は4090×18を借りていた。

vast.ai : https://vast.ai/

ちなみにvast.aiは、個人間でGPUを貸し借りする仲介サイトで、いつでもx18が借りられるわけではないが、決勝日の朝に関して言うとx18が借りられる状況だったので、谷合先生になぜx18を借りなかったのかを尋ねたところ、「マシンをセットアップしなおすのが面倒だったから」とのことであった。

ともかく、このようにクラウドで安くでA100×8よりハイスペックなマシンが手軽かつ安価で借りられるようになったため、dlshogiチームのマシンの優位性が崩れたというのも、dlshogiチームが二次予選で苦戦した理由に挙げられると思う。

ちなみに、技巧の出村さんは、AWSでA100×8(1時間7000円ぐらい)を借りていたそうで、私が「なぜvast.aiなどで借りないのか?」と尋ねたところ、「(よく知らないサイトで)クレジットカードの情報を入力するのは怖い」とのことであった。出村さんらしい理由だなと思った。

ResNet以外のDL系の評価関数について

DL勢も従来のResNet以外にBERTのようなattention機構を持ったアーキテクチャを採用するチームがあった。

谷合先生のPolonaiseの評価関数アーキテクチャは、BERTそのもので、局面を95文字(盤面81文字 + 手駒7種類×先後 = 95)として入力しているそうだ。

Polonaiseの探索エンジンは、ふかうら王を用いているそうである。

今回のやねこま王もattention機構を持っており、ResNetとtransformerのいいとこどりをしたようなモデルである。(詳しくはWCSC34の公式サイトのPR文章その2として後日公開する。) dlshogiの公開モデルからは4090 1手8秒計測で+R200~300ぐらいあったのだが、それより長い時間で強くなっているかはよくわかっていない。(本大会の結果から察するに長い持ち時間ではそれほどでもなさそうである。)

ふかうら王のPv Mateについて

ふかうら王は大会直前に私がPV(読み筋) line上でdf-pn(詰め将棋ルーチン)を呼び出す改良を行い、やねうら王のGitHubの反映させた。

これにより、読み筋上の局面にある40手ぐらいの即詰みが読めるようになったので、R40ぐらい強くなった。

私はこの作業をすることは事前にDiscordで告知していたので、谷合先生はそれを待っていたそうだ。

谷合先生は、PV line以外もdf-pnを呼び出すように改良してさらに強くされたそうだ。(ふかうら王本体にその改良を取り込むかどうかは考え中。)

まとめ

dlshogiの天下が今後も続くのかと思っていたら、大きな技術的なムーブメントがいくつもあった。今年の将棋AI界隈は目まぐるしく変化しそうである。

「お前、CSA会員にならねーか?」、優勝おめでとうございます。

「お前、CSA会員にならねーか?」の評価関数の頒布について

以下のサイトで評価関数の有償での頒布が開始された。

コンピューター将棋思考エンジン 『お前、 CSA 会員にならねーか?』 (tanuki- 第 34 回世界コンピュータ将棋選手権バージョン) : https://lessertanuki.booth.pm/items/5713519

たぬきさんの計測によると、

・評価関数で+R40程度。
・探索部(これはやねうら王のGitHubのものそのまま)で+R70程度。

なのだそうだ。

やねうら王の開発版だとやねうら王のGitHubで公開されているものよりさらに強いので、最新のNNUE探索部が欲しい人は、「やねうら王を支援する」からどうぞ~。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です