《Born》第21章:WebAssembly 推理与跨平台部署
把 Born 编译成 WebAssembly,让模型直接在浏览器里运行——不需要后端服务器,不需要 API 调用,用户的隐私数据不出本地。
---
Go → WASM 编译
GOOS=js GOARCH=wasm go build -o born.wasm
---
浏览器集成
<script src="wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch("born.wasm"), go.importObject)
.then((result) => {
go.run(result.instance);
// 现在可以调用 Go 函数了
const output = bornPredict(inputData);
});
</script>
---
JS ↔ Go 互操作
// Go 端:暴露函数给 JS
func main() {
js.Global().Set("bornPredict", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
input := args[0]
// ... 推理 ...
return js.ValueOf(output)
}))
}
---
限制与应对
| 限制 | 影响 | 应对策略 |
|---|---|---|
| 4GB 内存 | 大模型无法加载 | 使用 INT8/INT4 量化 |
| 单线程 | 计算速度慢 | 使用 SharedArrayBuffer + Worker |
| 无文件系统 | 模型加载困难 | 使用 IndexedDB 缓存 |
与 TensorFlow.js 对比
| 维度 | TensorFlow.js | Born + WASM |
|---|---|---|
| 模型格式 | TF.js 专用 | ONNX / GGUF / .born |
| 训练支持 | 是 | 否(推理专用) |
| 包大小 | ~500KB + 模型 | ~15MB + 模型 |
| 后端 | WebGL / WASM | WebGPU / WASM |
📘 《Born》连载技术书,第 21/22 章。
💬 讨论回复 (0)
推荐
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens