Doom 在 LLM 上运行——包含 Hugging Face 检查点
摘要
一位开发者使用自定义编译器(torchwright)将 Doom 的渲染算法移植到 transformer 权重中,创建了一个未经训练的 LLM,它通过发出绘图命令来渲染 Doom 帧。检查点已在 Hugging Face 上提供。
这里面完全没有训练。我使用自己编写的编译器(torchwright)将 Doom 的实际渲染算法移植到 transformer 权重中——每一个权重都是计算出来的,没有一个是学习得到的。提示词携带关卡几何、玩家位置和视角方向;生成过程输出绘图命令;一个 43 行的主机程序将它们转换为像素。原版 Phi3ForCausalLM 架构,可在标准 transformers 中以 trust_remote_code=False 加载。两个检查点:
- 320x200(文章中的那个):21B 参数,85.87 GB。一帧由 3,614 token 的提示词加上 53,747 个生成 token 组成——在 B200 上耗时不到 40 分钟。
- 80x50:相同的提示词格式,相同的纹理,下载大小 34 GB。这才是真正值得尝试的那个。
一个坦诚的声明:我没有在本地运行过这个模型——我一直使用的是云端 GPU(B200 和 A100-80)。我的编译器目前要求权重使用 fp32 精度,我还没有探索量化。对于 80x50 模型,我建议使用 80 GB 的 GPU 显存;理论上 64 GB 应该也能运行,但我没有试过。
文章:https://ood.dev/posts/doom/
权重(80x50):https://huggingface.co/physicsrob/torchwright-doom-e1m1-80x50
权重(320x200):https://huggingface.co/physicsrob/torchwright-doom-e1m1
源代码:https://github.com/physicsrob/torchwright_doom
相似文章
我将Doom的渲染器编译成了一个21B参数的transformer——完全无需训练 [P]
该项目使用自定义编译器将Doom的渲染算法编译成一个21B参数的transformer,无需任何训练。生成的模型可以生成Doom的渲染帧,尽管在B200 GPU上速度较慢,仅为每天35帧。
在正则表达式引擎上运行《DOOM》
一位开发者演示了如何使用正则表达式引擎作为计算基础来运行《DOOM》游戏,每帧执行数百万次替换。
56,000行DOOM代码,用我自创的语言编写
作者构建了一种名为bet的玩笑编程语言,通过LLVM编译,采用基于区域的内存管理,并且成功运行了完整的DOOM游戏(56,000行代码),无需代码审查,仅依赖测试。
DOOM, Emacs
一位开发者使用原生模块和Canvas API补丁,将经典游戏DOOM移植到Emacs中运行,需要自定义修补的Emacs构建版本和一个WAD文件。
构建Clang后端并将Doom移植到我的自定义字节码虚拟机
作者复活了他的自定义字节码虚拟机(UVM),并借助AI解析文本LLVM IR构建了一个Clang后端,成功将Doom移植到该虚拟机上。