21B 参数 transformer 编译运行 Doom 渲染器,无需训练
开发者编写编译器将计算图转换为 transformer 权重,把 Doom 渲染算法移植进 21B 模型,在 B200…
一名开发者近日完成了一项颇为另类的工程实验:把经典射击游戏 Doom 的渲染算法完整移植进一个 210 亿参数的 transformer 模型中,全程没有任何训练过程。项目作者此前已经发布过两篇铺垫性帖子,本次是最终成果展示。
项目核心思路
与常规「训练大模型」的做法完全不同,作者没有用任何 Doom 游戏画面或渲染数据来训练网络。他编写了一款编译器,能够将任意计算图直接转换为 transformer 的权重矩阵。随后,他再把 Doom 的渲染算法改写成与该编译器兼容的计算图形式,最终产出一个标准 transformers 格式的 checkpoint。
这个 checkpoint 可以直接通过 Hugging Face 加载,无需启用 trust_remote_code 选项,因为它本质就是一个普通的 transformers 模型文件。用户只需向模型输入一段代表场景数据的 prompt,让它自回归生成至结束,输出便是一串简单的像素绘制指令(移动光标、绘制像素等),机械执行这些指令即可得到一帧渲染画面。
性能与规模
- 模型规模:210 亿参数
- 单帧消耗:3,614 个 token 的输入 prompt + 53,747 个生成 token
- 单帧耗时:约 40 分钟(NVIDIA B200 GPU)
- 宿主代码量:43 行 Python
作为对比,原版 Doom 在 486 处理器上即可达到 35 FPS;而该 transformer 版本在 B200 上仅能实现 35 FPD(frames per day),效率差距极为悬殊。作者也在文中自嘲这显然不是一个实用的渲染方案。
项目资源
项目取名为 torchwright,所有源码、编译器以及生成的权重均已开源:
- 技术博文:ood.dev/posts/doom/
- 模型权重:huggingface.co/physicsrob/torchwright-doom-e1m1
- 编译器源码:github.com/physicsrob/torchwright_doom/
虽然该方案在实用层面毫无意义,但它展示了一种有趣的可能性:只要能用计算图描述,任意算法都可以被「编译」进一个固定的 transformer 架构之中,而无需梯度下降。对于关注模型权重作为通用计算载体这一研究方向的人而言,这是一个值得了解的工程实验。
