返回列表

Niboshi's solution

643. FIDE & Google Efficient Chess AI Challenge | fide-google-efficiency-chess-ai-challenge

开始: 2024-11-18 结束: 2025-03-06 游戏AI AI大模型赛
Niboshi 的解决方案

Niboshi 的解决方案

作者: c-number (团队成员:daiwakun, KawattaTaido)
发布日期: 2025 年 2 月 19 日
竞赛排名: 第 10 名

我们最初采用了 Stockfish 4,然后是 Stockfish 16,最后由于内存限制选择了 Cfish。

我们的代码在此:https://github.com/chettub/Niboshi

NNUE

我们禁用了 HCE,完全依赖 NNUE 进行评估。

我们认为评估函数的准确性至关重要,因此寻找了一种对二进制大小高效的网络。

我们的最终网络灵感来自最新的 Stockfish 网络。为了节省大小,我们通过连接以下两个网络的输出来替换特征变换器。第一个是 CNN,输入通道为 12(=棋子数量),输出通道为 13,卷积核大小为 15x15,填充为 7,以便 CNN 可以为每个格子生成特征。第二个是密集网络,有 64 个输出,但它对相邻位置共享相同的权重。普通的密集网络将有 768 个输入,但我们的只有 96 个输入。

然而,我们忽略的一点是计算成本非常高;等效的 L1 大小为 896,太大以至于无法补偿 CNN 中共享权重造成的准确性损失。

至于训练数据集,我们混合使用了 Leela 生成的数据和 Stockfish 生成的数据,尽管我们在更改数据集时并未看到太大差异。

其他更改

  • 置换表:512 KiB
  • 使用哈希表存储延续历史:128 KiB
  • 使用 -O3 编译 nnue.c,其他文件使用 -Os
  • 删除未使用的功能,或对性能影响不大的功能

最后感言

我们很高兴能参加这次比赛。
我个人在参加这次比赛之前对国际象棋编程知之甚少,但从比赛中学到了很多在其他地方无法学到的东西。

祝贺前三名的团队。你们这些国际象棋引擎开发者完全当之无愧。

非常感谢组织者和参与者。感谢 @bovard在必要且仅在绝对必要时采取行动。特别感谢那些努力调试环境的人。

同比赛其他方案