AI 快讯10亿盘棋局蒸馏Stockfish
模型上新

10亿盘棋局蒸馏Stockfish

2026-10-05T07:05:23.403Z
10亿盘棋局蒸馏Stockfish

一项新项目用 Gigafish 数据集中的 10 亿个棋局面,训练 ResNet/ViT 混合模型拟合 Stockfish 的价值函数。完整 39 亿局面数据集已公开,研究重点是让神经网络以更低成本近似搜索评估。

10亿盘棋局蒸馏Stockfish:3.9B数据集和模型权重开放

一名研究者近日公开了一个颇有意思的国际象棋项目:使用来自 Gigafish 数据集的 10 亿个棋局面,将 Stockfish 的价值函数蒸馏到 ResNet 和 Vision Transformer(ViT)模型中。项目同时开放了完整的约 39 亿个局面数据集,数据来自过去 37 个月的 Lichess 对局。

这项工作的核心不是再训练一个“会下棋的通用大模型”,而是尝试回答一个更具体的问题:如果 Stockfish 在固定搜索深度下给出一个局面评分,能不能训练一个神经网络直接近似这个评分,从而跳过一部分昂贵的搜索过程?

从目前公开的信息看,项目还不能被称为 Stockfish 的替代品,也没有足够的独立基准证明它在完整棋力上击败 NNUE 或传统搜索。但它提供了一条值得关注的路径:把强引擎的局面判断压缩成一个可快速前向推理的视觉模型,并把大规模棋局数据完整开放给社区。

国际象棋棋盘、Stockfish 搜索树与 ResNet/ViT 神经网络之间的蒸馏流程示意图

一句话看懂这个项目

Stockfish 价值函数蒸馏,是用 Stockfish 在大量棋局面上的评估结果作为监督信号,训练另一个神经网络直接预测局面价值。

传统的 Stockfish 并不是看到棋盘后立刻给出最终答案。它会从当前局面展开搜索树,分析候选走法、对手回应、后续变化,再通过评估函数给搜索节点打分。搜索深度越高,计算量通常越大,但判断也更接近真实棋力。

这个项目的思路则相反:先让 Stockfish 对海量局面进行评估,再让学生网络学习这些评估结果。训练完成后,模型不再逐层展开完整搜索树,而是试图从棋盘图像或结构化棋盘表示中,直接预测一个接近 Stockfish 的价值分数。

可以把它理解成两种不同的工作方式:Stockfish 像一名会逐步推演几十种变化的棋手,神经网络则试图把这些推演后形成的“局面直觉”压缩进参数中。前者更依赖运行时计算,后者更依赖训练阶段的数据和算力。

10亿局面从哪里来

Gigafish 是一个从大规模 Lichess 对局中整理出的国际象棋局面数据集,项目页面显示其完整版本包含约 39 亿个位置。

根据项目作者在 Reddit 上的介绍,数据来自 37 个月的 Lichess 游戏。训练实验使用了其中 10 亿个局面,而完整的 gigafish-3.8b-d10 数据集已经上传到 Hugging Face。这里有两个数字需要区分:

  • 训练实验使用约 10 亿个局面;
  • 公开数据集包含约 39 亿个局面;
  • 数据源是持续 37 个月的 Lichess 对局;
  • 数据集名称中的 d10 暗示其与固定深度评估设置有关,但仅凭数据集名称不能推断所有字段和生成流程;
  • 项目讨论的重点是 Stockfish 价值函数,而不是直接复制完整的最佳着法搜索过程。

这类规模在棋类机器学习中已经相当可观。一个局面通常不只是棋盘布局,还可能包含轮到哪一方走、王车易位权限、吃过路兵信息、半回合计数、评估值或其他元数据。39 亿个样本一旦以结构化格式保存,存储、随机读取、去重和训练吞吐都会成为实际工程问题。

因此,公开完整数据集的意义不只在于“数量大”。它还允许其他研究者检查数据分布、重新划分训练集和验证集、复现模型,或者测试更小的模型是否能在少得多的数据上达到接近效果。对于想研究棋类评估、神经网络搜索或数据效率的开发者来说,这比只发布几张效果图更有价值。

为什么要固定搜索深度

固定深度评估,是为了让模型学习相对一致的教师信号,而不是同时拟合不同搜索预算下的混合结果。

Stockfish 的评估值不是一个脱离搜索设置的绝对真理。搜索深度、节点数、时间限制、硬件、线程数以及局面本身的战术复杂度,都会影响最终结果。如果有些局面由 Stockfish 搜索 10 层,有些局面搜索 30 层,模型看到的就不再是单一函数,而是一组受计算预算影响的标签。

项目作者强调固定深度的重要性,原因就在这里。假设目标是学习“深度为 d 的 Stockfish 搜索会如何评估局面”,那么训练数据中的监督信号需要尽可能来自相同的 d。这样,学生网络拟合的是一个相对明确的映射:

棋盘状态 + 固定评估设置 → Stockfish 的局面价值

而不是:

棋盘状态 + 不确定的搜索时间 + 不确定的硬件条件 → 某个混合评分

这并不意味着固定深度一定更接近人类理解的“真实棋力”。它只意味着实验目标更清晰,结果更容易比较。对于蒸馏项目而言,教师信号的一致性往往比单纯增加样本量更重要。

Stockfish 的价值函数到底是什么

价值函数是把当前棋局转换成数值判断的模型,通常用来表示某一方在局面中拥有的优势或劣势。

Stockfish 的价值函数并不是简单地数棋子。一个局面中,白方多一个兵通常有优势,但如果白王暴露、后翼存在强制战术,或者这个兵会立即丢失,静态子力差就不够用了。

传统 Stockfish 评估会综合考虑多种因素,包括但不限于:

  • 子力:后、车、象、马和兵的数量及相对价值;
  • 位置:棋子是否占据中心、开放线、关键斜线或强势格;
  • 机动性:棋子可以控制和到达多少有效位置;
  • 王安全:王前兵型、潜在将军、攻击子力和防守资源;
  • 兵型:孤兵、叠兵、落后兵、通路兵和兵链结构;
  • 游戏阶段:中局和残局中,同一个棋子或兵型的价值并不相同;
  • 动态威胁:是否存在强制着法、战术打击或不可逆的局面变化。

在搜索过程中,评估函数更像搜索树的“仪表盘”。搜索程序不可能把所有分支都走到将死或和棋,因此它需要在有限节点处估计局面质量,再把这些估计向上回传,用于选择下一步扩展哪条分支。

项目作者提出的直觉是:如果固定深度的搜索已经在评估一个局面下方的局部树,那么神经网络也许可以学习这棵树折叠后的结果。模型并没有显式保留所有变化,但可能通过参数记住大量局面模式以及它们对应的价值。

ResNet 和 ViT 为什么要组合

ResNet 是利用卷积局部感受野和残差连接处理空间结构的视觉网络,ViT 则是通过注意力机制建模不同位置之间关系的视觉网络。

国际象棋棋盘天然具有二维几何结构,但它又不像普通图像。相邻格子之间存在局部关系,远距离棋子之间也可能通过直线、斜线、牵制和攻击产生联系。

项目作者观察到,单独使用 ViT 在训练初期理解棋盘的速度较慢,而 CNN 更有效。这个结果并不意外。卷积网络天然擅长捕捉局部和重复的几何模式,例如:

  • 兵链的连续结构;
  • 王周围的防守网;
  • 象在对角线上的控制;
  • 车在开放线上的活动;
  • 马对关键格的跳跃控制。

ViT 的优势在于全局关系。它可以通过注意力机制直接关联远处的棋子,例如一只车、一个被钉住的马和对方王之间的关系,而不必完全依赖多层卷积逐步扩大感受野。

但在棋盘任务中,ViT 也面临一个现实问题:棋盘尺寸很小,局面规则高度结构化,训练数据虽然巨大,却未必能让注意力模型快速学出基本的棋盘几何。如果模型还没有掌握“哪些棋子能沿直线攻击”“王不能走进受控格”等基础关系,就直接学习复杂的战略价值,训练效率可能不如带有明显空间归纳偏置的 CNN。

因此,项目最终发现 ResNet 与 ViT 的组合效果最好。一个合理的解释是,ResNet 负责快速提取局部棋盘模式,ViT 负责补充跨区域、长距离的全局关系。它类似于先用熟悉棋盘几何的模块搭好骨架,再让注意力模块处理远距离依赖。

需要强调的是,目前公开资料没有给出完整的模型配置、参数规模、训练时长、硬件消耗以及经过独立验证的 Elo 结果。所谓“效果最好”应理解为项目内部实验结论,而不是已经建立了可复现的行业基准。

它和 NNUE 是什么关系

NNUE 是 Stockfish 使用的一类高效神经网络评估架构,设计目标是在搜索过程中以很低的增量更新成本提供局面评价。

Stockfish 并不是完全排斥神经网络。近年来,NNUE 已经成为其评估体系的重要组成部分。NNUE 的关键特点是适配搜索场景:一次走子通常只改变少量棋盘信息,因此网络可以进行高效的增量更新,而不必每次从头处理完整局面。

这与本项目的目标有相似之处,也有明显差异。

| 对比维度 | 本项目的 ResNet/ViT 模型 | Stockfish NNUE | |---|---|---| | 主要目标 | 拟合固定深度搜索产生的价值函数 | 在搜索过程中快速评估局面 | | 输入特点 | 以棋盘状态为主要输入,具体编码取决于实现 | 针对增量更新和搜索流程设计 | | 推理方式 | 通常是一次完整前向推理 | 可利用走子前后的局部变化更新 | | 与搜索的关系 | 可能用于近似或辅助搜索 | 深度嵌入 Stockfish 搜索流程 | | 公开信息 | 目前缺少统一棋力和速度基准 | 已被 Stockfish 社区长期测试和迭代 | | 主要优势 | 架构灵活,便于研究视觉模型与蒸馏 | 搜索集成成熟,运行效率高 |

如果只比较“能不能快速判断一个静态局面”,ResNet/ViT 模型可能有研究价值;但如果比较完整引擎棋力,NNUE 的优势在于它不是一个孤立分类器,而是与剪枝、置换表、走法排序、搜索扩展和残局表等机制共同工作的系统。

换句话说,本项目要挑战的不是一个单独的神经网络,而是一个经过多年工程优化的搜索引擎生态。仅凭 10 亿训练局面,不能直接推出它可以替代 Stockfish。

这不是通常意义上的“数据集蒸馏”

模型蒸馏是让学生模型学习教师模型的输出或内部知识,数据集蒸馏则是构造更小的数据子集来保留原数据的训练价值。

本文项目更准确地说属于“知识蒸馏”或“函数蒸馏”:教师是 Stockfish 的价值评估过程,学生是 ResNet/ViT 网络,训练数据是大量棋盘局面及其教师评分。

它并没有把 39 亿个局面压缩成几千个合成样本,也没有证明一个极小数据集可以完全替代全部棋局。相反,项目使用了 10 亿个局面来训练模型,并开放 39 亿个原始规模的局面集合。因此,标题里所说的“把 Stockfish 价值函数蒸馏进 3.9B 数据集”,更准确的理解是:在数十亿局面上进行大规模教师信号蒸馏,并发布完整训练资源,而不是传统数据集蒸馏意义上的大幅删减数据。

这个区分很重要。数据集蒸馏关注的是“用多少样本仍然能训练出好模型”,而本项目关注的是“如何用海量教师标注,让神经网络近似一个搜索型评估器”。两者都叫 distillation,但优化目标不同,不能混为一谈。

开发者能从中得到什么

对开发者而言,这个项目最直接的价值是提供了一套规模足够大的开放实验材料。

第一,它适合研究棋类状态表示。开发者可以比较位棋盘、独热编码、棋子平面、带走子历史的输入方式,观察不同表示对评估误差和棋力的影响。

第二,它适合测试视觉架构。ResNet、ViT、混合 CNN-Transformer、轻量级 MLP-Mixer 或专门设计的棋盘网络,都可以在相同数据上比较,而不必从头生成数十亿个 Stockfish 标签。

第三,它适合研究数据效率。39 亿个局面并不意味着每个实验都需要使用全部数据。研究者可以构造 1%、5%、10% 和 25% 的训练子集,测试局面多样性、标签质量和采样策略哪个因素更关键。

第四,它适合研究搜索与神经网络的结合。一个小模型可以先快速筛选明显不利的走法,再把有限的搜索预算集中到复杂分支上。也可以让神经网络承担静态评估,把搜索用于处理战术和强制变化。

第五,它对边缘设备部署有潜在价值。如果学生模型足够小,并且推理速度明显快于固定深度 Stockfish 搜索,那么它可能适合棋类分析、教学软件、移动端棋盘或大规模局面筛选。不过,这一结论需要真实的吞吐、延迟、内存和棋力测试,不能仅凭项目描述确认。

仍然有几个关键问题没有答案

这个项目最值得关注的地方,也正是它目前信息不足的地方。

第一,标签和真实棋力之间存在差距。 固定深度的 Stockfish 评估是一个可学习目标,但它不等于无限深度搜索,也不等于人类或顶级引擎最终会认可的局面结果。模型可能学会复现教师在特定深度下的偏差。

第二,数据泄漏需要仔细排查。 Lichess 对局会产生大量相邻局面,同一盘棋的连续位置高度相关。如果训练集和验证集随机按局面划分,模型可能看到与验证样本几乎相同的前后局面,导致验证误差看起来很好,但泛化能力被高估。更合理的测试方式是按对局、玩家、时间段或局面族进行隔离。

第三,回归误差不等于棋力。 模型预测的数值与 Stockfish 标签平均相差多少,并不能直接说明它下棋有多强。一个模型可能在大多数安静局面上误差很小,却在关键战术局面上犯严重错误。最终仍需要通过对弈、战术测试、残局测试和不同时间控制下的 Elo 评估。

第四,搜索替代需要端到端测试。 即便神经网络单次推理更快,完整系统也可能因为候选走法生成、批处理方式、内存访问、线程调度或搜索树管理而失去优势。只有把模型放进实际搜索流程,比较每秒节点数、每步延迟、内存占用和对弈结果,才能判断它有没有工程价值。

第五,数据许可和复现细节需要确认。 Hugging Face 页面提供了数据集入口,但使用者仍应阅读具体许可证、字段说明和生成脚本,确认数据来源、标签含义以及是否允许商业使用。对于 39 亿规模的数据,下载完整数据、建立索引和复现实验也需要相当的存储和计算资源。

我的判断:研究价值大于现阶段产品价值

这项工作的研究价值是明确的:它把一个长期存在的工程直觉变成了可公开验证的实验问题,即神经网络能否用前向推理近似搜索树压缩后的评估结果。ResNet 在早期训练中表现出优势、ViT 在全局关系建模上的潜力,以及两者组合可能更有效,这些观察都值得进一步实验。

但从产品和引擎替代的角度看,现在下结论还太早。没有统一的模型权重说明、端到端棋力、推理延迟、显存占用、训练成本和严格数据切分,无法证明这套模型已经比 NNUE 更快、更强或更适合部署。

更现实的定位是:这是一个开放的棋类神经评估研究基线,而不是已经成熟的 Stockfish 替代品。它最可能先在三个方向产生影响:快速局面筛选、搜索前的候选走法排序,以及研究大规模教师信号如何被视觉模型压缩。

截至 2026 年 10 月 5 日,开发者如果对棋类 AI、模型蒸馏或神经搜索感兴趣,值得先从数据字段和评估协议入手,再复现 ResNet、ViT 与混合模型的结果。真正有说服力的下一步,不是继续堆叠训练数据,而是公开一套可重复的对照实验:相同硬件、相同时间预算、相同搜索设置下,比较蒸馏模型、NNUE 和原始 Stockfish 在速度与棋力上的差异。

参考来源

  1. Reddit:Distilling Stockfish on a Billion Positions, Full 3.9B Dataset Available,项目作者对训练目标、数据规模、固定深度以及 ResNet/ViT 实验观察的介绍。
  2. Hugging Face:Gigafish 3.8B 数据集,公开的约 39 亿棋局面数据集及其数据文件入口。
  3. GitHub:Stockfish 官方代码仓库,Stockfish 开源引擎的搜索、评估与 NNUE 实现参考。
  4. 知乎:数据集蒸馏有实用价值吗,关于数据集蒸馏、数据效率与评估挑战的背景讨论。

相关推荐

查看全部