人間将棋

この土日の天童市で3年ぶりに人間将棋が行われた。

www.ikechang.com

 

開催アナウンスがあったときに一瞬「駒」応募しようかと思ったが,職業柄年度替わりに体調リスクは取れない。大人しくニコ生で観戦することにした。

 

 

人間将棋は駒ひとつに人間がひとり付く都合,棋士は全ての駒を一度は動かすのがマナーとされている。阿久津先生は盤上が熱戦になり過ぎてひとつ動かせなかったようだが,昨日の竹部女流四段は手待ちっぽく18香とひとつ手損して保険をかけて笑いをとっていた。

まぁ,勝ち負けよりも二人で全駒が動く棋譜を作る共同作品といった趣の方が強いのかもしれない。前例を見る限り対抗形(特に振り飛車側)の方が全駒動かしやすい風には思われる。

 

ということで,人間将棋ベースでふと思いついた。

全駒動かすノルマ付きの将棋である。

勝者は全駒動かした後でしか勝ってはならない。

 

敗者の駒を動かすノルマを敗者のみに課すのか,両者の全駒が動くことを勝者のノルマとするのかはちょっと考えたい。

前者であれば勝ち局面を作ってから全駒を動かすような勝ち方があるかもしれないし,敗勢になった側はそれを阻止する自爆テロ的な手筋が出るかもしれない。

後者のルールでは米長玉の形で玉より先に香車を取らなくてはならないという過酷なルールとなるだろう。

 

う〜む,どっちも歪んでるね。

MacのBashの話

やねうら王のMacビルドを生成していたが,シェルスクリプトでの自動生成がうまくいっていなかった。

随分手間取ったのだが原因がやっと判明した。

理由を列挙する。

 

  1. シェルスクリプト連想配列実装はシェルによって異なる
  2. MacのデフォルトシェルはZsh
  3. Bash連想配列実装はバージョン4から
  4. Bashの最新版は5.1
  5. 最新のMacBashバージョンはなんと3.2

 

1は仕方ないとしよう。

シェルスクリプトとして特定のものに依存する命令は私は使いたくない。

 

2も仕方ないとしよう。

個人的にMacOSを使いたいわけでもZshを使いたいわけでもない。

M1に興味があるだけだ。

 

3,4は歴史的経緯だ。仕方ない。

5はApple何してるんや!?Pythonも割と最近まで2.7よね。

 

ということで手元のMacBashビルドしてアップデートかけた。

埃まみれのビザボックスマシンを弄った学生時代を思い出した。

スクラッチ勢の行方(その2)

え~っと,どこから続いているかスクラッチのシリーズです。

前回バージョン10cでfloodgateレーティング2200を超えた辺りでした。

 

bleu48.hatenablog.com

 

上記が昨年7月なので随分間が空いていたんですが,地味にちまちま更新しております。

前回で若干の高速化と前向き枝刈りを導入しました。バージョン10は地味にaからfまであります。

PCによりますが250~300knpsくらい出て初期局面ならサクッとdepth7くらいまで読めます。

Go言語でインラインアセンブラとか無いのでビットボード実装する気になれません。これくらいで勘弁してください。

 

そこから,null move reductionやLMRなどを調整した上で,伝家の宝刀マルチスレッド導入しました。Lazy SMPでも良かったのですが置換表へのアクセス権を真面目にロックしてやるとどうも遅いみたいなので,みんな大好きYBWCから試してみました。一度はスクラッチ実装してみたいアルゴリズムですよね。

スレッド分岐は多層版と一層版を作ってみたのですが多層版は相当の並列度が出ないとどうやら足をひっぱるようで,並のPCでは一層版の方が強いみたいです。テスト機8コアとかありますが並列度安定せず低い感じです。

というわけで,floodgateレートで2500超えてきました。

 

対戦数も少なく周辺のレートが若干安定感無いですが,Yss1000kが近づいて来たのははじめてです。恐らく基準維持の意味で投入されているので中身は変わってないと思っています。

ちなみにシングルファイルで2000行近くになってきました。

YBWCの都合,探索部がほぼ完全に二個あります。

 

ところで,ねね将棋iPad版が2000くらいに居ますね。今後の伸びが楽しみです。

---

追記:

 

囲碁のルールその3

囲碁の方もぼちぼちですが理解が進んでいるところです。

前回のネタは一年以上前。

 

bleu48.hatenablog.com

 

近頃の流行はぷよ碁。

puyogo.app

 

それから,twitterで紹介いただいた書籍。

 

辞典の方は基本的な用語も分からず雰囲気で囲碁をやっていた分には要らなかったのですが棋書を読んだり囲碁フォーラムを拝聴するのは必要かと思い入手しました。恐らく普通に囲碁やる人は問題なく知ってることなのでしょう。

 

今回の本題,ルールの本は実に面白い本でした。王銘琬九段は非常に気さくな台湾出身の棋士で,UEC杯の大会では審判長をされていたので少しは知っている気になっておりました。

この本はそういう関係も含めた過去の経緯などから執筆されたもののようで,コンピュータ囲碁の歴史も含めて書かれてあり,単にルール解釈のみならず歴史的な部分が非常に面白いものでした。とくに最近流行りのぷよ碁のようなルールも古代の囲碁であったのではないかという話です。結果的には考え方,打ち方が同じになって目的意識が固まり現代のルール整備となった経緯など実にためになりました。

日本ルール実装が難しい点を差し引いても,日本ルール贔屓になるには十分な理由があるのですね。解像度という表現をされた部分もあり十分な棋力がないにも関わらず何か分かった気になります。またしばらく期間をおいて読み返す予定にしておきます。

 

ぷよ碁では負けなくなったので,Remiさんのみんなの囲碁の九路盤はぼちぼち弄っています。私はしばらく九路でいい気がしています。

ーーー

追記:

丁度同日に詳しい説明をされている方がいたのでリンク貼っておきます。

 

note.com

---

追記:

その2は使用済みだったので3に変更

bleu48.hatenablog.com

メモリ規格のメモ(DDR5移行への雑記)

インテルがAlder LakeをリリースしてDDR5メモリの入手困難さが話題になった。

DDR4対応もしているので特別な場合以外は困らないが一応数%パフォーマンスに差が出るようである。未発売のモバイルCPUでもスペックシートを見る限り同様のようである。

次世代のRaptor LakeでもDDR4・DDR5両対応が明記されている。実際どう対応されるか分からないが少なくともチップセットやソケットで互換があるのでそのまま使えそうである。

 

一方,スマホ界隈はメモリ交換などが無いため世代交代に際してユーザが意識せずDDR5化していくようだ。(正確にはLPDDR5)

 

次に,AMDであるがこちらは年内リリース予定のZen4世代では完全にDDR5のみの対応となるらしい。また,まもなく世に出るZen3+とRDNA2のAPU(所謂6000番台)もDDR5のみの対応との話だそうな。(DDR4対応との表記が極僅かあるが誤記と読む筋が有力)

とすると低価格帯はどうなるのかというと旧来モデルを微修正,リネームしたものを出してDDR4対応商品として出すらしい。加えて要注意は,ややこしいナンバリングをするから気をつけろってことだ。ただ,インテルとの争いが激化している今なので相当の廉価は間違いないだろう。

 

で,今どうするかだが新規に上位マシンを購入予定で少し待てるなら待ってDDR5へ行った方が良さそう。それ以外ならまだDDR4でいいんじゃないかくらいの感じだろうか。

DDR5も初期なので今後まだまだ性能を上げてくることが予測されるのでそれほど騒ぐこともないだろう。

 

 

3年前にDDR4メモリを32GB搭載したノートPC(Ryzen 5 2500U)のヒンジが破壊したのでメモリとSSDの移植先を検討中である。第一候補Ryzen 5 5625U級かな

 

minmaxとMCTS

以前,将棋AI界は丁度αβ型とMCTS型が均衡している非常に貴重な時期にあるという話を書いた。

 

bleu48.hatenablog.com

 

電竜戦の広報イベントとしては成功したと言ってよいだろう。

呼称としてαβ探索と言うのが日本では普及しているが,実のところminmax法がその原理的な根源であり,αβ法はその枝を刈る手法と学術的には認識されているため分類としての枠組みはminmax法を呼ぶのが正確である。MCTSの方も,もはや確率的な意味でのモンテカルロ法から逸脱しており,PV-MCTSと呼ぶのが主流と言ってもモンテカルロを名乗らない方がいいと言う案にも説得力があるような状況である。じきに時代が評価を決めるだろう。

将棋AIの現行モデルでは両者とも深層学習モデルで局面評価を行うのだが,前者は比較的軽量なモデル,後者は比較的重厚なモデルとなっている。

 

ところで,昨年末から以下の書籍の関係で簡便に深層学習モデルを扱うインフラが出来てる。

python-dlshogi2で遊ぼう - 48's diary

強い将棋ソフトの創りかた(その2) - 48's diary

 

これらはもちろんPV-MCTS型の探索なのだが,一度簡単にこの評価モデルでMINMAX法を使ってみた。

αβと言いたいところだが,実際GPUを使ったバッチ処理だと一局面ずつ評価するより多少無駄でも多くの局面を一気に評価した方が高速に処理可能であるためバッチ評価する完全なMINMAX法を実装した。

 

で,結果floodgateに放り込んだところ,一手読み(depth1)でレート1600,二手読み(depth2)でレート2300程度を得た。

Player Statistics

 

 

古典的なMINMAX法の他のものと比較して局面評価性能が抜群であることは分かる。重厚なモデルの価値があるというところだろう。

しかしながら,三手読みまでMINMAX法で行うと中終盤で数分程度かかるためfloodgateでは二手読みで止めてある。

何かしらの改良が出来れば三手,四手と読んでみたいとは思っている。

---

参考に,Bonanzaのdepth10でレート2600,技巧2のdepth8か9で同等とされているらしい。depth3か4くらいで追いつけたら面白いかな。

UEC杯(第13回)

先日第13回UEC杯コンピュータ囲碁大会がありました。

 

entcog.c.ooco.jp

 

性懲りもなく参加しましたが,結果は上記リンクの通り11位ということになりました。

同じ言い訳をなんども書くのはアレなのですが準備不足が酷いです。ほとんど改善点がないまま一年になります。

もう少し手が回ればAリーグ戦えそうな気もするのですがねぇ。

勝ち負けに関わらずこの手のコンペは他の参加者との交流が楽しいです。未経験で一度やってみたいと思っている人は未熟でも早めに飛び込んでみるのが吉です。

ちなみに,昨年初参加のUEC杯とCGFオープンのリンクも載せておきます。

 

bleu48.hatenablog.com

bleu48.hatenablog.com