どうも、進撃の巨人は何巻まで読んだか覚えていない吟遊詩人です。
前回自作のAIでボナンザさんに挑みました。
あれからさらなる高みを目指してAIを強化!……したかったのですができなかったので事の顛末を紹介したいと思います。
今回は完全にまとまりのない記事になるのが分かり切っているので散文的に書いていきます。
DeepLearningShogi(dlshogi)
まず、前回までに作ったAIですが、主にpythonによって作られていました。
登場人物をおさらいしておくとこんな感じでした。

まあこの子に山ほど棋譜を食べさせてあげればそれなりに強くはなるのですが、最強レベルにするにはいくつか課題があって、本の中では大体次のことが挙げられています。
・C++による高速化
・大規模学習
・詰みの探索
このうちC++による高速化は強いAIと戦うためには早くないと勝ち目がないのでマストです。
また、大規模学習の棋譜は、将棋エンジン同士を戦わせて数百万局生成させたり、自己対局でデータ生成したりする必要があります。(AlphaZeroも自己対局で強くなっています。)
で、そのようなC++をベースにしたものがdlshogiとして以下のGit-hubに公開されています。
https://github.com/TadaoYamaoka/DeepLearningShogi
登場人物がかなり変わっているので、改めて相関図を示します。(完全にイメージなのであんまり気にしないで)

Linaxでビルドする時はMake fileいるんですけどね。
ちなみにこのdlshogiですが2020年の電竜戦で見事優勝しています。
現時点において最強将棋AIと言えるでしょう。
deeplearningが将棋でも有効であることが示されたわけですね。正直あと2~3年はかかるんじゃないかと思ってましたので、非常に驚きです。
で、早速このdlsyogiを使ってみようと環境構築してビルドしてみました。
この辺の記事を見ながらやれば行けると思います。
https://github.com/TadaoYamaoka/DeepLearningShogi/issues/12
boostインストールするときはオプションちゃんと指定しないと必要なファイルができてなかったりするので、なんかいろいろ書いといたほうが良いです。
https://www.pc-gear.com/post/boost-vs2019/
VSのビルドではAnacondaとかcudaとかのインストール場所とかが微妙に違っていてエラーが出ますが、includeやlibのディレクトリを環境変数のpathにいれたり、VSの追加のディレクトリで指定してあげれば、まあコンパイルは通ります。(プロジェクトが5個くらいあるからいちいち指定するの面倒ですけどね)


で、できた実行ファイルを将棋所に登録するじゃないですか、

で、こいつがいつまで待っても登録されない。
もろもろのソフトのバージョンとかきっちり合わせても、ビルドはできるのに、登録できない。
で、多分なんだけど原因はコレ

いわゆるCPUの拡張命令ってやつですね。
で、私のCPUは前々回紹介したけどIntel(R) Core(TM) i7-2600CPU @3.40 GHzってやつで、
AVXまでしか対応していない。

ここではあんまり拡張命令については説明しないけど(ていうか自分もよくわかってないけど)
SSE4.2とかavxの命令はいけるけどavx2はcpuのハード的に無理なんですよね。
だから例えば、やねうら王さんのエンジンなんかも、avx2使用でビルドされてるやつだと登録できないってワケ

(古いPCってガッツリ書かれてるし……)
じゃあってんで、電竜戦の奴がavx2でダメなら、1つ前のバージョンはどうか、

こっちならAVXがいけるなら行けるはず……
……が、ダメ!
ビルド済みのやつでも、自分でビルドしても、全然ダメ。
この辺でお手上げ状態。
なぜAVX対応しててもダメか
なんでダメか色々調べたたんだけど、やねうら王さんのサイトにこの辺の事情は結構詳しく書いてあって非常に参考になりました。
で、ここのコメント欄に書いてあったのが答えっぽい。

要はPEXTが含まれてて、動かないんじゃないかな、多分。
俺はこれからどうすればいい?
この前グラボの限界でダメで、グラボ買い替えたら今度はCPUの限界でした。
やねうら王さんのソースは教育的なだけあって、古いCPUに対応したビルドもできるようになっています。
(やねうら王さんのインストールは以下の記事が良い参考になりました)
https://crieit.net/posts/25b6590a2e7d468214ff9a94b4e8c6c0
やねうら王さんのソースを参考に、今のCPUに対応したビルドの方法を考えようとも思いました。
ただ、頑張ってやったところでavx2使えてない遅い奴になるだけなので、正直やる意味あるのか不明。
CPUをavx2対応のやつにしたいけど、実はマザボもH61H2-M5 v5.0だから対応してないんだよね

https://zigsow.jp/item/195604/review/288754
マザボとか買いだしたらいよいよPC自作とかしだしそうで怖い。同年代が10年以上前に経験した沼に今更落ちるのがとても怖い。
cpuも中途半端なの買って今後avx512が主流になったらと思うと、いいやつ買いたくなってしまう……。
まあボーナス入ったら買うかな……。
しばらくはディープラーニングとは距離を置いて、やねうら王さんに弟子入りしてこの辺のサイトで勉強しますかね。(テッパンですよね。多分。)
http://usapyon.game.coocan.jp/ComShogi/
https://ls3600.hatenadiary.org/

https://crieit.net/posts/25b6590a2e7d468214ff9a94b4e8c6c0
らしいので。
dlshogiの本が欲しい
あと完全に余談ですけど、python版のdl将棋の本は1回目に紹介してましたけど、C++版のやつもあるにはあるみたいなんですよね
https://ginyusizin.wordpress.com/2021/02/17/0024/
「ディープラーニングを使った将棋AIの作り方」というシリーズのようです
https://booth.pm/ja/items/1317252
ただ、これらの本は技術書展という同人イベントで配布されたもののようで、現在は一般には売られていないようですね。
https://techbookfest.org/event/tbf06/circle/46400002
とても欲しい。そのうち発売されると嬉しいんですが。
入手方法とか知ってる人がいたら教えてください。
おわり
というわけで、やっぱり全然まとまりがなかったですが。
ちょっと前はパソコン屋さんのグラボ売り場でウロウロしていましたが、これからはマザボ売り場~CPU売り場をウロウロしていると思うので、
見かけたら優しく声をかけないで、あたたかく見守ってください。