電竜戦TSEC5開催

随分アナウンスが遅れましたが6月29日つまり明日です。

 

 

午前中から遠山先生・竹部先生の黄金タッグで長尺中継となります。

解説の休憩時間は私も適当に乱入するかもしれません。

 

TSECというのは昨今将棋AI界隈では同じような戦型ばかりで面白みがないというところを打破すべく,指定された局面から対戦を行うものです。

電竜戦では局面も対戦相手も異なるということで評価が難しい競技ではあるのですが,そこはAIということで長尺で沢山対局をすることで統計的になんとか評価をしようとしています。

有効な評価方法を探す試みも個人的課題となっているので終了後なにか取り組みたいと思っています。

 

ちなみに今年も参加チーム数は30を超えており,多数チーム多数対局が成立することは必至です。まともに観戦していると体がもちませんので適当に流して良いと思います。

第5回世界将棋AI電竜戦TSEC指定局面戦 参加者一覧

 

そう言えば対象となる局面もどういったものが出てくるか理事長のみぞ知る状況です。近年の将棋で話題となったような局面が登場するのでしょうか。それとも未だ優劣つけ難いアノ局面が出てくるのでしょうか。そしてその局面の最新AIによる評価は如何に?

 

色々煽っておりますが,トラブルが無く終わればいいなと運営的にはそこだけ心配しております。

 

 

枠を外す

昨日こういうイベントがあった。

午前にゲーム情報学研究会が予定されていたので特にエントリーしていなかったのだが開始時間に間に合いそうになって直前で緊急参加とした。

 

nulab.connpass.com

togetter.com

 

テーマとして枠を外すというのがあり、皆さん様々な枠を外した話をされていた。

上記にまとめられてあるのでここでは取り上げないので見ていただきたい。

 

 

私は最後の時間枠で飛び入りで電竜戦TSECの宣伝をするのみであったが、枠外しにかんしてはそういえば得意分野である。

立ち話でもジャンル違いのイベントに参加する面白さについて話していたが、日常でも面白いと思って失敗を楽しんでいる。

 

昨冬からスープジャーによる弁当生活含め、コロナ禍で食事を作ることが日常的になっている。心がけることはレシピのミックスである。

例えば昨日の例。

作り置きの鶏ハムが大量にあって優先消化しなければならない。キュウリが2本ある。

(豆腐、エリンギ、小松菜という脈絡がないものもあったが)

棒棒鶏がすぐに思いつくのであるが、これに中華麺も入れて冷やし中華風に食べてみようとまで考えて台所に立つ。

そういえば冷蔵庫に中華麺はないが、春から冷製パスタにハマっているので細いスパゲッティがある。これでいいやと代用。

麺を茹でながら鶏とキュウリを細切りにして、ゴマダレを探す。

おっと古いものが見つかったが蓋を開けるとポンと大きな音が出て酸の香りがするので、即廃棄。

結果的に冷製パスタの王道でオリーブオイル岩塩レモンとかいった仕上げになる。

気持ち醤油とゴマ・ゴマ油を加えておいた。

 

出来たものはレモンパスタと棒棒鶏のハイブリッドとなるのだがこれが意外に面白かった。棒棒鶏にレモンでも良いことが分かるし、細切りのキュウリはフォークでも食べやすい。ただ、2本は少し多い。

中国人がイタリアンを作ったらこうなるかもしれないとか考えておしまい。

 

インスタントの袋めんを冷やし中華風にするレシピを複数確認したので、次からは袋めんを置いておくことにする。

Wacatac.B!ml誤検知の話

Go言語で作っているプログラムを連続実行していたらエラーで停止していた。

よく見ると実行ファイル自体が消えている。

 

元ソースをビルドしなおすと「Trojan:Win32/Wacatac.B!ml」を検知したとのこと。

削除されていた。

昨日までは何ともなかったのだがと調べてみると、ネット上過去の例ではMac環境でクロスコンパイルしたもので同様の報告が出ている。

 

Go言語で作成したプログラムがWindows Defenderに「Wacatac!ml」と誤検知される件と回避方法

GoでクロスコンパイルしたWindowsバイナリを利用したら、Windows Defenderに Trojan Wacatac.H!ml として検知された - at backyard

 

うちの方ではクロスコンパイルではないが似たようなことが起こったみたい。

ソースの方をそれっぽく修正しても埒が明かないので、コンパイラを最新版にしたらピタッと止まった。(具体的には1.22.0から1.22.4 windows/amd64

これで対応としておく。

 

Go言語はセキュリティアップデートが多いが役に立ったと言える。

Windowsさん誤検知は勘弁です。

ーーー

追記:

別の警告で再発する場合があるみたい。

根本的解決法を探りたいところである。

ーーー

追記2;

しばらくしたら出なくなった。

誤検知が修正されたんだろう。

8700Gの話その2(Ryzen AI環境の話)

前回のネタが思いの他アクセス数が多い。

 

bleu48.hatenablog.com

 

まぁ、分かるように自分用のメモなので実際手を動かしていない人には薄っぺらい内容だろう。

もしかしたら手を動かしてうまくいかない人がアクセスしているなら申し訳ない。

 

もちろん、ここら辺を動かす話だ。

www.amd.com

github.com

そう、実はRyzen AIの動作環境を整えるのは結構難しいのですね。

私の方で苦労した結果を残しておきましょう。

 

1.Pythonは3.9を使え

ソースから全部ビルドするなら好きなバージョンを使えばいいのですが、公式で配布されているバイナリ類を使う方が簡単にうごきます。

対応しているPythonのバージョンは3.9のみ。面倒でもこのバージョンを入れましょう。(そのうちβが外れて幅広い環境に対応すると思うけどね)

 

2.Visual Studioは2019を使え

こちらも同様

うちでもそろそろ全部2022にしている雰囲気なので今更感があるが、公式の配布物がその環境でビルドされているので合わせるのが無難だ。

ちなみに細かいところをちょいちょいと設定してやると2022でも幾つかのサンプルが動作することは確認しているが変更点をすべてメモするようなことをしていなかったので惜しいことにここに書けない。まぁ2019入れとけってことだ。(そのうちβが外れて幅広い環境に対応すると思うけどね。2回目)

 

3.環境変数の設定は自分の環境に合わせて 

Runtime Setup — Ryzen AI Software 1.1 documentation

ここら辺の話だが、昨今今風の環境に慣れ過ぎているのか、絶対パスで設定ファイルを変更するようなことに慣れていない人が多いようだ。これが間違えると長いエラーメッセージを吐いて動かない。自身の環境の絶対パスで確認していただきたい。

 

4.違和感があればリブート

特殊なハードウェアを扱うソフトウェアである。不具合などがあればハードウェアもしくはソフトウェアが予想外の状態になっていることがある。例えば検知しにくいプロセスなどにメモリを確保され通常の動作を阻害したり、エラー状態からの復帰手続きがないために特殊な状態になっており通常動作しないなどよくあることである。

困ったらリブートしよう。

 

5.動くものと動かないものを切り分けよう。

まだまだβが取れないソフトウェアである。不具合などあって当然なので原因が配布物側にあることも考えられるが、状態や影響の切り分けを丁寧に行おう。

その上で状況分析や他の方に相談をするなどしないと結局よくわからないで終わる。過渡期の環境とはそういうものであるので細かく確認を行うことが必要とされる。

 

具体的な話も色々あるが、今日はちょっとしたコーヒーブレイクなのでそろそろ終わる。

 

第2回マイナビニュース杯電竜戦ハードウェア統一戦の番外編

本年3月に終了した第2回マイナビニュース杯電竜戦ハードウェア統一戦の番外編をお届けします。

覚えておられるかどうかわかりませんが、戦型分類において横歩取りが8件ありました。

 

bleu48.hatenablog.com

 

うち、6件が十六式いろは煌の早期投了となっておりました。

十六式いろは煌の初歩的なバグにより34飛と取ったところを後手番の十六式いろは煌が投了としてしまう件です。

 

棋譜を残すイベントとして、あまりに残念なためになんとかリマッチをしたいと画策しまして公式イベント終了後の余興として6件の対局を行いました。

バグフックスした十六式いろは煌を準備頂いたことと対戦相手の6チームの快諾により成立した非公式の対局です。

 

GitHub - bleu48/Denryusen: 電竜戦関連ファイル

 

結果は要約すると公式対局と同じく全て後手番十六式いろは煌の負けでした。

加えて横歩取りとなったのはGrampus戦およびKyoShogi戦の2局のみでした。これは乱数の働きによるものでしょうから特に運営側としてコメントしません。

 

個人的には第5回電王トーナメントでの活躍につながった戦法ではありますが、コンピュータ界隈では横歩取り戦法は終わったと言って良いのかもしれません。

 

 

wcsc34雑感

自チームの記録は下記の通り。

準備不足がなによりダメ。

新ネタの有効性を示すところまで届いていない。

第34回世界コンピュータ将棋選手権 - 48's diary

 

で,他の話である。

例えばスポンサー周りの変更で優勝賞金が5000円となった。前回,前々回が50万円相当であったのから比べるともうゼロにした方がいいんじゃないかと運営側にコメントしたくらいである。参加費より少額な優勝賞金とか聞いたことが無い。

逆にスクラッチ勢に対してスポンサーがついたためそちらの方が賞金額が多いことになった。

 

クラッチ勢に関しては以下のようなものを代表として少々過激なコメントがある。

ただスクラッチ開発なだけの将棋ソフトってそんなに偉いんですか? - コンピュータ将棋動画勢!

割と同意するところはあってフルスクラッチ自称していた人がチェスソフト由来のバグを踏んだりしているのを見ると確かに萎えるし,むしろ逆に自称して良い人がそういう話にすら関わりたくないのか無申請であるケースもある。

個人的にも28回大会後にフルスクラッチで作ったものは同じように二日程度でそこそこ動くようになり一週間ほどでLesserKaiに勝てるようになったと記憶している。

 

もちろん写経的なスクラッチであっても有効な部分は結構あって,アルゴリズムの理解に繋がる。これにより参考にしたオープンソース側のバグフィックスに貢献する例も少なくない。様々な部分で想像以上に相互に関与があるので薄っぺらい線引きが無意味であることは現場の人間も多くは理解している。

 

他には,学生参加者の回帰が見られる点が本大会で印象的であった。

技巧の出村さんや谷合四段も学生の範疇として,koronさんAri Shogiさんなど電竜戦デビューの若者,Noviceチームから独立したnshogiさん(既に卒業されているとの噂もある)等である。もちろん大躍進の日本工学院専門学校チームも加えておくべきだろう。

それぞれ独自に新しいアイデアを盛り込んで来られている。

私個人が電竜戦を運営する立場でもあるので,若者に新風を吹き込んでもらえるのが何より嬉しい。今後の活躍に期待している。

 

さらにハードウェア問題も際立った感がある。クラウド利用のチームの拡大で二次予選通過がとんでもない激戦になっている。特にAIブームの影響によりGPUクラスタが比較的借りやすくなっているそうでvast.aiなどで参加しているチームが急増している。これにより資金不足のチームは淘汰されることが確定する。

こういった背景であるので,実は最初に書いた賞金額というものを気にする参加者は少なく優勝したくらいで何かの足しになるものでもないようである。うちのチームは例外的なのかもしれない。肩を並べるためには年間百万円オーダーは投入する必要があるのだろう。

逆の視点から見るとハードウェア統一戦を今後も続けていく必要があると強く感じる。スポンサー周りをなんとかしたいものである。

 

やねさん視点でまとめられている記事が出ているのでリンクを置いておく。

WCSC34、技術的まとめ | やねうら王 公式サイト

やねさんが触れていないところを加えておくと,技巧,Polonaise,あすとら将棋,タンゴは面白いことをしているのでアピール文など読んでみるといいかもしれない。AobaZeroも今までと違うことに気づいた人は意外に少ないだろう。

 

優勝のたぬきチームの件については簡単にテストしている。今後nnue-pytorchが猛威を振う可能性は非常に大きく,多くのチームが参入するであろう。2019年のnnueブームの再来だろうか。実に楽しみである。

nnue-pytorchのメモ - 48's diary

 

次の予定が来たので筆をおく。(のちに加筆するかもしれない)

 

 

nnue-pytorchのメモ

速報的意味合いが強いので完成度が低いまま公開しつつ更新する。

 

WCSC34優勝のたぬきチームのnnue-pytorchの動作テストである。

 

github.com

 

チームのアピール文。

https://www.apply.computer-shogi.org/wcsc34/appeal/Hey,_you_wanna_be_a_CSA_member/appeal.pdf

 

python環境はWindows11のpython 3.11で試す。

近頃dockerやWSLなのだろうが、私はWindowsネイティブメインでまだやっている。

 

よくわからないので、まずは最新ブランチを採用

 

仮想環境も使わずライブラリをいれる。

pip install python-chess==0.31.4 pytorch-lightning torch matplotlib

 

pytorch-lightningは新しすぎるらしく1.9.0に入れなおす。

他にtensorboardXも要るらしいのでpipで入れておく。

 

教師データはこちらを使う

 

教師データをシャッフルして9:1に分けて学習開始。

GPU負荷がはいりlossが順調に減っているので学習されてそうである。

 

とりあえずここまで

実のところ以前も触っているので難なく動くが,python-chessをまだ要求しているなど荒削りの部分は全く改善していないようだ。

pytorch-lightningを含め新しいライブラリに対応させておくようなことも今後を考えると必須だろう。

あまり確認していないがstockfish界隈はその辺どうなっているんだろうか。

 

一晩して、学習はできたようだ。

可視化ツールなども動作していることを確認。

実際のエンジンで使えるかどうかということで試す。

 

nnue-pytorchは1024x2-8-96という実験treeを持ってきたことが判明。

エンジン本体は以下のtreeが1024x2-8-64なので、これの64を96にしてビルドしたものを用いる。

github.com

 

で、一応弱いがそこそこ将棋になっている棋譜が完成した。

プログラムとして一通り動作していることを確認したことになる。

 

ちなみに、たぬきチームの野田さんからは学習データとして自身がHugging Faceに公開しているHao depth9を勧められた。

これから試す人は是非使って頂きたい。

 

huggingface.co

 

ということで一旦完結。

 

---

追記:

上記の一晩学習したものを8コアのRyzenでfloodgateに放り込んでおいた。

暫定レートとして2700,相当弱いとされるものにも負けているがLesserKaiなどには圧勝する程度には学習されている。いくらnnue-pytorchの学習が速いと言ってもゼロから一晩じゃ全然ダメってことですね。

Player Statistics

 

---

追記2:

training_data_loader.dllを作るプロセスを明記していないので走らせられない人がいたようだ。

最新のVisual Studioの開発環境を準備してコマンドラインからcompile_data_loader.batを実行する。野田さんによるとGUIからもビルドできるようだ。

2018年に私が作った学習機より明らかに優秀な部分が二つあってそのうち一つがこのデータローダである。