WCSC31(第31回世界コンピュータ将棋選手権)、二次予選、やねうら王は予選敗退しました。
やねうら王は、初戦で昨年末の電竜戦で優勝したdlshogiを後手番で下し、次にHEROZの計算資源をふんだんに使えるという噂のPALも同じく後手番で下し、私は気持ちよくお昼寝して起きたら、そのあと連敗してました😅
どうやらAWSのp4インスタンスのメモリ1.1TBを使い切って、コンソールから応答返ってこなくなったらしいです。nps(探索速度)が本家dlshogiより出るように頑張ったのに、それが仇となって、1.1TBのメモリを使い切って死ぬとは。
第2局でも終盤で4秒ぐらいで指すはずのところで大長考をしているので(コンソールからの応答もなし)、よく第2局で勝てたなという感じ。
そのあと私はお昼寝してたんですけど、フリーズすると困るのでオペレーション担当のMizarさんは、やねうら王を以前の探索部のソースコードに戻して対局させてたらしいんです。以前のやつは、まあ最新の探索部より少し弱く、それでもフリーズは改善されずだったので、まあ連敗もやむなしかなと。
私が起きたのは第8局前なんですけど、とりあえずメモリ使用量を抑える設定で運用しました。第8局は大優勢ながら320手までに決めきれず、320手ルールにより引き分けとなりました。まあ、これ決めきれなかったのは手数が短いほど良いという学習をさせていないので仕方ない意味もあります。棋力計測の自己対局の時に、引き分けを0.5勝0.5敗として扱うべきかもしれませんね。
さて、メモリを大量消費する件について、プログラムのわからない人から「それくらい普通気づくだろ?」と言うツッコミのようなものが聞こえてきてますが、これにはいくつか理由があって、
・Windows環境では問題なかった(たぶん本番環境のコンパイラ側のランタイムが絡む問題)
・本番環境(A100×8)、わりとお値段するので気軽にテストできない/十分にテストできない
・本番環境での環境構築が直前になった(AWSではなくGCPを借りられるなら借りる予定だったので)
・オペレーション担当が別の人だったので気づくのが遅れた
・直前まで探索部を修正していたので、本番環境でのメモリテストなどできてなかった
などがあります。単なる設計上の問題ではなく、もうちょっと色んな要因の絡む問題です。
まあ、プログラムのわからない人から「メモリ足りないことぐらいすぐに気づくだろ、バーカバーカ」などと罵られても仕方ないかも知れませんが、そう簡単な問題ではないんですよね…。
メモリはドンマイです
というか1.1TB使い切るってバケモノですね
圧倒的nps!強い!強いぞ、やねうら王!そして強くしすぎて予選敗退!
// 明日のYahooニュースの見出し、こんなんでどうっすかw
『今のはアグレッシブに取りに行った結果だ。』
by スラムダンク
どんまい
当日の朝8時ごろまで改良のためにソースコード書いていて(その結果はやねうら王のGitHubにあります)、それが完璧動いていたので自己満足度は100%です。
dlshogiよりメモリ消費激しいんですか?
WinTypeをfloatからdoubleに変更してます。これによりdlshogiより少しメモリ消費量は上がっています。メモリ消費量が上がる問題とは別に、C++のランタイム側、deleteさっさとして欲しいのにどんどんnewされるのでそれが追いついていない可能性があります。詳しい原因についてはまた後日調査したいと思います。
まあ、DLわからない人から「(プログラミングを何もわからない人であってもRTX 3090搭載PCが1台あれば)前大会の優勝ソフト(水匠)に+R400スタートライン、バーカバーカ」などと罵られても仕方ないかも知れませんが、そう簡単な問題ではないんですよね…。