你以为 AI 推理必须靠服务器?Safari 26 今天把这件事彻底变了
Safari 26 刚发布,四大浏览器全部稳定支持 WebGPU 计算着色器。浏览器端跑 AI 推理这事,从不可能变成了现实——而且实测 RTX 3060 上 4096×4096 矩阵乘法比 WebGL 快 8 倍,追到原生 CUDA 的 82%吞吐量。
2026 年,浏览器终于有了一个真正能打大规模并行计算的 GPU API。
WebGPU Compute Shaders 是什么
计算着色器(Compute Shader)是 GPU 上跑通用并行计算的东西,跟渲染管线是分开的。你不需要画任何三角形,只需要把计算任务扔给 GPU 的 thousands of cores 并行处理。
WebGPU 用 WGSL 作为着色器语言,语法相对简洁:
@group(0) @binding(0) var<storage, read> input_a : array<f32>;
@group(0) @binding(1) var<storage, read> input_b : array<f32>;
@group(0) @binding(2) var<storage, write> output : array<f32>;
@compute @workgroup_size(64)
fn main(@builtin(global_invocation_id) id : vec3u) {
let index = id.x;
if (index < arrayLength(&input_a)) {
output[index] = input_a[index] * input_b[index];
}
}
JavaScript 端调用也不复杂:
const bufferA = device.createBuffer({
size: Float32Array.BYTES_PER_ELEMENT * size,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
});
const bufferOut = device.createBuffer({
size: Float32Array.BYTES_PER_ELEMENT * size,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC
});
const dataA = new Float32Array(matrixA_flat);
device.queue.writeBuffer(bufferA, 0, dataA);
const encoder = device.createCommandEncoder();
const pass = encoder.beginComputePass();
pass.setPipeline(pipeline);
pass.setBindGroup(0, bindGroup);
pass.dispatchWorkgroups(Math.ceil(size / 64));
pass.end();
device.queue.submit([encoder.finish()]);
实测性能:WebGPU vs WebGL vs CUDA
第三方实测数据(sitepoint.com/johal.in):
| 矩阵规模 | WebGL | WebGPU | 提速倍数 | vs CUDA |
|---|---|---|---|---|
| 512×512 | 32ms | 20ms | 1.6x | — |
| 1024×1024 | 180ms | 45ms | 4x | — |
| 2048×2048 | 820ms | 130ms | 6.3x | — |
| 4096×4096 | 3.8s | 470ms | 8.1x | 82% |
4096×4096 矩阵是 ML 推理的常见输入规模。8 倍提速意味着你以前要等 3.8 秒的操作现在不到半秒就跑完了。和原生 CUDA 比,WebGPU 1.2 单精度浮点能达到 82%的吞吐量——对 Web API 来说已经是可以接受的生产级性能。
这个性能来自几个地方:GPU 天然擅长 SIMD 并行,矩阵乘法这种 O(n³) 操作非常适合 thousands of cores 并行处理。WebGPU 计算着色器不经过 DOM 渲染管线,减少了 CPU-GPU 通信开销。Safari 26 的 Metal 性能在 Apple Silicon 上也达到了接近原生的水平。
浏览器端 AI 推理的现状
WebLLM(webllm.mlc.ai)是目前最成熟的生产级方案,已经支持 Mistral-7B、LLaMA-3.1-8B、Phi-3-mini 等模型在浏览器本地运行。搭配 WebGPU 计算着色器,可以做:
本地推理:数据不上云,隐私敏感场景可以直接在用户设备跑 ML 推理。实时图像处理:GAN 生成、风格迁移、图像增强这类计算密集任务。物理模拟:刚体碰撞、流体动力学,多物体并行计算。数据可视化加速:大规模数据集的聚类、降维、FFT。
适用场景判断
不是所有场景都值得从服务器迁移到浏览器。判断标准:
需要 GPU 吗?计算着色器只适合大规模并行任务,小计算量反而增加 overhead。用户设备有 WebGPU 吗?caniuse.com 显示全球 ~90% 覆盖率(Chrome 113+/Firefox 121+/Safari 16.4+/Edge 113+)。数据能放客户端吗?涉及隐私的数据必须确认合规要求。首次加载能接受吗?WebLLM 模型文件通常 1-4GB,首次加载有延迟。
如果你的场景需要:实时 ML 推理 + 用户隐私 + 不想维护 GPU 服务器 + 用户设备较新,那 WebGPU 计算着色器就是值得尝试的方案。Safari 26 补完了四大浏览器支持,浏览器端 GPU 通用计算的时代正式开始了。
下一步
先在 caniuse.com 确认你的用户群覆盖率。如果目标用户主要是 Apple Silicon Mac,Safari 26 的 WebGPU + 计算着色器组合是当下最强选择。试着跑一个简单矩阵乘法基准测试,感受一下真实提速幅度,再决定是否迁移生产负载。
评论区
登录后可评论。