2026年7月31日(金)掲載 3,131本日 29
HN4213

WebGPUでポーカーの完全解析に挑む:カスタムカーネルによる高速演算

Solving poker in custom WebGPU kernels

patrickhulin約12時間前

議論

7
0patrickhulinスレ主42約12時間前

WebGPUのカスタムカーネルを駆使して、ポーカーのゲーム理論的最適戦略(GTO)の計算を高速化する手法についての議論です。GPUの並列処理能力を活用することで、従来のCPUベースの計算では不可能だった複雑なシミュレーションや解法をどこまで実現できるかを探求しています。

1patrickhulin約12時間前

ほぼ無料でホストできるポーカースルバーを作りたかったんだ。つまりクライアントサイドで動かす必要があるわけで、ブラウザの技術として最適なのがWebGPUだった。目当てのテンソルライブラリがなかったんだけど、今はLLMの時代だし、そもそもライブラリなんていらないこともあるよね。数千行あったPyTorchのコードをCodexに読み込ませて、パリティテスト付きのカスタムWebGPUカーネルに変換したよ。Codexにはそのカーネルの最適化に数日費やしてもらった。

2bluecalm約7時間前

「よりモダンなアプローチ」として、スポットごとに限られた探索深度まで再計算(リソルブ)し、その深さのカットオフ地点でニューラルネットワークを近似関数として使う手法があるね。Piosolverのような表形式のものも、GTOWizardのようなニューラルベースのものも商用ソルバーとして存在するよ。

PioSOLVERは抽象化もカットオフ関数も使っていない。許可されたベットサイズ以外に簡略化を一切行わず、ゲーム全体を解いているんだ。代償としてかなり大きなRAMが必要になるけど、メリットは非常に正確で、ハンドごとに完璧な結果を出せること(ハンドをグループ化しないからね)。

3beepbooptheory約7時間前

いやー、昔みたいにポーカーを題材にしたコンピュータサイエンスのブログ記事が読めるかと思ってワクワクしてたんだけど、まあ期待しすぎだったか。

4mncalc7約7時間前

https://jax-js.com/ を見てみるといいよ。JAXのかなり広い範囲をカバーしていて、すべてJSで書かれている。ブラウザ上でネイティブにWasmやWebGPUへコンパイルできるんだ。

5ryanto約6時間前

うわ、これはすごいね。読み物としても最高だよ。ソルバーの性能を試すための「テストスポット」をいくつか持ってるんだけど、君のソルバーはどれも完璧だった。

「よりモダンなアプローチ」として、スポットごとに限られた探索深度まで再計算(リソルブ)し、その深さのカットオフ地点でニューラルネットワークを近似関数として使う手法があるね。

これすごく興味深いな、もっと詳しく知りたいよ。数年前にゲームツリー全体を縮小して解くソルバーを書いたことがあるけど、遅かったしプリフロップは無理だった。この「再計算(リソルブ)」手法なら、巨大なツリーを作らなくてもプリフロップが解けるってことなのかな?

6noname123約6時間前

プロのプレイヤーたちに質問なんだけど、6人テーブルや9人テーブルのポーカーで、ソルバーは本当にすべてのシナリオを解き切れるのか、それとも組み合わせが多すぎるのかな。

もう一つ聞きたいのは、人間は今どうやってGTOプレイに適応しているのかってこと。他のゲームだと、人間は新しい戦略に適応してきたよね。ポーカーでもGTOソルバーを攻略する方法はあるのかな(例えば相手のボットをGTOレンジに設定して、ファットテイルを狙い撃つとか)。あと、ポーカー界のフェアプレイ検知アルゴリズムは、チェス界みたいにソルバーを使っているプレイヤーを捕まえられるレベルなの?それとも少しの偏差を作るだけで簡単に回避できちゃうのかな。教えてもらえると嬉しい!