第31回世界コンピュータ将棋選手権(WCSC31)に参加したよ!!
世界コンピュータ将棋選手権って何?
毎年ゴールデンウィークに行われる最強の将棋ソフトを決める大会. 特徴としてはマシン構成に制限がないこと.(過去に行われていた電王戦ではマシンスペックはすべて統一されていた) 例年川崎産業振興会館で開催されているけど今年はコロナのせいでオンラインになった. 今年で31回目(第30回はアイツのせいで中止)の由緒ある大きい大会. わかんなかったらとりあえずググればいいと思うの.
どんなソフトで出たの?
名前はponkotsu(色々準備できたらgithubのURL貼る)
ソフト名の由来はもし勝てたら負けたソフトor人はぽんこつに負けたってことになって悔しくなるだろうなあ笑って思ったからです(邪悪)
どんな技術突っ込(みたかった)んだかはアピール文書見てください.
さあ, こっから本文です!!
11月
電竜戦をやると聞き, 出てみたいなあと思いつつ色々調べて開発しようとするも間に合わなくて断念する. というかそもそもどのライブラリ使うかとか仕様が固まってなかった.
将棋ソフト制作、実は
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2020年11月4日
・やねうら王の探索部分はそのままお借りして評価関数だけオリジナルに変える
・cshogiのバックエンドを使って探索と評価関数を実装
っていう2つの案を平行で進めてたり進めてなかったりする…
うう~ん…
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2020年11月12日
これ電竜戦間に合わなさそうだぞ…
えー、ここでご報告なのですが申込日までにソフトが完成しなかったので電竜戦は参加を見送ります…ユルシテ…
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2020年11月15日
これからWCSCに向けて制作予定です…(WCSCには間に合わせたい
12月
学会発表で無事死亡
1月
卒論で無事死亡
2月
卒論発表終わってから嬉々として本格的に開発を始めるもlibtorchとcshogiの仕様にあまり詳しくないため開発が難航し大泣きする. てかこれ愚痴なんですけどlibtorchのことググるとpytorch出てくるのあれ何なんすか?pytorchとかいじって自称AIやってるいけいけエンジニアたちちゃんとlibtorchの記事も書けや*1 まあおかげで英語のドキュメント読むの苦にならなくなったりわかんなくなったらgithubのissueとかソースコード読んだりする習慣がついたのでね… クソ記事がでてこないというのもね…おっと, 誰かきたようだ…
3月
帰省したり諸事情で若干メンタルやられたりするものの一応進捗は生む.
AHC001に時間を吸われて進捗が虚無になる.
4月
4月末まで一切進捗を産まない*2*3.
4/18 に作業通話しながら一応動くものを完成させる.
将棋ソフト完成した!!!
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月18日
これでWCSC31間に合った!!! pic.twitter.com/4UytbA6KA7
4月末
弊研のボスにWCSC31出るんすよ~笑って言ったらめちゃくちゃ応援されたのでがんばって進捗を生む.
もともと探索機能を入れる予定はなかったけどABCで培った早解き力()*4でMCTSを実装する.
4/25
AHC002に出る.
ギリギリで提出した解で順位が上がったのでいいコンテストだった.
AHC002
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月25日
すべりこみ(終了42秒前)で2976257点
TLぎりぎりまでDFSをがんばる#AHC002
そういえばにゃにゃんくんだけでなくツカモさんにも勝ってた!!
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月25日
たまたまだろうけどやったね!!!!
最初は現在地から20手ほど先読みしたときにゲットできるスコアが1番大きくなる方向にすすめてく貪欲でやってたけど100万点付近で頭打ちになって泣いちゃった#AHC002
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月25日
ほぼ青パフォの水パフォで灰色から緑直前の茶色になってて大笑いしてる pic.twitter.com/X1Zu1Xwy8O
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月25日
4/29~5/2
盤面を特徴量ベクトルに変換するところでバグり散らかしてることに気づき格闘する.
5/2とか徹夜状態でバグと格闘して椅子の上で1時間寝たためか腰を痛める*5
うわあああああ
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月29日
バグ取れねえええええ
うえ〜ん
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年4月29日
バグ潰しやだよ〜
なんか駒得なのか駒損なのかわかってなさそうだなって思ったらやっぱりバグってた
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月1日
いやこれなんかバグってそうだな
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月2日
当日朝4時
前日20時とかに寝たので4時くらいに目が冷めてバグがないか確認する.
当日朝5時
MCTS周りでバグを見つける. 全俺が泣いた.
当日朝9時
ローカルでできる限りロールバックしてとりあえず動く状態(でいるつもり)のバイナリを生成する.
本番直前にバグが見つかって震えてる(一応動く状態のバイナリ生成しておいていま潰してる
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
1回戦(対ねね将棋)
生成しておいたバイナリがクラッシュして負ける. かなしい… 残った時間で朝発見したバグと格闘する.
2回戦(対こまあそび)
朝発見したバグと格闘しつつあっけなく負ける.
3回戦(対Aoba Zero)
開発者の方とお話しつつバグと格闘する*6 ponkotsuの飛車が単振動してるのみて「やっぱバグってますね~」って言われる.
4回戦(対きふわらべ)
たしかここらへんでお昼ごはんに納豆ご飯食べてたと思う. 史上初めてきふわらべが頭金打って勝つという歴史的快挙を達成する.
写真取っとこ( ^∀^) #kifuwarabe pic.twitter.com/wGgaYjN8V6
— むずでょ@きふわらべ第31回世界コンピュータ将棋選手権一次予選31位 (@muzudho1) 2021年5月3日
今回の選手権は何かが違う!
— カツ丼将棋@八段(24基準) (@katsudonshogi) 2021年5月3日
きふわらべが頭金で大勝利!
歴史の扉は開かれた#wcsc31 pic.twitter.com/9gHjWg2jwA
将棋わかんない勢なので、きふわらべが頭金した棋譜見ます
— 22 (@zwanzig_zwei) 2021年5月3日
きふわらべさん、金を取った瞬間に頭金で詰ましてるので、これは確信犯…きふわらべの夜明けや・・・
— 22 (@zwanzig_zwei) 2021年5月3日
敗者コメントだぞっ☆
きふわらべに頭金打たれて負けたの話題になってて草#wcsc31
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
5回戦(対Easy Shogi)
デバッグしながら見てたら千日手になったのでとりあえず全敗は免れて安心するが棋譜中継だとわいの反則負けになっててまじいい?ってお気持ちになる. 後でEasy Shogi側の連続王手による千日手ということで反則勝ちに. 初勝利!やったね!
千日手!!!
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
これで全敗は免れた!!!!https://t.co/AlA8Cpu238
あ、、、、
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
反則負けらしいです…#wcsc31
いや、反則勝ちです!!!!!!
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
初勝利!!!!!!!#wcsc31
なおこれでバグと格闘するモチベーションが消え諦める.
とりあえず勝てたからあとは惰性で…
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
ありがとうございます!!
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
かなり運が良かったです!!(ちなみに勝ったおかげで今やってるデバッグに対するモチベーションが消えました…
未来の自分へ
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
バグ潰しがんばれ
今の自分より
6回戦(対BFP)
バグつぶしを諦めて落ち着いてうちのぽんこつがポンコツっぷりを発揮して瞬殺されるところを見届ける.
7回戦(対A.I. AN shogi ver.1)
今度はちゃんと詰まして2勝目を上げる. やったね!
ちゃんと詰まして2勝目ってまじですか?#wcsc31https://t.co/DzUILhxsFr
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
ちなみに親に詰まして勝ったって報告したときの親からのコメントです.
ちくちく言葉は, やめようね笑
8回戦前
おなか空いたのでご飯を勝ってくる.
よるごはん勝ってきた pic.twitter.com/rkWn4ZtPaN
— JJ1GUJ@WCSC31一次予選28位 (@jj1guj) 2021年5月3日
8回戦(対山田将棋)
あっけなく順当に負ける.
最終結果
なんかソルコフ?の関係で28位フィニッシュ, 2勝勢ではトップの成績だった.
感想
正直全敗かな~って思ってたし1勝できれば御の字だと思ってたのでまさか2勝できるとは思ってもいませんでした!!某2冠の言葉を借りれば望外の結果, 僥倖ってやつですね!今回はとりあえず動いたから就活のネタにする*7&世界ランクをもらうっていうかなり軽くて薄いモチベーション*8で本当にやりたいことの1割もできてなかったので来年はやりたいことを全部出しきった状態で出ます!!
今後の展望
とりあえず探索がバグってるのでそこを潰して強くしたいです!あと, 今日やってた2次予選の棋譜とかみてここに追いつきたいってなったのでがんばりたいです!!
うっ…院の課題…
うっ…就活…
うっ…学会発表…
*1:書かれたら書かれたでくっっっっっっっっっそよみにくいクソ記事しかでなさそう
*2:大学院入学とか春アニメチェックするので忙しかったのでね… ところで今期は86とスライム倒して300年とVivyが好きです!!
*3:完全な愚痴なんですが弊所属, めちゃくちゃ名前長いしコンピテンス?とかいう変なやつを考えながら履修組まなきゃいけなくてむちゃくちゃめんどくさくてまじでクソ
*5:腰痛めたの人生で初めてだった
*6:なんか2080Ti 6台くらいつなげてたらしい. すげ~
*7:将棋AI作って世界大会でて2勝しました!!って言ったらちやほやしてくんねえかなあ
*8:本当は自分より強い状態で出したかったが無理だとわかった途端こんなに軽く薄く…ウッウ…