Talus:23M参数扩散模型,浏览器WebGPU生成游戏地形

2300万参数扩散模型Talus在浏览器WebGPU上实时生成游戏地形,并引入真实-真实噪声基线评估框架。
Talus是开发者osfv发布的开源轻量扩散模型,仅有2300万参数,可在浏览器通过WebGPU约3秒生成64×64游戏地形高度图,对应现实4公里、1200米高差的地貌。模型支持地形类型与五项属性(海拔、起伏度、坡度、水域占比、频谱斜率)的任意子集条件控制,并以可学习的"unknown"嵌入实现灵活dropout。训练数据为45,000张程序化地形图,使用单张RTX 5060累计约4.5小时完成。项目最具参考价值的贡献是评估框架:将所有指标除以同组真实地图之间的距离,以"1.0即不可区分"为参照,使评分具备直观意义。当前测试集得分为度量1.51倍、频谱9.1倍、坡度1.65倍,高频细节仍是主要瓶颈。模型已以Apache-2.0协议开源,提供在线Demo。
一个仅有2300万参数的扩散模型,能在浏览器里通过WebGPU实时生成游戏地形高度图——这是开发者osfv发布在Reddit上的开源项目Talus。它不仅规模轻量,还引入了一套颇具参考价值的评估方法:用"真实地图对比真实地图"的噪声基线来衡量生成质量。对于关注小型扩散模型、程序化地形生成以及浏览器端AI推理的开发者来说,这个项目提供了不少值得拆解的工程细节。
模型做了什么
Talus生成的是64×64的高度图(heightmap),对应现实尺度约4公里范围、最高1200米的地形。生成过程可以由两类条件控制:一是地形类型,二是五项可测量属性的任意子集——平均海拔、起伏度(relief)、平均坡度、水域占比以及频谱斜率(spectral slope)。
这里的"任意子集"是个关键设计。每个属性都配有一个可学习的"unknown"嵌入向量,并在训练阶段被独立地随机丢弃,这样推理时无论用户指定哪几项、留空哪几项,模型都能正常工作。这种处理方式本质上是针对多条件的灵活dropout,让单一模型覆盖了从"完全自由生成"到"精确约束生成"的连续区间。
训练与数据:一张消费级显卡的实践
整个模型是在一张RTX 5060(8GB显存)上从零训练的,跨多个版本累计约4.5小时。这个数字值得注意,因为它说明在明确任务边界和合理数据规模下,扩散模型并不必然需要昂贵算力。
训练数据是作者用自己的程序化生成器产出的45,000张地图,生成管线包括fBm/ridged噪声、河流侵蚀(stream-power erosion)、坡面扩散(hillslope diffusion)和热侵蚀(thermal erosion)等地貌模拟算法。换言之,模型学习的是一套已有程序化方法的"统计分布",再用扩散模型将其压缩并泛化。
模型架构采用像素空间的U-Net、v-prediction目标、余弦噪声调度,采样用50步DDIM配合二次间距(quadratic spacing),并使用了强度为2.0的无分类器引导(classifier-free guidance)。这套配置在小模型里属于比较标准且稳妥的选择。
fBm(分形布朗运动,Fractional Brownian Motion)是程序化地形生成中最基础的噪声叠加方法,通过将多个不同频率和振幅的噪声层叠加来模拟自然界的自相似粗糙感。Ridged噪声是其变体,通过对噪声值取绝对值并翻转,产生类似山脊的尖锐形态。河流侵蚀(stream-power erosion)基于水流功率方程,模拟水流沿坡面向下侵蚀地表的过程,能产生树枝状水系和V形河谷;坡面扩散(hillslope diffusion)则模拟重力驱动下土壤颗粒的短距离位移,倾向于平滑陡坡、产生更圆润的山肩;热侵蚀(thermal erosion)模拟温度循环导致岩石破碎后碎屑向下堆积的过程,常用于生成碎石坡和塔鲁斯锥(talus cone,这也是项目名称的来源)。这四类算法组合使用,能够生成具有地质合理性的地形,而非纯噪声叠加的"假山"。用这类有物理意义的程序化数据训练扩散模型,相当于把显式的地貌规则隐式地压缩进了模型权重。
相对高度:解决平原过于"粗糙"的技巧
项目中一个有意思的工程决策是"相对高度"处理。模型并不直接生成绝对高度,而是生成被起伏度归一化后的地形形状,再由采样器把它放置到用户要求的平均海拔和起伏度上;当这两项未指定时,就从16张最接近的训练地图中借用。
作者指出,这一改动直接修复了平原地形颗粒感过重的问题——平原的距离比值从3.98降到了1.23。这说明把"形状"和"尺度"解耦,对小模型而言是一种有效的减负策略:模型只需专注学习地貌形态,而无需同时记忆海拔的巨大动态范围。
评估方法:对标真实-真实噪声基线
Talus最值得借鉴的部分,是它的评估框架。大多数生成模型评估缺乏一个"多好才算够好"的绝对参照,而Talus的做法是:把所有距离指标(25项逐图地形度量的W1距离、径向平均功率谱、高度与坡度分布)都除以同一个基准——两组互不相交的真实地图之间的距离。
这样一来,指标的含义变得直观:1.0意味着在当前样本量下,生成结果与真实地图已经不可区分。这个"真实对比真实"的噪声地板(noise floor)为评分设定了理论上限,避免了对绝对误差数值的误读。
评估流程也相对严谨:checkpoint在验证集上挑选,测试集只对最终选定的模型评分一次,并对照训练集检查是否存在记忆(memorization)。当前模型在测试集上的表现为:度量W1距离是基线的1.51倍,频谱9.1倍,坡度1.65倍。度量和坡度已经接近基线,但频谱距离仍有明显差距。
W1距离即一阶Wasserstein距离(也称"推土机距离"),衡量的是两个概率分布之间的最小"搬运代价"——直觉上,它计算把一个分布的"土"搬成另一个分布的形状需要移动多远。相比KL散度或JS散度,W1在分布不重叠时仍能给出有意义的梯度,因此在生成模型评估中被广泛使用。径向平均功率谱(radially averaged power spectrum)则是将二维傅里叶变换结果按频率半径取平均,得到一条描述地形在各空间频率上能量分布的曲线——低频对应大尺度地貌起伏,高频对应细小纹理与山脊线。频谱距离9.1倍意味着生成地形在高频能量分布上与真实地图差异显著,这正是山脊线和细节纹理失真的直接度量体现。将这些距离统一除以真实-真实基线,使得评估结果具备了跨数据集、跨任务的可比性,而非依赖于难以直觉理解的绝对数值。
浏览器端运行:WebGPU上的3秒生成
部署层面,Talus导出为ONNX格式,权重以fp16存储(加载时转回fp32),通过ONNX Runtime Web跑在WebGPU上,在作者的RTX 5060上约3秒生成一张地图,并提供CPU回退方案。
一个值得称道的工程细节是:作者用JavaScript重新实现了采样器,并验证其输出在参考样本上与PyTorch版本的差异控制在0.6米以内。这种跨语言数值一致性的校验,是把研究原型真正落地为浏览器产品的必要环节。项目已在 talus.tersa.tech 提供在线Demo,代码、权重与评分卡(scorecard)均以Apache-2.0协议开源在GitHub。
WebGPU是W3C制定的下一代Web图形与计算API,于2023年在Chrome中正式落地,旨在替代已趋老化的WebGL。与WebGL不同,WebGPU提供了计算着色器(compute shader)支持,使得通用GPU并行计算——包括神经网络推理——可以直接在浏览器中高效执行,而无需服务器端转发。ONNX(Open Neural Network Exchange)是一种跨框架的模型序列化格式,支持将PyTorch、TensorFlow等框架训练的模型导出为统一的中间表示,再由各平台的运行时(Runtime)读取执行。ONNX Runtime Web是其浏览器适配版本,能够自动选择WebGPU、WebGL或WASM后端。fp16(半精度浮点数)将每个权重从32位压缩为16位,存储体积减半,对WebGPU的显存带宽更友好;加载时转回fp32则是为了在计算阶段保持数值精度,避免小模型因精度损失导致生成质量下降。这套"fp16存储+fp32计算"的组合是当前边缘推理的常见折中方案。
尚未解决的问题
作者坦诚列出了几个开放难题:山脊线和最细的频谱带难以还原,山地生成得过于平滑,而平原又偏颗粒感。频谱距离9.1倍的高值正印证了这一点——小扩散模型在高频细节上普遍力不从心。作者也公开征询:如果有人在小型扩散模型上成功缩小过类似的频谱差距,希望能分享经验。
对开发者的启示
Talus的价值不止于"又一个地形生成器"。它示范了几件事:在明确任务下,2300万参数的小模型加消费级显卡就能得到可用结果;用真实-真实基线做归一化评估,比单纯报告损失数值更有说服力;以及把研究原型通过ONNX+WebGPU搬进浏览器的完整工程路径。对于想做轻量生成模型并真正交付给用户的人来说,这是一份细节扎实的参考案例。
相关推荐

黑人觅食者Alexis Nelson:从觅食到出书,快乐零食别死
黑人觅食者Alexis Nikole Nelson做客Talks at Google,分享从童年跟随母亲认识植物到出版食谱书《Happy Snacking, Don't Die!》的旅程,揭示美国觅食兴衰背后的种族与土地历史。

如何有效呈现你的想法:三种揭示式演讲方法
揭示式演讲是传递想法最直接的方式。本文解析奇妙漫步、动态演示和梦想图景三种演讲类型,结合David Gayo、Michael Pritchard、Sylvia Earle等经典案例,教你如何有效呈现想法。

Modern Web Guidance:让AI写原生声明式对话弹窗
Google Modern Web Guidance 让 AI 编程助手在生成代码时优先使用浏览器原生声明式 dialog 能力,替代重复的 JavaScript 事件监听,实测可显著减少样板代码。