Doomformer 是一个将整数神经网络编译到 ZDoom 地图中的项目,它允许游戏引擎执行神经网络的计算。在这个系统中,游戏的内部机制被重新利用作为计算基底:“voodoo dolls”(由游戏生成的额外玩家实体)负责执行算术运算,而扇区光照水平和平面高度则用于存储计算出的结果。该项目通过将运行中的游戏读取到的每一个值与 NumPy 整数参考值进行对比,并保持零容差,来确保计算的准确性。
这张图片代表了 Doomformer 项目的核心概念,即神经网络的计算被映射到 DOOM 的内部机制上。
该机制依赖于游戏通过脚本和实体交互处理复杂逻辑的能力。这些“玩偶”执行每一个乘加运算、激活函数和比较操作。虽然玩偶负责核心算术运算,但 ACS(Automated Control Script)层级的脚本负责管理数据流,包括移动输入门、重置玩偶以及将结果从网络中复制出来。这种方法将游戏世界变成了神经网络架构的物理呈现,其中“权重”和“偏置”被编码到地图的几何结构和实体属性中。
虽然这种方法在技术上令人印象深刻,但其速度明显慢于标准的计算库。对于一个小型多层感知机(MLP),引擎运行时间大约比 NumPy 慢 23,000 倍,而包含调用过程的完整计时器甚至可能慢 65,000 倍。例如,在默认调度下,处理一个手写数字可能需要 163 秒的实时 DOOM 运行时间,不过通过特定的优化标志,这一时间可以缩短到 8 秒。该项目还包含一个“博物馆”地图,允许用户与网络进行交互,例如重新布线以实时查看这些变化如何影响输出结果。