2022年8月近況

基本的には日記なのでたまにはこういうタイトルで書き始めてもいいかな。

 

8月はオープンセミナーがありました。

オープンセミナー2022@岡山

2008年から年一で一般向けにやっている講演会で今年15回目になります。

当初は雑多な勉強会として場を提供するというのが私のコンセプトでした。

もちろん面白いことをやってる人を発掘して皆に聞いてもらうのが主目的です。

当初は私も色々なネタを話しましたが,若い人がどんどんアイデアを出すようになってからは完全に裏方で受付をしたり弁当を発注したりLANのアクセスポイントを立てたりですね。展示会場の準備などもした年もありました。

昨今はコロナ禍でオンライン化しており,配信技術等がない私はもはや困ったときに過去の例で何をしたか語る長老の役割でした。半分隠居ですね。

今年の講師陣も皆が頭を悩ませながら面白い話を集めてくださいました。動画公開されていると思いますので是非見てやってください。今年もすごく面白い話ばかりです。

 

 

また,個人的に雑に作っているスクラッチエンジンを手入れしてました。

スクラッチ勢の行方(その2) - 48's diary

今回弄っていたのは詰将棋エンジンで,以前は5手詰や7手詰くらいまでを秒殺するくらいには完成していたものを更に手入れしました。

現状では13手詰,15手詰くらいを実用的な速度で解きます。加えてUSIプロトコルにエラーが出ない程度には対応しました。とはいえ,ここから先は真面目に(計画的に)アルゴリズムを考えたりメモリ利用を意識してやらないと辛そうです。

現状twitterで流れてくるようなものはほぼ対応できるので個人的には満足の域です。

クラッチ勢で参考にするものがなくてもチビチビ改良していれば何とかなるものです。

 

それから比較的遊んでいるPCで計測を進めておりました。

といってもfloodgateに放り込む程度の雑な感じです。

 

二番絞りの精度の話(2022年版) - 48's diary

softmaxの温度について - 48's diary

非GPU勢DL組 - 48's diary

非GPU勢DL組その2 - 48's diary

今年の二番絞りが昨年より意外によくなってる点は上記の通りですが,非GPUでも昨年そこそこ行けた感の部分も計測してみました。

二番絞りの3b_8tが3ブロック評価関数のCPU8スレッドで,40b_8tが40ブロック評価関数のCPU8スレッドです。ええ,GPU無しです。

3ブロックは手持ち最軽量なのでCPUでも数千npsを誇ります。しかしながら,終盤は酷いもので技巧と争うのがやっとのようです。

40ブロックは以前のネタでもありましたが,1スレッドで11npsがやっとのところなので8スレッドでその8倍出ない感じですね。一瞬90近い数字を見ることができたくらいです。これが3600台ですね。3700近い数字を見たこともありますが落ち着くのはこんなところです。私がコンピュータ将棋を始めたころのトップ集団(技巧やelmo)が8スレッドでこの辺でした。昨年はGTX1060があれば技巧と競るかもとか言う話ですから隔世の感ですね。

 

おまけに上位陣も掲載しておきます。

nibanshibori_v05_RTX3060が今年の二番絞りの別バージョンです。

選手権バージョンとあまり変わりませんね。

安く手に入れたノートPCでこのレベルは立派です。プロ棋戦の棋譜解析でも問題なさそうなレベルですね。

 

最後に12900Kのテストです。

前ネタ的にはここら辺ですね。

Alder Lakeでやねうら王ベンチ(その2) - 48's diary

Alder Lakeでやねうら王ベンチ(その3) - 48's diary

ハイパースレッディング考察2022 - 48's diary

某所の12900Kの連続運転テストが主眼でしたので,適当に水匠のやねうら王配布バイナリで16スレッドと24スレッドで放り込みました。16スレッドはPコアEコア全部に1スレッドずつになります。

suisho5_12900K_16t ,suisho5_12900K_24tですが,大差ないというオチになります。

以前放り込んだKristallweizen_12900Kの長期レートが4181でほぼ同じくらいです。

水匠5の計測はお初でした。シングルバイナリ配布なのでユーザも多く利便性は高いですね。

 

昔話(MP3エンコード編)

その昔,MS-DOSからシリアルポート経由でモデムを通じ,一般のアナログ電話回線を用いることで通信を行っていた時代があった。
PCの画面とは黒く分厚いブラウン管に浮かび上がる白く固定サイズの25行の文字列である。
ネットワークのコミュニケーションはホストと言われるマシンに電話回線で接続することにより行われていたが,主流であったホストは時間課金制または短時間無料といったものであった。

 
その中で私はMPEGと言うものを知った。
DVDで使われるMPEG2でもハンディビデオで主流のMPEG4でもなくその前の規格である。(うろ覚えだが流行らなかったフォーマットのVideoCDだっけ?)
オーディオ部分を取り出すことでMP3と言うのがその数年後流行るが,当時のi486ではリアルタイム再生は困難であった。
そこで私はMP2を主流に扱うことにした。手持ちのハードウェアでリアルタイム再生が可能であったからである。
音質はAMラジオが上手にチューニングされた程度といったところである。
これでもエンコードにはリアルタイムの10倍程度の時間を要した。
3分強の歌謡曲は1MB強のファイルへ変貌し,辛うじて一枚のフロッピーディスクに収容することが出来た。

 

その数年後,比較的普及したレベルのPCでMP3がリアルタイム再生可能となる。
また,専用のデコーダハードウェアが開発され安価な再生機が量産された。
当時でもエンコードにはリアルタイムより数倍長い程度の時間を要しており,世間のPCの多くの時間を費やした。
エンコードベンチマークサイトでは様々な条件でその速度を競っており,私も身近なものを使い一度だけトップランクを記録したことがある。
しかしながら,不正扱いとしてすぐに削除された。理由は分からないが当時のハンドルネームに実績がなかったからであろう。
すぐに午後のコーダと言う優秀なエンコーダがトップを取り自分も争わずそれを使うことになった。
SIMD演算との出会いであり敗北である。

 

近い時期にスパコンFFTを実装するコンペがあったのでエントリーしたことがある。邪悪であるが本題以外で様々なベンチマークを計測するのが主目的であったので結局下から2,3番くらいで敗退した気がする。トップは専門分野の大学院生でそれを修正したものが実際のスパコン用のライブラリに採用されるらしいとの話を後に聞いた。こういうのも良い経験である。出来れば表彰の場に行きたかったが当時情報系の学会とは何の縁もなかった。

 

随分前に下書きしたものだがちょっとした切っ掛けで思い出したので加筆して晒す。

当時動画系はライセンスがうるさくて自作ソフトも捨てハンドルネームで流通させた気がするがあまりに古くて覚えていない。誰かが記録を取っていれば思い出すかも。

softmaxの温度について

前回,二番絞りが恐ろしく高精度になってる話をしました。

ニューラルネットの出力だけで高段者クラスの将棋が出来てしまいます。まさに「ソフトウェア2.0」感ですね。

 

bleu48.hatenablog.com

 

ところで,ニューラルネットの出力では多クラス分類モデルを使いますので,指し手の候補数ある数値が最大となる指し手を選択します。

多クラス分類ではSoftmax出力として総和が1となるように処理するのが一般的ですが,この際温度0に対応するのが、ポリシー(最大値)指しでした。

これでfloodgateレーティング2355ですね。

 

温度1にしてSoftmax確率分布を得て、この確率分布に比例した乱択モデルをfloodgateに流したところ、相当弱くなったはずですが一応レーティングが付いて1800~1900くらいになっています。(長期レートだと約2000)

温度0だと常に同じ局面で同じ手になるため同様の挙動のエンジンとは全く同一棋譜を量産することになるのでこういった試みをしてみました。

 

弱体化しても案外将棋になるもんですね。

floodgateにこんな棋譜がありました。

coduck_oci_1c vs. nibanshibori_policy_probability (2022-07-30 08:00)

coduckが頓死するんですが,9手詰めしている方は一手も探索してないんですよ。

 

さらに温度を変更し,簡単に手元集計してみました。

vs LesserKai 1.5.0で20戦集計します。

温度0:20-0

温度1:18-2

温度2:16-4

温度2.2:10-10

温度2.5:4-16

温度3:3-17

温度5:0-20

 

ということで、適当に調整するとLesserKaiと互角まで弱体化することが可能です。

この,温度2.2をfloodgateに放り込んでみました。

Player Statistics

様々な報告でLesserKaiのレートが700程度であるとされていますが,本レートは1300ほど出ています。周辺の対戦相手にもよるのかもしれませんね。

 

参考に,山下さんがSoftmax温度を変更することでAobaZeroの弱体化について計測されています。

温度2.2でレートが1000ほど下がるってのは定量的に合っているようです。

コンピュータ将棋や囲碁の掲示板 過去ログ2021年版

---

追記08/16

最初だけ少し乱択にしておけば適当に散るって話をしていたので,ちょっとテストしてみた。

nibanshibori_pp_vtが短期レート2118,長期レート2156

nibanshibori_pp_vt2が短期レート2360,長期レート2381

前者は温度10/手数で,後者は1/手数。

前者の初手付近はほぼフラットな乱択で戦型と言える駒組でないが,後者は初手78飛など振り飛車込みでそこそこ多彩な駒組を見せている。

いずれにしても探索していないので深い探索をしているものには負けるのだが,それにしてもレートが高い気がする。特にvt2は乱数入れてないやつよりちょっと上のレート付いてるのが面白い。ほぼ誤差にしても弱くなっていないと言うことだろう。

何故か丁度相性が悪くなっている相手が居るみたい。

 

二番絞りの精度の話(2022年版)

昨年以下のような話になっていました。

非GPU勢DL組その2 - 48's diary

二番絞りの計測集計(第31回選手権分) - 48's diary

 

要約すると一手につき評価関数を3回呼ぶだけでアマ三段クラス。

恐らく最高精度の評価関数だろうという話でした。

 

3回というのは最低ラインを模索した結果ですね。1回や2回では終盤詰めきらず全く勝てない状況でした。

 

それが今年は随分と変わりました。

 

全くの探索なしでfloodgateでレーティングが付いています。

nibanshibori_1pがレート2355ということで少し上にうちの地ビールやYSSなどが居て、すぐ下にcoduckが居ます。

dlshogi_pre32_p1やDLSuisho0も同様な試みっぽいですが、レート差は100以上ありますね。

15年ほど前ですが初参加優勝したBonanzaの初期バージョンがこのくらいのレーティングとの話もあります。アマ高段者クラスと言って良いんでしょうか。

全くの探索なしでここまで来たと言うことです。隔世の感がありますし、そもそも探索なしって意味わかりませんよね。

 

わけがわからない。

 

他にも10手以上の即詰みを指しているんですが、当然読み切ったということではなくその場その場で指し手を選んだものが続けて見ると即詰みだったということです。

なんか哲学的な感じもしますが、これならもっと長手数も詰められるのかもしれません。

何か色々遊べそうな気がします。

電竜戦TSEC3ファイナルの結果

決勝と言わずファイナルと言うのは参考にしたTCECの影響何でしょうか?

もちろん,この土曜日が電竜戦TSEC3ファイナルの日のことですが,USIプロトコルというのがコンピュータ将棋界で広く使われるプロトコルってのが界隈にプチウケした理由ですね。

 

ちなみにうちの予選のまとめは以下です。 

bleu48.hatenablog.com

 

公式の動画配信は以下です。

佐々木先生,竹部先生,それに講演の白鳥先生ありがとうございました。

 

www.youtube.com

 

そしてファイナルの結果。

電竜戦TSEC3指定局面戦【ファイナル】【第一部居飛車部門】(9回戦) 勝敗表

電竜戦TSEC3指定局面戦【ファイナル】【第二部相振りファイナル部門】(9回戦) 勝敗表

電竜戦TSEC3指定局面戦【ファイナル】【第三ネタ部門】(6回戦) 勝敗表

電竜戦TSEC3指定局面戦【ファイナル】【第四部対抗系部門】(9回戦) 勝敗表

 

二番絞りの戦績だけ記録すると,居飛車部門4位,相振り部門2位,ネタ部門3位,対向形部門2位でした。

総合3位と予選と同じ順位ですね。賞状と賞金が頂けるそうです。

最後の対向形部門で1位が取れたら逆転2位だったのですが惜しいところでした。

 

既に予想されていたことですが,本ルールの課題局面問題ですと局面評価精度が生かせず,探索ノード数が多い方が有利と分かりやすい回答となりました。

ただ,想定以上に評価が難しい局面があったり大きな逆転があったりと時間をかけて精査した方が良い棋譜が沢山生成されたように思います。

個人的に公式YoutubeよりABEMA見てたので動画も後ほど見てみたいと思います。

 

次にB級リーグです。こちらは上記ファイナルのおまけ的ポジションで,予選落ちの人達にも同じ局面を体験してもらうというものです。オンライン戦ならではの余裕ですよね。

うちからは予選13位M1白ビールと予選25位地ビールYBWCがエントリーしました。

M1白ビール居飛車部門7位,相振り部門12位,ネタ部門6位,対向形部門3位でした。

地ビールYBWCは居飛車部門19位,相振り部門16位,ネタ部門20位,対向形部門18位でした。

全体的にはソフトの実力とマシンパワーの両方を兼ね備えたたぬきチームが上位を独占してましたが,ネタ部門のkoronがch∀g∀m∀を押さえて1位だとか対向形のM1白ビールが3位だとか部分的には下剋上があった感じです。

上位独占のお陰でM1白ビールが僅か2ポイントですが同率総合4位となりました。

省電力の薄型ノートPCにしては結構やりましたね。

B級の順位は特に表彰されたりしません。

 

電竜戦TSEC3指定局面戦【B級】【第一部居飛車部門】(9回戦) 勝敗表

電竜戦TSEC3指定局面戦【B級】【第二部相振りB級部門】(9回戦) 勝敗表

電竜戦TSEC3指定局面戦【B級】【第三ネタ部門】(6回戦) 勝敗表

電竜戦TSEC3指定局面戦【B級】【第四部対抗系部門】(9回戦) 勝敗表

 

まぁ,見てのとおりB級の下位は不戦敗などトラブルが多いことが分かります。単純に強い弱いではなく安定して動くと言うのも必須条件となりますので,作ったものを本番でテストするのかテストして持って来るのかくらいの気概の差が見られたと思っています。

 

電竜戦TSEC3予選の結果

関係者、参加者の皆様お疲れ様でした。

それに加藤清麗、あらきっぺさんも深夜まで対応ありがとうございました。

電竜戦TSEC3指定局面戦 勝敗表

 

www.youtube.com

 

 

私は公式Youtube配信後ABEMAトーナメントの方が終わった段階で寝てしまいました。今朝見る限り一部に異常や不戦敗が見当たりますが全体としては無事終了したように思います。

フルオートで対戦が進むのは、裏番組視聴者的には助かりますね。

ゆっくりと棋譜をご堪能下さい。

 

23日のファイナルには上位4チームが進出します。他のチームは希望すればBリーグが予選と似たシステムで同じ局面から戦えますので開発者も満足の仕様です。

ファイナルには佐々木勇気七段と竹部さゆり女流四段が来て下さるそうですので盛り上がりそうな予感がします。

第3回電竜戦TSEC3指定局面戦 --中継サイト--

 

で、運営側としてはそんな感じですがプレイヤー視点にしてみますと今回エントリーしたものは以下の3つになります。

 

二番絞りは5月の選手権モデルです。マシンはi9のCPUにRTX3090を2枚刺したうちのメイン開発機を投入しました。深層学習モデルが大きいので20knpsに届くか届かないくらいの探索速度です。

こいつがなんと3位に入りましてファイナル進出です。

上にはdlshogiと水匠ですが、A100x8とc6a.metalですのでモンスターマシンですね。

 

M1白ビールは2019年に公開して連盟モバイルや毎日新聞Youtube朝日新聞Youtube、もちろんニコ生将棋などでも利用されている例のアレです。このBlogでも紹介しましたが、M1搭載のMacBook Airでエントリーしました。以下にありますが、実質4コアの省電力PCでファンレスのため高負荷の連続運転にはやや不安がありました。

無事13位で完走したようなので普通に検討など使う方も問題ないんじゃないでしょうか。

連盟モバイルの勝率表示の件 - 48's diary

M1Macのベンチマークの一件 - 48's diary

 

地ビールYBWCは2019年からGo言語でスクラッチ実装しているエンジンの最新型です。Go言語自体も習作と言っていいくらいなのでコードが下手なところから徐々に上手に書けるようになってきているのが自分でもわかります。根本的に小さいループを高速に回すような数値計算には向いてないので探索速度は出ません。Pythonほどは酷くないにしても現状で300knpsあると良いくらいでした。これにYBWC(Young Brothers Wait Concept)という少し古い並列計算アルゴリズムを実装したのが本作になります。

結果的に多コアのCPUには随分負荷が入るようになりましたが探索深さはさほど増えていません。10年くらい前までは多コアを上手に使えてなかったと言うのを体感しました。

今回は34エントリー中25位とまずまず狙った辺りの結果でした。

Go言語雑感 - 48's diary

Go言語将棋の進捗 - 48's diary

Young Brothers Wait Concept - Chessprogramming wiki

スクラッチ勢の行方(その2) - 48's diary

 

ということで個人成績は3位、13位、25位と想定よりちょっと良かった印象です。

局面と対戦相手の当たり方には組み合わせ運がありますので、ラッキーがあったと考えるのが適当かと思います。

 

それでは皆様ファイナルでお会いしましょう。

ー--

追記:

今回8回戦の以下の局面がちょっと荒れた感じになりました。

と金が多すぎて最新の評価関数でも対応外なんでしょうかね?

 

 

 

AI超え

AI超えとは将棋界でよく使われるようになった言葉ですが,実際のところ全然超えてないのは明白なのですが(以下略)

 

ちょっと録画したまま放置していたNHK杯囲碁を見ていましたら,正真正銘のAI超えがありました。

 

6月19日(日)放送依田紀基九段と辻󠄀篤仁三段の一戦ですが,52手目3の六に放り込んだ局面。

棋譜再生 - NHK囲碁 - NHK

 

直前まで互角の戦いをしていたはずの評価値が一気に後手に振れました。

75%まで行っています。

この場面で普段からAIを利用した研究を行なっていると思われる解説者も聞き手も非常に珍しい手であることと同時にAIの挙動も珍しい現象であると述べています。

一般的には最善手を指して動かない,それ以外の手では程度次第ですが少し下がるのが通例です。指した側が上がるのは完全なAI側の読み抜けとなりますね。

 

通常モンテカルロ木探索では上位候補手を優先して探索するのですが,この候補手リストを作る部分が現在深層学習モデルです。この手を完全に読み抜けたということでしょう。

実際上の場面で3の六に放り込んだ白石はどうみても即取られる石です。

深層学習モデルでは探索以前に優先度を極度に下げられたのだと思われます。

とはいっても現在の計算機で人間スケールの持ち時間を使って抜けるのは非常に珍しいことです。

 

NHK杯の中継AIは山口さんの担当でAQだったと思うのですが,当時でも相当強いものであったと思います。それでもこういったことは起こるのですね。

もしかすると極度に低スペックなPCなのかもしれません。

NHK杯を全て見ているわけではないので,たまたまですが驚きました。

 

 

ところで,昨日は上野女流棋聖立葵杯も奪取されました。

藤沢さん相手でも大石取ってしまう剛腕は鳥肌ものですね。

棋力のない私でもすごいことが起こっていることが分かりました。

この二人すごいですよ。今後も注目です。