跳到主要内容
返回时间线
PyTorch来源发表:

PyTorch模型不必转格式就能在浏览器GPU上跑:同一份.pte文件,解码比CPU路径快2–10倍

核心概要

ExecuTorch新增WebGPU后端,让PyTorch模型经torch.export导出为一份.pte文件后,直接在支持WebGPU的浏览器里用GPU推理,无需先转成GGUF、ONNX或TFLite等其它框架格式。此前在浏览器跑PyTorch模型通常要先做这种格式转换。在Apple M1 Pro的Chrome上,以4比特量化的Llama 3.2 1B和Qwen3-0.6B对比ExecuTorch自身的Wasm CPU后端(XNNPACK),预填充快4–7倍、解码快2–10倍。

AI-generated editorial illustration: ExecuTorch WebGPU: PyTorch Models on the GPU, in the Browser

深度剖析

PyTorch模型现在可以留在PyTorch工具链内,直接在浏览器里用GPU推理,不必先转成其它框架的格式。 此前在浏览器运行PyTorch模型,通常要先把它转换成GGUF、ONNX或TFLite这类其它框架的格式。 同一份.pte文件可在Chrome、Safari等支持WebGPU的浏览器中运行,底层分别落到Metal、Vulkan和D3D12。

模型只需用torch.export导出一次,运行时由WebGPU后端分配GPU缓冲区并把计算着色器派发进命令缓冲区。 导出环节由torch.export()与WebGPUPartitioner完成,计算以WGSL着色器表达。 动态形状通过按最大值分配缓冲区、每次派发重算工作组来处理,以支持批量预填充,运行时再把形状路由到专门的WGSL内核。

性能对照在Apple M1 Pro的Chrome上进行,比较对象是ExecuTorch自己的Wasm CPU后端。 两个后端使用相同的token ID,每个数据点取3次预热后5次运行的中位数,覆盖128到8K token的上下文。 WebGPU用4比特分组权重(组大小64)配fp32激活,CPU用XNNPACK的4比特权重配8比特动态激活,两者均以墙钟时间计时。

启示与展望

演示范围是支持WebGPU的桌面、笔记本和移动浏览器,模型以.pte文件经CDN在网页上提供,推理在浏览器沙箱内完成;性能对照限定在Apple M1 Pro的Chrome上,针对4比特量化的Llama 3.2 1B与Qwen3-0.6B。

该后端仍处于早期开发阶段,后续会继续提升速度与稳定性,并扩展算子、数据类型和模型覆盖范围;性能数字仅来自Chrome on Apple M1 Pro这一配置。