返回资讯中心
外部精选
软件工程
#开发者实时流

1996年奔腾电脑上的国际象棋引擎能否击败卡斯帕罗夫?

来源标题:Could a modern chess engine on a Pentium have defeated Kasparov in 1996?

一篇分析文章探讨了1996年运行在奔腾处理器上的现代国际象棋引擎是否有能力击败卡斯帕罗夫。文章指出国际象棋引擎依靠每秒分析数百万个局面来超越人类,而棋力以Elo分数衡量,200分差距意味着强者胜率约75%。

Hacker News 最新n_u2026/11/2 · 今天20 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

等等,什么?!怎么可能?

要提升国际象棋水平,有三条路:分析更多着法、分析更好的着法,或者更好地分析着法。众所周知,人类棋手是靠后两条路进步的:普通特级大师在一盘慢棋中分析的着法数量,跟业余棋手差不多,但他们只分析最关键的那些着法,而且分析得更深入。像 Stockfish 这样的引擎跑在硅基上而不是人脑上,在第一条路上碾压我们,每秒能分析数百万个局面。而现代引擎在微优化上已经没有多少空间能让给定的 CPU 每秒多处理几个局面了,所以国际象棋 AI 的大部分进步也倾向于跟着人类进步的路子走,寻找更好的着法选择和局面分析方法。

国际象棋水平用 Elo 分衡量。200 Elo 的差距意味着强的一方对弱的一方预期胜率为四分之三,以此类推:400 Elo 的差距对应 90% 的预期得分,1000 Elo 的差距对应 99.7% 的预期得分。在 1996 年的普通硬件上能跑的最强国际象棋引擎,等级分大约 2300 Elo。Deep Blue 是 2700。相比之下,现代 Stockfish 接近 3700。

这就引出一个问题:现代国际象棋引擎的优势中,有多少来自现代台式机极快的速度,又有多少来自我们单纯把引擎编程得更好?事实证明,大部分 Elo 增益(总共 +1335 中的 +720)可以归功于更好的编程,而不是更好的硬件。

为了验证这一点,我做了两个实验。第一个实验用 Crafty,这是 1996 年的一款有竞争力的引擎,源码现在可以拿到。在我的 Pentium Pro 上,1996 年构建的 Crafty 11.13 版本在每步 1 秒时 Elo 为 1999 ± 90,每步 10 秒时为 2383 ± 77。在现代硬件(Ryzen 7)上,同样每步 1 秒,这个引擎的 Elo 大幅跳到 2614 ± 97。但如果我拿这个引擎,慢慢把我们关于如何设计更好引擎的全部知识加进去——加入 fail-soft、LMR、correction history 等现代搜索算法;加入更好的静默搜索方法;加入神经网络评估(NNUE)——那么在 Pentium Pro 上每步 1 秒时 Elo 可以提到 2718 ± 34,每步 10 秒时提到 2974 ± 74。

第二个实验走得更远一些:与其试着更新 Crafty,不如直接试着把 Stockfish——当今最强的国际象棋引擎——跑在 1996 年的硬件上,看看表现如何。这需要一些工作,主要就是重写代码,让它使用 32 位算术(PPro 是 32 位机器),并且不使用超过 64MB 的内存。这个朴素的移植版在每步 1 秒时 Elo 大约 2496 ± 64(每步 10 秒时 2940 ± 76)。但我们还能做得更好!现代 Stockfish 是为现代 CPU 设计的。通过对算法做一系列调整并针对 Pentium 调优,我们可以把它的 Elo 提到每步 1 秒 2846 ± 35,每步 10 秒 3109 ± 79,每步 30 秒 3180 ± 80。

概括以上所有内容最简洁的方式,就是让它们互相对弈 100 局。我这么做之后发现,跑在 1996 年 Pentium Pro 上的现代国际象棋引擎对阵跑在现代硬件上的 1996 年 Crafty 引擎,胜 78 局、和 17 局、负 5 局。本文余下部分提供细节。

说实话,硬件方面没什么好多说的。我买了一台二手(商品描述里写的是"复古";我感觉自己老了。)台式机,配的是符合年代的常规硬件。这台台式机运行 200 MHz 的 Intel Pentium Pro,接在 Intel VS440FX 主板上,配 64MB 66 MHz 的 SIMM 内存。操作系统从 1.44MB 的 3.5 英寸软盘启动,通过 Realtek RTL8139C 联网。我还接了一块 1MB 的 Trio64V+ 显卡,通过 VGA 连到显示器,输入来自 PS/2 键盘——但这两样我都不怎么用,而是通过一个串口与现代台式机通信。

对于那些可能无法恰当理解这套硬件的读者:200 MHz 的 Pentium Pro 在 1995 年 11 月发售时售价 1325 美元,四条 16 MB 的 SIMM 大约要 2000 美元。再加上其他外设,这台机器当时大概要四五千美元。所以它是一台不错的工作站,但绝不是超级计算机。不过,考虑到折旧速度和硬件的指数级进步,同样的机器在 1997 年——也就是第二场比赛举办那年——大概只值一千美元(因为几乎各方面都更好的 Pentium MMX 只要 400 美元了,谁还想买 Pentium Pro 呢?)

国际象棋引擎与互联网之间的接口,是一个定制的"操作系统",它唯一的职责就是启动国际象棋引擎并把它直接连接到网卡。(在整篇文章中,我说"我写了"的时候,真正的意思其实是"我让 LLM 写了"。我用的是 Fable 5.1、Opus 5.5 和 GPT-6 的组合。)它被设计得尽可能紧凑:这个操作系统(实际上它更像一个 hypervisor 之类的东西)放在一张可启动软盘上。它唯一的职责就是把 Pentium Pro 启动到 32 位保护模式,初始化网卡,然后等待进一步的指令。之后我可以把任意"用户态"客户程序发到 RAM 里,它就会启动并运行那个程序。我写的国际象棋程序会启动一个定制的 HTTP 服务器,等待收到的 HTTP 请求,请求中带有给定局面(以 FEN 字符串形式)

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →