最近,开发者 bigattichouse 分享了一个有趣的实验:让 Qwen-0.6B 这样的小模型在推理过程中生成并执行 WASM 代码,从而获得确定性的计算结果。
这个项目的灵感借鉴了人类思维。在关于 AGI 与 LLM 智能的讨论中,“世界模型”的概念变得越来越重要。就像人类接球时大脑会建立物理模型一样,AI 模型也需要某种形式的世界建模能力。但对于 Qwen-0.6B 这样的超小模型,连基础数学计算都容易出错,更别说进行复杂推理了。
从思考标签到代码执行层
最初的尝试是在模型中加入 <think> 和 <model> 标签,让模型先思考再生成 Python 代码:
<think>I need to calculate 15% of 200...</think>
<model>
result = 0.15 * 200
print(f"15% of 200 = {result}")
</model>
<requires>python:math</requires>
这种方法有效,但需要在模型和外部工具之间来回切换,效率不高。作者意识到,如果能让代码生成成为推理过程的一部分,而不是外部调用,效果会更好。
WASM:完美的沙箱计算环境
WebAssembly 成为了理想选择。它简单、天然沙箱化,可以在任何地方运行。作者改造了 Qwen 模型,让它能同时处理自然语言和 WASM 代码:
User: Calculate 12 * 7
Assistant: <think>I need to calculate 12 * 7...</think>
<wat_model>
(module
(func $compute (param f64 f64) (result f64)
local.get 0
local.get 1
f64.mul))
</wat_model>
<computed>84</computed>
关键创新在于,这不再是工具调用,而是推理过程的一部分。模型在生成 token 的同时执行 WASM 代码,计算结果直接注入到上下文中。
多层 WASM 架构
训练过程中,作者创建了三个“WASM 层”,类似于视觉模型中生成图像的层。有趣的是,这三层最终各自专门化了不同的运算:加法、乘法、减法,形成了某种“计算专家混合”模式。
模型使用类似 Flamingo 的交叉注意力机制来生成 .wat 代码,然后通过评分系统选择最佳结果。整个过程发生在推理期间,不需要外部 API 调用。
实验结果:接近但未完美
经过 30 轮训练后,模型在计算 12×11 时的表现:
Layer 3: 144.000000 (multiply) [score: 3.80]
Layer 7: 132.000000 (multiply) [score: 3.44] # 正确答案
Layer 11: SKIPPED [score: 3.07]
正确答案 132 出现在第 7 层,但注意力机制选择了得分更高的第 3 层结果 144。作者表示这很接近了,只需要扩大训练数据集和优化选择机制。
技术验证
作者让 Gemini 审查了代码,得到的总结证实了设计意图:项目将 Qwen 改造为多模态模型,能够同时处理自然语言和 WebAssembly 代码。当识别到计算任务时,使用交叉注意力机制生成相应的 .wat 代码,经过评分、编译后在 wasmtime 沙箱中安全执行。
更大的图景
作者认为,AGI 可能会从当前的世界模型研究中发展出来,但这不意味着 LLM 毫无价值。LLM 将成为机器的自然语言接口,就像 GUI 取代 CLI 但没有让 CLI 消失一样。
通过让 LLM 显式地添加模型和工具调用能力,结合 RAG 系统来回忆和评分模型,我们可以构建基础的世界模型来解决可计算的问题。虽然不如潜在的 AGI 聪明,但能大幅减少可计算任务上的幻觉。
项目代码:https://github.com/bigattichouse/worldmodel
关注“鲸栖”小程序,掌握最新AI资讯
本文来自网络搜集,不代表鲸林向海立场,如有侵权,联系删除。转载请注明出处:http://www.itsolotime.com/archives/18246
