今のfloodgateの下位について

コンピュータ将棋界隈の方には説明不要なのだが、オンラインで将棋の対局を常時行っているサーバがある。floodgateである。

コンピュータ将棋対局場

 

もう随分古いのでメンテナンスは怠っている感じで棋譜履歴やドキュメントの類も更新が途絶えている。と言っても対局とレーティング評価は動いているので日々練習に使える。

 

 

現在の短期(二週間)レートの最下位層がこんな感じである。

少し古い方なら、あの技巧が下位!?と驚かれるかもしれないが事実である。

sample4-5tが私が公開しているもので、nn14をdepth4で探索させているがこの程度のレートである。高いとみるか低いとみるかそれぞれであろう。

nnue-pytorchのメモその2 - 48's diary

Kristallweizenのdepth4の方がマシだった気もする。

 

駒得のdepth10(自称)というのがその下にあり、そのままの実装とすれば面白い比較になる。

さらに下にKifuwarabeがいる。これは恐らくWCSC34版のきふわらべだと思われるが、随分連敗した後1勝することでレートがついてしまった。この1勝は駒得の時間切れが原因であるので実力というには不適切だろう。

 

小さな不満を感じたのでKifuwarabeがどこまで弱いか確認するために、うちの子で最弱を投入してみた。といってもランダムに勝つ程度である。

 

bleu48.hatenablog.com

 

完全なソースはこちらのsample1-1である。

github.com

 

で、結果。

KifuwarabeWCSC34R-sample1-1

 

ということで、今なら相当弱いプログラムでもレートが付きそうである。

記念に放り込んでみては如何だろうか。

 

nnue-pytorchのメモその2

時間が経つのも早いもので前回から二ヶ月経過していた。

bleu48.hatenablog.com

 

そもそもnnue-pytorchに関しては初期の頃から少し弄っていたが2018年段階の経験から後回しにする課題との認識を持っていた。

nnue-pytorchに関して優れている2点を挙げるが,まずは前回も述べたデータローダ部分が改良されている点が実用的に素晴らしい。2018年時点の私はpythonクラッチで書いていたので恐らくそこがボトルネックGPUのパフォーマンスをあまり有効に利用できていなかった。

もう1点がネットワーク構造である。

前回ネタにしたnnue-pytorchのモデル1024x2-8-96と中細りのニューラルネットワーク構造である。一般的には中間層で失われた情報量は出力層で補われることがないので使われることは少ないが,本モデルの出力は機械学習における分類ではなく回帰の課題である。出力に非線形性が強く理想的な出力を得るには出力層の一段階前でこう言った処理でフィットさせる手法は例外的に存在する。

 

ということで将棋AI界隈に新風が吹き込まれた昨今である。

特に反応の早い開発者は直近の電竜戦TSEC5に採用されており一大勢力になろうとしている。

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

 

これも野田さんがチェス界にNNUEを持ち込んで,チェス界で育った技術を逆輸入したお陰である。この辺も動画中継中にコメント入れておいた。知る人ぞ知るマニアックな話であるが,今年の選手権優勝など含め技術的優位との印象が大きいだろう。

 

で,私の方はTSEC5に関して前回作成した習作としてnn14というのでエントリーした。モデル形は1024x2-8-96と試作品のままというかきちんと学習できるようになった2つ目か3つ目である。TSEC5においても意外に強かったので公開しておいたが,反響を聞く限り所謂トップクラスにはあるみたいである。

 

nnue-pytorch自体は学習器でしかないので推論はやねうら王などに頼ることになるのだが,モデル型を変更するなどで連動的にビルドする仕組みがないので半手動でテストすることになっている。TSEC5でも様々なモデル型がみられるがそのうち流行りは落ち着くのだろうか。

ちなみに可変サイズにするとコンパイル時最適化が進まないのか実行速度が随分落ちる。JITのような仕組みが必要なのだろう。

 

nnueバイナリには型を表現する文字列を埋め込むことになっているのだがこれが固定値なので連動して変更するようにしておいた。NNUEの生みの親である那須さんが悲しまないくらいの対応はしたいものである。

 

 

--

追記:

nn14が初手76歩の率が高く,矢倉・雁木を選択する率が高い。

そのために初期局面から使うと千日手が多かったりするなど先手の優位をうまく生かせていないなど判明した。Kristallweizenのときもそうであるが序盤教師データをあまり入れていないとそういう感じになるのだが,純粋な対局ではなく解析などで使う分にはこれらどれを使っても皆そこそこ優秀なので大差ない認識となるようだ。

序盤の定跡を少し入れると勝率が稼げる話は随分昔に散々やったので再度する必要はないだろう。

 

--

追記2:

nn14と検索するとオレンジ色の鉄道が沢山出てくる。

単にうちの管理通し番号なので特に考えていなかった。

検索性の低い命名であることは申し訳ない。

他から提案頂いているネーミングストックから使うべきだったと反省している。

電竜戦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回電王トーナメントでの活躍につながった戦法ではありますが、コンピュータ界隈では横歩取り戦法は終わったと言って良いのかもしれません。