用WebGPU自定义内核求解Poker

Solving poker in custom WebGPU kernels

用WebGPU自定义内核求解Poker

过去一年,我一直在研究Poker求解器。商业求解器昂贵,我想做一个开源、可在浏览器中运行的版本。但WebGPU缺乏类似PyTorch的通用张量库。2026年,我让Codex基于PyTorch参考实现,生成了自定义WebGPU内核。经过一夜优化,速度提升超10倍。这让我意识到:当代码生成廉价且可验证时,通用库的抽象代价可能不再划算。如今,LLM能独立实现论文算法、调优超参数,但我仍是规划与判断的核心。项目代码已开源,求解器可在holdem.computer体验。

当生成变得廉价且可验证时,通用库的权衡就会反转:一个只做我所需计算的自定义内核,能胜过通用库。
  1. patrickhulin

    我想构建一个能近乎免费托管的扑克求解器。这意味着它必须在客户端运行,而浏览器端最好的技术就是 WebGPU。我想要的张量库当时并不存在,但在大模型时代,我们有时根本不需要库。我让 Codex 将我的数千行 PyTorch 代码转换成自定义 WebGPU 内核,并附带了等价性测试。随后,Codex 又花了几天时间对这些内核进行优化。

    你可以在 https://holdem.computer 使用这个求解器,源码位于 https://github.com/phulin/poker2

  2. ryanto

    哇,太棒了,读起来也很过瘾。我有几个喜欢用来测试求解器的“测试点”,你的求解器在这些点上表现完美。

    > 一种更现代的方法是对每个局面进行“重新求解”,限制搜索深度,并在深度截断处使用神经网络作为近似函数。

    这听起来非常有趣,我很想多了解一些。几年前我写过一款求解器,它的工作原理是缩减整棵博弈树。那东西很慢,而且无法处理翻前(preflop)局面。听起来这种“重新求解”的方法允许在不构建巨大博弈树的情况下进行翻前求解?

  3. noname123

    问所有职业玩家一个问题:对于 6 人或 9 人桌的扑克,求解器真的能解决所有局面吗?还是说排列组合实在太多了?

    我的另一个问题是,人类玩家现在是如何适应 GTO(博弈论最优)玩法的?就像在其他游戏中一样,人类已经适应了新策略——我很好奇在扑克中是否有办法利用 GTO 求解器的弱点(例如,如果你将对手的牌型范围设定为 GTO,然后去追逐那些极端情况)。另外,扑克社区的公平玩法检测算法是否足够好,能像国际象棋社区那样抓出使用求解器的玩家?还是说只要稍微做点偏离就能轻松规避?非常感谢!

同日更多故事

2026-07-30