{"id":"mb-20260904-4321b0","kind":"deep","title":"同样一行矩阵乘法代码，直接丢进网页浏览器，不同显卡的执行速度能差出一万倍","summary":"同样一行矩阵乘法代码，直接丢进网页浏览器，不同显卡的执行速度能差出一万倍","body":"同样一行矩阵乘法代码，直接丢进网页浏览器，不同显卡的执行速度能差出一万倍。\n两台电脑装的显卡性能明明在同一个档次，跑起来却一个像跑车，一个像拖拉机。\n为什么跨平台的网页技术，一碰到端侧 AI 就暴露出这么夸张的性能鸿沟？\n直觉上的解释，总是把锅甩给浏览器的虚拟机损耗，断定网页天生不配跑重算力。\n这个解释完全找错了方向。\n把端侧性能拖垮的根源，来自一台困扰了跨平台图形与计算架构几十年的硬件机器。\n运行时算子特化。\n要把这件事看透，先看云端数据中心是怎么跑 AI 的。\n在云端，算力环境高度同质化。\n几万张英伟达 H100 芯片整整齐齐插在机架上。\n工程师可以针对这一款芯片的显存位宽、张量核心架构，写出极致优化的底层 CUDA 算子代码。\n代码写死一份，就能在所有机器上把硬件性能压榨到极致。\n但把场景换到个人电脑和手机的浏览器里，底层世界瞬间碎成了上万块碎片。\n苹果有自己的统一内存架构。\n高通芯片有自己的着色器管线。\n英特尔核显、AMD 独显、英伟达显卡，每一家的底层缓存大小、线程调度规则、指令集支持都完全不同。\n为了让网页能够调用显卡，W3C 推出了 WebGPU 标准和配套的 WGSL 着色器语言。\n这解决了跨平台能跑的问题。\n但能跑，绝不等于跑得快。\n在图形和并行计算领域，两段输出完全相同的着色器代码，在不同显卡上的性能可以天差地别。\n一个算子跑得快不快，取决于它能不能吃满这块显卡的向量化宽度、能不能用上半精度浮点数据、以及线程工作组尺寸是不是刚好切中硬件的最佳调度粒度。\n这就是跨平台框架遭遇的最大困境。\n过去像微软的 ONNX Runtime Web 这类主流推理引擎，为了保证代码在任何一台破旧电脑上都能运行，只能选择最保守的策略。\n分发写死的、通用的静态着色器文件。\n通用的代价，就是不得不放弃所有激进的硬件优化。\n不能贸然开启十六位浮点运算，因为有些老显卡不支持。\n不能随意设定大尺寸的工作组，因为有些低端设备会直接崩溃。\n一份照顾全天下所有硬件最大公约数的代码，在绝大多数现代显卡上，就成了一份处处受限的减速代码。\n海量的硬件加速指令和宽数据通道，在浏览器里被白白闲置。\n破局的思路，不是在实验室里为每块显卡各写一套固定的代码。\n那是永远填不满的无底洞。\n有效的解法，是把代码生成的动作推迟到用户的浏览器里去完成。\nHugging Face 开源的 207 个 WebGPU 算子，在架构上做了一次关键反转。\n他们不再分发写死的 WGSL 着色器代码文件，全部改用带参数宏的 Jinja 模板。\n模板里把数据类型、工作组尺寸、内存展开逻辑全部做成了可配置的变量插槽。\n当用户的浏览器加载算子库时，JavaScript 引擎会在本地直接探测当前显卡适配器的具体特性。\n如果设备支持更宽的数据类型，就现场组装出支持向量化的指令。\n如果硬件支持更大的线程工作组，就动态填入最高效的调度参数。\n浏览器在本地现场渲染出最适合当前硬件的着色器代码，再直接送进 GPU 执行。\n这就是运行时算子特化。\n它把过去在云端靠人工手写调优的动作，变成了客户端本地的即时编译与特化。\n性能差距直接落在了硬指标上。\n在苹果 M4 芯片的实测对比中，这套参数化算子库对比微软官方的 ONNX Runtime Web，在 809 个可比测试用例里，几何平均速度提升了 2.57 倍，中位数提速 1.90 倍。\n在复杂的双线性爱因斯坦求和算子上，耗时从 1396 毫秒暴降到 0.136 毫秒，提速超过一万倍。\n在累加求和算子上，速度提升了 301 倍。\n当算子底座被特化压榨到极致，上层的工程复杂度直接呈数量级坍塌。\n只需要 20 行原生的 JavaScript 代码，直接调度底层的矩阵乘法、归一化和激活算子，就能在浏览器里纯手工跑通大语言模型的注意力机制。\n一百万像素的波纹实时物理模拟，纯 JavaScript 只能跑出每秒 5 帧，换上特化后的单矩阵乘法算子，直接顶满浏览器 60 帧的垂直同步刷新上限。\n为了进一步解决实验室买不起全世界所有冷门显卡的难题，他们还上线了 Fleet 众包测试平台。\n任何用户只要打开网页，就能用自己的显卡跑分。\n成千上万种真实硬件上的运行数据、边界失效案例，顺着浏览器回流到开源社区，反向校准模板的参数匹配规则。\n端侧算力从玩具走向可用的分水岭，往往就藏在这些不起眼的编译器与算子底座里。\n技术的演进，从来不在于把一份平庸的代码妥协给所有硬件。\n它在于把硬件特化的权力，推迟到执行的那一刻。","topic":"同样一行矩阵乘法代码，直接丢进网页浏览器，不同显卡的执行速度能差出一万倍","frame_type":["运行时算子特化","机制"],"citations":[],"channel_note":"","identity_notice":"","source_type":"generated","status":"published","generated_at":"2026-09-04 20:42:00","legal_anchor_count":0,"transcript_citation_count":0}