三番絞り

電竜戦も6シーズン目です。

文部科学大臣杯第6回世界将棋AI電竜戦本戦

電竜戦 - 棋譜中継

 

運営サイドとして今年も色々と模索していますが、プレイヤーとしても今年の新しいものは「三番絞り」です。

といってもとってつけたようなもので、AobaNNUEが強いことが判明してから同じ手法を試そうと手元の二番絞りをベースに行ってみたものです。

思いのほか時間がかかっており、複数パラメータ同時に仕掛けたのですが一番最初に学習が終わったもので丁度今予選を戦っています。

もう一つ終わっているのですがどちらが良いかとの判別が難しいというのが現状です。明日入れ替えるかもしれません。

 

行った手順は山下さんのBBSに書かれたものとほぼ同じです

http://www.yss-aya.com/bbs/patio.cgi?read=195&ukey=1

 

野田さん公開のHaoでdepth9のデータが元です 

 

静止探索局面に書き換えを行った後、二番絞りの静止局面評価を50%:50%で平均化したものが教師データとなります。

簡単に書きますが80億局面ほどあり、ハイエンドPCを2台用いても評価値の差し替えだけで1週間以上要します。

 

たとえば80億秒が253年です。Threadripper128並列で0.1秒で一局面を処理できたとしても2か月以上かかるのですが、野田さんが公開されたものがこれくらいのデータ量ということです。うちのLAN回線ではダウンロードに10時間近くかかりました。

 

さらに山下さんの報告では学習に2週間ほど要したそうですが、うちでは残り時間を考えて簡略化して数日で終えています。恐らく、収束管理が甘いためかAobaNNUEより弱い印象です。

電竜戦本戦後に再度時間をかけて確認したいと思っています。

 

80億局面も必要なのかどうかに関しては正直そこまでの比較実験を行っていないので分かりませんが、二番絞りでの経験では2億では全然足りないのでせめて4,5億欲しい。可能なら10億局面と考えて強化学習を進めていました。そのため1ステップに要する時間が最終局面で1年を超えました。さすがに手持ちのGPUでは手に負えません。

 

あまりこういう物量勝負をしたくないのですが・・・

 

CSAで提案したこと2025

CSAは最近のうちの文脈だとコンピュータ将棋協会の略である。

http://www2.computer-shogi.org/

 

昔の話をすると2019年の世界選手権の運営で先後の差が大きく,あまり公平と言えない点を主張した。過去の例もあって当然のように流されることになった。他にも時間管理の話もした気がするが私本人が詳細を覚えていない。

 

2020年に電竜戦を立ち上げるに辺り先後差の是正はひとつの課題となっており,現在さまざまな試みの経過で引き分け時先手0.4勝後手0.6勝とやや差をつける運用となっている。選手権でも同様にしようかとアンケートがあったが私はせっかくなので効果がはっきりするまで違うルールで運用頂きたいと思っている。

 

他にも色々とあるが,今年7月に提案しているのは2点である。正確には二度目かもしれない。

1.24点法の導入

2.時間管理の精細化(少なくとも1秒単位から0.1秒単位へ)

 

1は27点法と24点法の差異が分かる人には分かりやすいと思う。

プロ棋士は24点法でそれ以外はアマチュアとコンピュータは27点法で行われている。

理由は引き分けの対応に困る点である。アマチュアとコンピュータの大会には運営時間が無いため引き分けが発生すると困る。持将棋は避けたいのである。

比べてプロは持将棋で決着がつくのは時間がかかる上に恐らく視聴者が喜ばないと考えられているため差し直しが現行のルールだ。

もちろん日本将棋連盟や新聞各社にKristallweizenが利用される際にはこの点は丁寧に説明しており,対応が必要であればリクエスト下さいとお伝えしている。

伊藤叡王誕生の際にはコメントを求められたのでどこかの記事になっていることだろう。

 

で,本提案のざっくりした意味は先手勝率の是正方法として後手が最初から持将棋を狙った場合に持ち込むことが可能であるかどうかというところだ。もちろん戦型によっては可能性が高いと言う噂も既に出ている現状である。が,実際どうか真剣にやってみないかという提案である。

 

2つ目は時間管理の単位である。現在1秒が最小単位である。

フィッシャークロックルールの1手5秒加算や2秒加算で1秒が単位は少し大きいのではないかと言うのが私の提案である。

粗い話はえいださんが行っている。

コンピュータ将棋の対局で秒単位からミリ秒単位化に対応すると勝敗にどこまで影響するか?|都賀町えいだ@コンピュータ将棋開発VTuberバ美肉おじさん

この議論は制御側が時計を持っていない場合成立する。

実際の実装は探索時に指し手が決まっても,例えば2.4秒であったとしたら2.8秒か2.9秒くらいまで使って指すような仕組みになっており実質0.5秒程度内部で無駄に使っていることになる。稀に有効なることがあるので100%の話ではないが

2.4秒で指して浮いた0.5秒分くらいを持ち時間に残して欲しいと言うのが私の意見だ。

 

2018年にマルチポンダーシステムを組んで0秒指しを披露した。ネタとしてウケればいいと思っていたのだが勝敗ばかりが話題になった。選手権ルールだと1秒未満は0秒になる。1秒を超えると上記理由で2秒になるのだ。

そう,本題は相手のポンダーが全く機能しない状態を作り出すことにあったのだが,ネタとしてこの辺を考えたことが無い人には説明しても伝わらなかったようだ。

で,こうなると1手2秒程度であっても100手付近になって数分の差になる。意図的に作り出した状況だが人間の将棋に準えて強弱の話で雑にまとめられている。

こういった部分も精度よく時間評価して欲しいと考えている。

 

 

AobaNNUEが強い

将棋AI界隈でも大きなアップデートがありました。

具体的には数々の実績を誇る野田さん率いるたぬきチームが開発してきたnnue-pytorchの学習技術を用いて,YSSや囲碁のAYAで有名な山下さんがAobaZeroのデータを流用して学習させたものです。技術的には私がやっていた二番絞り初期と同じくデータと学習機のコラボアプローチですね。

floodgateに投入されていたのは知っていましたが,バイナリが公開されました。

説明文を読む限り相当な計算機リソースが投入されており,ものすごい情熱を感じます。

 

 

電竜戦本戦が来月頭ですので結構厳しいタイミングです。

こういうのは大会後に行われることが多いのですが直前にプログラム関連ファイルを全部公開してエントリーしてくるのは異例中の異例です。

文部科学大臣杯第6回世界将棋AI電竜戦本戦 参加者一覧

 

うちでは以前仕入れたN150で計測中ですが,過去の評価関数と比べて明白に強いと言えます。

N150の件 - 48's diary

N150の件その3 - 48's diary

 

floodgateの短期レートでも明らかにマシンスペックが上のマシン相手に少し勝ったりしていますので別格と言っていいでしょう。

http://wdoor.c.u-tokyo.ac.jp/shogi/LATEST/players-floodgate14.html

 

ということで,2025年11月現在最強と判を押しておきます。

ダウンロードして使うのをおすすめします。

 

画期的な囲碁アプリ「囲碁シル」リリース

以前から予告があった囲碁のアプリ「囲碁シル」がリリースされた。

これが想像以上に画期的であった。

囲碁シル

 

その前に「囲碁であそぼ!」というアプリが囲碁普及活動としてリリースされていた。

囲碁を楽しく覚えられる、新感覚学習ゲーム「囲碁であそぼ!」 | 囲碁学習・普及活動 | 囲碁の日本棋院

こちらは完全な初心者向けで9路盤の対局が出来るまで誘導してくれる。特徴的なのは大口の寄付により広告などを排除している点だろう。

囲碁未経験者にはお勧めするので是非スマホタブレットに入れておいて暇つぶしなどに利用していただきたい。

 

囲碁シルの方は広告はもちろん,有料課金アイテムもあるので少し毛色が違うようだ。

ゲームとしては大きく2つのバトルシステムで構成されている。

ひとつめはステップアップバトルと命名され対局が行われる。

当初はチョイスバトルと候補手3つから選ぶ三択システムで容易に対局感を味わえる。

相手側も弱いレベルからなので「囲碁であそぼ!」をクリアして8級程度の私でも最初は楽勝である。まぁそもそも三択のどこかを選ぼうとする気があるのでほとんどの局面で意見が一致している感じで打っている。

 

対局時の三択システムは将棋の方でも私は提案して実装している。もちろん次の一手問題が連続して出題されているようなものなので分からなくても適当に選ぶことで詰まることなく進行することが出来る。

また,対局後に検討モードがついているため何が悪かったのかの確認が行えるのは独学するのに非常に便利である。

 

三択で楽勝になれば次は「ベアバトル」と称して部分的にサポートAIが打ってくれるモードがあったり,最終的には全て自分で打つ「フルバトル」モードと移行することで自然に囲碁が打てるようになる教育的仕組みである。実によくできていると思う。

じっくり上級までやってみようと思っている。

 

で,本命が定石カードバトルである。

定石は囲碁の用語で将棋界は定跡と呼ばれる。という話はおいておいて,囲碁では定石の形が多く存在し覚えるだけでも相当大変である。

これはカードバトル化したのが画期的と言える。意味や状況が分からなくても手持ちのカードから選ぶだけで成立するのである。囲碁では白黒同数の配置で形が整理するのでこれは非常にうまい使い方である。

 

具体的には19路盤面を4分割し左奥,右手前を自分側(毎回白番な気がする)の定石カードを設置することで対局初期局面がスタートする。右奥,左手前には相手の定石カードが設置されておりそれを参考にすることで後手側が有利な印象である。

印象とゆるい表現にしているのは私の棋力不足で全く有効になっていないのが原因であり,本来はここが唯一かつ一番の棋力の見せ所である。

カードが4枚並ぶとそこから「自動対局」がはじまる。途中で中間評価が行われ優勢などと言われるが結局は終局しないと勝敗は決しない。

ということでカード2枚並べるだけで19路の囲碁をやった気になるという簡単設計に驚いている。

 

以下,中間評価のRound1の盤面である。

 

「踏ん張りどころ」とか言われているが見ているだけなのですることがない。まぁ簡易的にやってる感だけ体験できるのもハードルを下げるのに非常に有用なのは間違いないので普及の起爆剤としては面白そうだ。

実際オセロや囲碁将棋は見ているだけで慣れるしなんとなく急所を覚えていたりするので間違いない。

 

で,これAI開発者視点から見ると指定局面の自動対局なので親近感がある。

AI開発者的には見慣れた構図なので,この自動対局部分のAIちょっといじれないかなとか,このカードシステムをオセロや将棋など他のゲームにも応用できないかななどと考えていた。

 

カードを選ぶだけで何かをやった気になるというのは今のスマホゲームの緩さにもきっと合うのだろう。ヒットすることを期待しております。

 

TensorRT for RTX

TensorRT for RTXと言う技術がある。

TensorRTはNVIDIAの最適化技術であるが、ここでいうfor RTXの部分はどうやらPC向けと言う意味らしい。

既に使い込んでいるがそもそもはTensorRTはAI用のGPU向けで,一般消費者向けではなかったことを思い出すに至る。

pc.watch.impress.co.jp

 

6月リリース予定であったが相当な難産で遅れた。

上記記事には「DirectMLと比べて最大2倍のパフォーマンスが発揮できる」とあるが、役割もDirectMLに近い役割であるようだ。実際は一つ下のWindowsMLのレイヤーでTensorRTの技術を用いてカジュアルに最適化を図る。性能面での他社に対する差別化であり、更新頻度やバージョン互換・ファイルサイズが大きいなど一般向けでないTensorRTの普及版といったところだろう。

TensorRT for RTX Documentation — NVIDIA TensorRT for RTX Documentation

 

blogs.windows.com

WindowsMLの方が難産でその煽りをくった形と思われる。こちらのGAが遅れに遅れ9月である。

 

で、NVIDIA側の公式配布がこちら。バイナリとソースのそれぞれである。

TensorRT for RTX Download | NVIDIA Developer

https://github.com/NVIDIA/TensorRT-RTX

 

そして最も一般的な使われ方がonnxruntimeからの利用だが、今のところPyPiやNuGetでのバイナリ配布は行われていないらしい。

NVIDIA - TensorRT RTX | onnxruntime

 

ざっとWeb界隈を調べてみたところDirectMLに近い使用感でTensorRTに近いパフォーマンスが出ている模様。

自作WindowsアプリをTensorRTからTensorRT for RTXに移行してみた! #NVIDIA - Qiita

 

ファイルサイズも一般配布向けに抑えめである。

 

もちろん、AMDQualcommなどもWindowsML対応でパフォーマンスを出してくると思われるのでここから数か月楽しみな話題の一つでしょうか。

もちろんインテルも頑張って頂きたいところですね。そういえばArc Pro Bどうなった?

 

Windowsで自動タスク

UNIX系ならcronの話。

 

昔と違ってたのでメモしておく。

schtasks create | Microsoft Learn

 

コマンドラインからschtasksと打てば大体できるらしい。

GUIだと「コンピュータの管理」の「タスクスケジューラ」で管理できるがコマンドラインの方がオプションが細かい。

 

schtasks /create /tn "High" /tr "C:\work\go\high_process.bat" /sc minute /mo 5

今回のタスク、プロセス優先度を昇格させるバッチファイルを5分毎に実行させる。やりすぎ感あるがこれで一度やってみる。

 

それにしてもMSが自動翻訳に頼りだしてから誤訳を放置しているのはもう取り返しがつかないレベルなのね

---

 

Pythonプログラムの昇格は以下のようにインタプリタを昇格させたがこれで動いているみたい。問題は全インタプリタが昇格してしまうところだな。

PowerShell -Command "Get-Process -Name \"Python\" | ForEach-Object { $_.PriorityClass = \"High\" }"

 

---

11/9追記:

ミニPCに負荷をかけすぎたのか20日ほどで起動しなくなった

やはり長期運用設計のものでやるべきか

 

盆栽いじりの成果

先週盆栽いじりのようなものだと表現した。

floodgate近況(2025秋) - 48's diary

 

言い訳のつもりは無いがコンピュータ関係は大半独学で,特定のカリキュラムで学んだことは皆無である。もちろん,大学の授業にFORTRANの入門があったりはしたがそれ以外で学ぶものの方が先行していたので特に記憶に残っていない。

元は旧友の影響だろう。書籍の紹介などがアドバイスとして有益だったことを記憶している。

 

前回Go言語のプログラムがあまり強くなっていない件,Pythonのプログラムが少し高速化しただけのはずなのに結構効果的だったなどの話をしたが,この違和感の原因らしきものがわかった。

これらを投入しているPCは2年ほど前に購入したミニPCである。

floodgate近況(2023年7月) - 48's diary

温故知新(3年ぶりNaN回目,gpsfish計測編) - 48's diary

当時の記録だとCPUがインテルの1235UでPコアが2つしかないが,4GHz動作し結構なパフォーマンスをみせている。

ノートPCに比べ厚みがある分冷却性能が高いようである。

 

この状況がいつのまにか変わっていたらしい。今考えるとWindows11のアップデートでゲーム性能が落ちる話題と関連していたのかもしれない。

 

今回の件は具体的には省電力処理の問題であった。

上記の計測をしていたころは見ての通りの性能であったが,いつのまにか改良を施しても思ったほどレート向上が無いなという印象であった。リアルタイムで対局しているのをタスクマネージャーの動きも見ていたところ,ベースクロックも上がらずEコアにしか負荷が入っていないことを確認した。探索速度的には4分の1とか5分の1といった感じである。PコアEコア比が2倍,クロック比で2倍程度だろうか。いつのまにかEコアでブーストもされずに漫然と対局していたのだ。

 

理由はプロセスの実行時間と負荷だろう。対局時間に比べて待機時間の方が長い上にこの間無負荷である。サーバプログラムでもよくあることだがこういうプロセスは省電力モードで動かされる。Windows11もバージョンアップにつれてかどうか知らないが徐々にそういった動作をするようになったのだろう。

 

ということでAMDのCPUの方でも同じようなプログラムを投入してみた。こちらにはEコアが無いので少なくともそこは大丈夫なはずだ。

 

go_test12と13が1235Uのプロセスで13cがAMDの8840HSである。

プログラム的には若干違うものであるが基本構造や評価関数は同一である。
ちょっと大げさに出てるかもしれないが4倍のノード差があればレート200くらいは妥当な範囲と思われる。

 

せっかくの省電力ミニPCだが使いにくいものになったもんだ。