书痴app纯净版
21.61M · 2025-09-22
在这个 “AI 生成内容(AIGC)” 盛行的时代,模型不像以前一样只在实验室里喝电、在服务器里冒烟了。它们迫切希望“上网冲浪”,直接驻扎在用户的浏览器里,为 Web 应用增添一点点灵性。问题来了:我们该用哪门“武功秘籍”把这些模型请进浏览器?
今天的擂台,就摆在两位“明星”之间:
torchscript
+ ONNX.js
+ WASM/ WebGPU 支持),还在走江湖的探索阶段。先问自己一个灵魂拷问:我们为什么要“拖家带口”把模型弄到浏览器?
当然,代价就是浏览器要“爆肝”:CPU、GPU 资源有限,模型太大就会让风扇尖叫。
.json
+ 二进制权重,或者从 TF SavedModel/ Keras 转换。打个比方:TensorFlow.js 就像是一条修得很直的高速公路,收费站多,但也有服务区和油站。
严格地说,没有一个官方的“PyTorch.js” 。目前社区常见的做法是:
所以,“PyTorch.js”更像是一支“联合战队”,需要几步转化才能落地。就像走川藏线:路美,但要翻山越岭、修车补胎。
import * as tf from '@tensorflow/tfjs'
// 加载已经训练好的模型
const model = await tf.loadLayersModel('/models/my_model.json')
// 输入张量推理
const input = tf.tensor([0.1, 0.2, 0.3, 0.4])
const output = model.predict(input)
output.print()
清清爽爽,浏览器 GPU 一键加速。
在 PyTorch 里导出模型(Python):
import torch
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, dummy_input, "model.onnx")
在 Web 端用 ONNX Runtime Web 或 ONNX.js 加载(JS):
import * as ort from 'onnxruntime-web'
const session = await ort.InferenceSession.create('/models/model.onnx')
const tensor = new ort.Tensor('float32', new Float32Array([0.1, 0.2]), [1, 2])
const results = await session.run({ input: tensor })
console.log(results.output.data)
这就是现实:PyTorch 部署到 Web,需要绕个大弯。
项目 | TensorFlow.js | PyTorch.js(ONNX 路线) ️ |
---|---|---|
成熟度 | 官方维护,更新频繁 | 非官方方案,碎片化社区支持 |
模型转换 | 原生支持 TF 格式 | 需 PyTorch → ONNX 转换 |
运行时 | WebGL / WebGPU / WASM | ONNX.js / WebNN Runtime |
易用性 | 一行 tf.loadLayersModel | 多步导出 + 配置 |
生态 | 丰富预训练模型、教程、demo | 模块化,学习曲线更陡 |
适合人群 | 希望快速上线 Web AI 功能的前端/全栈 | 坚守 PyTorch 训练全流程的深度学习研究员 |
就像在咖啡馆点单:
┌───────────┐ ┌───────────┐
│TensorFlow │ │ PyTorch │
│ (TF.js) │ │ (ONNX) │
└─────┬─────┘ └─────┬─────┘
│ │
快速加载模型 转换导出 ️
│ │
浏览器端 AI (AIGC Everywhere!)
21.61M · 2025-09-22
15.38MB · 2025-09-22
7.7M · 2025-09-22