过去要使用大模型,就像请一位名厨在“云端中央厨房”统一做菜:你把菜单需求沿网线传过去,等中央厨房的GPU大灶爆炒一番,再把成品送回来。厨艺确实高超,可高峰时排队漫长、路途遥远,而且你递过去的“食材”(聊天记录、隐私文档)总要在配送路上走一遭,途中会不会被偷看,心里始终犯嘀咕。 如今WebGPU标准把局面彻底扭转了。它让浏览器可以直接调用本机显卡的计算能力,相当于名厨带着精简过的“便携菜谱”亲手住进你家厨房。这份菜谱不是五星饭店的原版,而是先被翻译成你家灶台能看懂的步骤(WGSL计算内核),再把昂贵原料换成平价替代(量化和压缩),把七七八八的繁琐工序合并成几步(算子融合)。最后的结果是:菜在你眼前现炒,食材从未离开家门,云端中央厨房的开销全省了下来。 这篇文章就用“名厨上门”的比喻,带你从零认识浏览器端大模型推理的前因后果:为什么浏览器能跑大模型?初始化要碰哪些接口?着色器语言怎么写?模型怎么转换、怎么瘦身、怎么合并操作?最后再看部署流程、商业收益和常见误区。
掌握WebGPU浏览器推理,你将成为团队里少见的前端AI全栈工程师,能在隐私合规、成本控制、离线体验三个维度构建差异化边缘方案。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
浏览器算力
顾客一开始总觉得自家厨房太小,接待不了名厨。其实翻翻你家抽屉:现代手机和笔记本里的那块GPU,早就不是只会画游戏画面的“显卡”了。十几年间GPU算力爆发式增长,一块主流显卡的矩阵运算能力常常超过一台双路服务器。换句话说,顾客家的厨房灶眼虽小,火力却猛得惊人。
过去浏览器碰不到这块GPU,网页只能通过WebGL做3D渲染,游戏引擎能用的,AI推理却用不上。WebGPU标准的出现改变了这一切:它是W3C制定的新一代图形与计算API,把GPU的并行计算能力开放给网页沙箱。大模型推理的本质是海量矩阵乘法,每一步都要做几亿次乘加运算,而GPU恰恰就是为这种“重复劳动”而生的。
于是“浏览器能不能跑大模型”变成了“浏览器能不能好好组织并行计算”。WebGPU给网页提供了dispatchWorkgroups这样的接口,让开发者把矩阵切成小块,交给GPU成百上千个计算单元同时算。这就是为什么同样一台电脑,浏览器用WebGPU跑模型能比CPU快出一个数量级。
名厨上门的第一课,就是确认顾客家的灶台够不够猛。WebGPU给了浏览器摸到GPU灶台的资格,而阿姆达尔定律则提醒我们:光有并行还不够,后面还得指望“少洗几次锅”来提升效率。
- p(可并行占比)指代码中能被拆成多份同时执行的耗时比例。大模型前向传播里矩阵乘法约占90%,这时 \(p=0.9\)。
- n(并行单元数)GPU 的计算核心数量,比如 512 个核心。核心越多,并行部分算得越快。
- 1-p(串行占比)必须按顺序执行的耗时,比如数据预处理、层间依赖,这部分是无法靠堆核心加速的。
- S(最终加速比)把并行部分瓜分给 \(n\) 个核心后,整个任务的提速倍数。GPU 核心再多,串行的 10% 依然限制着上限。
渲染管线
名厨走进顾客家厨房,不会直接点火炒菜,而是先认清楚灶台、锅具和水槽的位置。WebGPU程序也有对应的“厨房布局”认知阶段,这就是初始化渲染管线的三件套:GPUAdapter、GPUDevice、GPUQueue。
GPUAdapter相当于“采购专员”,它调用navigator.gpu.requestAdapter()去枚举系统里有哪些GPU设备,把物理显卡信息汇报给浏览器。GPUDevice则是厨师掌勺的那口专属炒锅:它负责管理显存、创建缓冲区和纹理,所有资源都登记在它名下。GPUQueue是上菜窗口,厨师把一道道“命令”封装进命令缓冲,然后通过device.queue.submit()交给GPU执行。
三者的协作顺序不能乱:先拿Adapter,再派生出Device,最后借助Queue提交工作。这种设计保证了浏览器沙箱的安全边界——网页无法直接碰GPU驱动,只能通过层层封装的接口递菜。一次推理调用,本质就是往Queue里塞入一条“运行计算着色器”的命令。
名厨熟悉了厨房布局,后续出菜便行云流水。渲染管线的三件套如同灶台、锅具、窗口的分工,让每一次推理命令都按部就班地进入GPU,为后续的着色器编写打下基础。
- T_first(首请求耗时)第一个任务走完整个管线需要的时间,包括创建画布上下文、编译WGSL着色器,通常最慢。
- n(连续请求数)用户连续生成的token数量。流式对话中每生成一个token就要提交一次推理命令。
- T_each(稳态单请求时长)管线填满后,每个新请求主要由最慢一级决定,比如一次矩阵乘法内核的执行时间。
- 流水线总耗时当 \(n\) 很大时,\(T_{first}\) 被摊薄,吞吐率趋近于 \(1 / T_{each}\),这正是渲染管线高效的原因。
着色语言
名厨不能把五星饭店的行话原样念给顾客听,他需要一份顾客家灶具看得懂的“家常菜谱”。在WebGPU的世界里,这份菜谱就是WGSL(WebGPU Shading Language)——一种专为WebGPU设计的着色器语言。
WGSL的特点是强类型、贴近底层、语法带有Rust的影子。推理任务用到的叫计算着色器,开发者用@compute注解声明,并用@workgroup_size(x, y, z)指定每个工作组内跑多少个线程。比如一个8×8的工作组,就相当于同时在灶台上铺开64个小型煎锅,每个煎锅处理矩阵的一个小方块。
计算着色器的核心是并行寻址:每个线程通过global_invocation_id拿到自己在整个计算网格中的坐标,然后读取对应的输入数据、做乘加运算、写回结果。这个模型和CUDA的kernel非常相似,只是被浏览器沙箱重新包装了一层。调度时,dispatchWorkgroups决定开多少个工作组,写成代码就是“同时启动多少组灶台”。
菜谱越精准,厨房越高效。WGSL让开发者能像写CUDA一样精细控制GPU线程,而工作组的调度配置,直接关系到大模型推理在浏览器里的吞吐表现。
- n_wg(工作组数量)由dispatchWorkgroups指定的启动批次,比如把16×16的矩阵分成4×4块。
- n_inv(组内调用数)@workgroup_size(8,8,1) 声明每个工作组内部有64个线程。
- N_threads(总线程数)两者相乘得到这次GPU执行总共调度的线程数量,这里共1024个线程。
- 调度权衡工作组太大占用共享内存多,太小则调度开销高,实践中要通过调参找到平衡点。
模型转换
名厨从饭店带来的是一本“中央厨房标准菜谱”(PyTorch模型),顾客家的灶台式样不同,需要把菜谱翻译成“图示步骤版”。模型转换做的就是这件翻译工作,最常见的路线是 PyTorch → ONNX → WebGPU推理引擎。
PyTorch模型先导出为ONNX格式,这是一种开放的中性模型描述格式,记录了每个算子的类型、形状和连接关系。接着,WebGPU推理引擎(如Transformer.js、WebGPU Runtime)把ONNX算子逐条映射到WGSL计算着色器上。每个ONNX算子在WGSL里都有对应的内核实现,比如矩阵乘法、激活函数、归一化,都会被翻译成一整段并行计算的WGSL代码。
但并非所有算子都能完美映射。某些模型用了WebGPU后端暂不支持的算子,推理引擎就得把这个算子降级到CPU执行,甚至整个推理报错。工程团队常通过算子覆盖率来评估转换质量,并挑选“WebGPU友好”的模型结构来避免踩坑。
翻译到位的菜谱,顾客家的厨房才能流畅执行。模型转换是整个端侧部署的第一道关,转换后别忘了做算子覆盖体检——这是决定后面推理体验的隐形门槛。
- M(模型全部算子)从ONNX图中统计出的算子总量。假设一个7B模型转换后有300个算子。
- S(支持算子集合)WebGPU后端实现了WGSL内核的算子类型。常见的Conv、MatMul、ReLU都在其中。
- C_ops(覆盖率)两者相除得到支持比例,这里是92%。剩下8%的算子需要降级或重写。
- 覆盖评估的意义覆盖率掉到80%以下时,大量算子落到CPU执行,瓶颈会在CPU与GPU之间反复横跳,推理速度骤降。
量化压缩
名厨明白,五星饭店的松露浇头在顾客家里不现实,改用平价蘑菇,味道差一点但工序和成本大幅下降。模型的“平价蘑菇”就是量化:把FP32浮点权重压缩成INT8整数权重,模型体积直接缩小到原来的四分之一。
量化不是简单地把小数点删掉。它以整个权重张量的分布为基准,计算一个缩放因子scale,把浮点数值映射到[-127, 127]的整数格子中,推理时再做反量化还原。这个映射过程很像用“厘米刻度”替换“微米刻度”:数值仍然精确,只是读数粒度变粗了。
为了让量化不影响模型智商,工程上还会做校准:喂一批真实数据,观察激活值分布,挑选合适的scale。更精细的方案还有逐层量化、混合精度量化,让敏感的层保持FP16,不敏感的层降到INT8。主流模型经过精心校准后,INT8量化的精度损失通常可以控制在1%以内。
平价蘑菇做好了一样能撑起整桌宴席。量化让模型瘦了一圈,下载更快、占用显存更少,再配合校准手段守住精度底线,端侧推理才真正跑得动。
- r_min(张量最小值)当前权重张量里的最小值,比如 -1.2。它作为整数格子的起点。
- scale(缩放因子)由权重范围除以255得到,决定整数每走一步对应多少浮点值。范围越窄,scale越小,精度越高。
- q(量化整数)权重偏离最小值多少个scale步长,四舍五入得到整数。存储时只占用1个字节。
- r'(反量化值)用整数和scale还原出的浮点值,与原始0.35之间存在约0.005的误差,这就是量化损失。
算子融合
名厨在顾客家发现锅不够多,菜谱上写着“煮熟后捞出,另起油锅炝香”,他当机立断:一口锅把煮、沥、炒全包了。这就是算子融合的思路——把多个计算操作合并成一个GPU内核执行。
大模型推理中最经典的融合模式是卷积-归一化-激活三段式:Conv、BatchNorm、ReLU原本是三个独立算子,每个算子都要把中间结果写入显存,再让下一个算子从显存读回。这种“写完再读”的搬运在大模型里极其昂贵,显存带宽常常比计算本身更拖后腿。
融合后,三个算子在同一个WGSL内核里完成:卷积算完的中间结果留在寄存器或共享内存里,直接交给归一化,再立刻过激活函数。整个过程中间数据根本没出GPU的“锅”。一次dispatch只启动一次内核,也省下了内核启动和调度的开销。实测中,融合可以让端到端推理提速20%到40%。
一口锅出整道菜,既省了刷锅的时间又少了刷锅的水。算子融合通过减少显存搬运和内核启动,让GPU的每一次dispatch都干更多活,这正是浏览器端推理降延迟的关键工程手段。
- M_sep(未融合读写量)三个算子各算一遍,每个算子的输入输出都要读写显存,共6次访问。
- M_fus(融合后读写量)合并成一个算子后,只有最初的输入和最终输出碰两次显存,中间结果留在片上。
- R(减少率)代入计算得约67%,即显存流量减少了三分之二。
- 延迟收益显存带宽通常是推理瓶颈,减少搬运意味着同等数据能在更短时间内完成处理,端侧功耗也随之下降。
部署流程
名厨正式开灶前,要先做一遍“煤气安全检查”:灶台能不能用、煤气阀门是否打开、食材是否备齐。WebGPU部署也有对应的三道工序:环境检测、运行时初始化、推理服务。
第一道工序是检测用户环境。代码里先判断if (!navigator.gpu),如果用户的浏览器不支持WebGPU,就要降级到WASM后端或者友好地提示升级浏览器。这一步不能省,因为真实用户设备五花八门,支持矩阵参差不齐。
第二道工序是初始化运行时:拿到Adapter后创建Device,把模型权重从CDN下载下来反序列化,再编译WGSL计算着色器、创建管线。这里通常涉及模型分片加载和缓存策略,让用户二次访问秒开。第三道工序才进入正式推理循环:把输入tokenize后编码成命令缓冲,提交给GPU执行,然后用异步mapAsync把结果读回,解码成文本展示给用户。
安全检查做到位,家宴才不会中途熄火。部署流程的每一道工序都直接转化为用户体验指标,而navigator.gpu检测与降级方案,决定了这套方案在真实世界的生存能力。
- T_load(加载权重)从CDN下载并反序列化模型权重,首个用户尤其受此影响,是部署优化的重点。
- T_warmup(预热时间)完成第一次推理以触发编译和显存分配,让后续调度参数稳定下来。
- T_decode(单token解码)每生成一个token,都要执行一次完整前向传播。桌面级GPU大约15ms。
- N_tokens(生成长度)一个总结任务生成512个token,代入公式得总时延约11秒,这就是用户感知的“打字机速度”。
应用收益
家宴的好处,名厨心里最清楚:菜在自己眼皮底下做,食材从没出过家门,客人吃得放心;不用给外卖平台付配送费;半夜馋了开灶就能吃,不必等餐厅营业。WebGPU端侧推理的商业价值恰恰落在这三点上:隐私、成本、离线。
隐私是端侧推理最锋利的卖点。用户的文档、聊天记录、健康数据全部在浏览器本地处理,只把模型文件从CDN下载到设备上,数据本身不经过任何服务器。对医疗、金融、政务这些严监管行业来说,“数据不出设备”直接解决了合规难题。成本方面,云GPU推理按token计费,规模一大就是天文数字;端侧推理把算力成本转嫁到用户的闲置设备上,公司只需承担模型分发的CDN费用。
离线能力更是打开了新场景:飞机客舱、网络不稳的海外市场、偏远地区的移动设备,都能获得一致的AI体验。百万用户同时在线也不会压垮服务器——因为每个用户的浏览器都在用自己的GPU“自给自足”。
名厨上门不再是个别顾客的惊喜,而会成为越来越多应用的默认选项。当隐私、成本、离线三重收益叠加,浏览器端的大模型推理就从“玩具”变成了“生产力”。
- C_api(单次API价格)云端大模型接口的平均单价,比如0.002美元/千token。用户每发起一次对话都要算一次账。
- N_req(月度请求量)产品上线后的总调用次数。假设月活10万用户,每人每月80次对话。
- C_cdn(分发成本)把几百MB的模型文件托管到CDN并按流量计费,用户首次下载时产生。
- S_cost(净节省)代入后每个月节省约1.6万美元,请求量越大,端侧方案的优势越明显。
AI 应用场景
医疗影像初筛助手
阶段:端侧推理部署
解决的问题:传统方案中,放射科医生上传CT影像到云端大模型做筛查,影像数据高达数百MB,传输慢且违反医院数据不出院区的合规要求。采用WebGPU端侧推理后,模型权重预置于医院内网CDN,影像在医生工作站的浏览器本地完成初筛,原始数据零外流,合规与速度兼得。
具体案例:某三甲医院上线了基于WebGPU的肺部结节初筛工具。医生拖入CT片后,浏览器调用本地GPU在2秒内给出结节位置热力图,全程无网络请求。相比云端API方案,单次筛查延迟从8秒降到2秒,医院IT部门也不再为影像外发审批头疼。
跨境电商实时翻译插件
阶段:推理成本优化
解决的问题:传统浏览器翻译插件每次划词翻译都要把文本发到云端API,高峰期单用户一天能产生上百次请求,全球用户量一大,API账单直线上涨。WebGPU方案把小型翻译模型量化后打进插件,划词翻译全部在浏览器本地完成,云端API只兜底长难句。
具体案例:某跨境电商团队在Chrome插件中内置了WebGPU翻译引擎。上线一个月后,API调用量下降72%,翻译响应从平均1.5秒降至300毫秒。用户离线浏览商品页面也能正常翻译,复购率提升明显。
客舱离线智能问答助手
阶段:离线场景支撑
解决的问题:航空公司希望在飞机客舱内为旅客提供大模型问答服务,但机上网络几乎不可用,云端方案完全失效。通过WebGPU把模型部署在旅客自带的手机或机上娱乐平板中,服务无需联网即可运行。
具体案例:某航司在头等舱平板预装了WebGPU推理的旅游问答助手,回答“这个目的地的落地签政策”等咨询。旅客断开Wi-Fi也能顺畅使用,航班落地后问答记录自动清除,隐私数据不再上云。
Python 演示
"""端侧模型推理模拟:INT8量化 + 算子融合 真实WebGPU方案中,量化和融合由浏览器运行时完成,这里用NumPy演示同一套优化流程在用户设备上如何工作。""" import numpy as np np.random.seed(42) class Linear: def __init__(self, in_dim, out_dim): self.weight = np.random.randn(out_dim, in_dim) * 0.1 self.bias = np.zeros(out_dim) def forward(self, x): return x @ self.weight.T + self.bias class MLP: def __init__(self): self.fc1 = Linear(16, 32) self.fc2 = Linear(32, 4) def forward(self, x): h = self.fc1.forward(x) h = np.maximum(h, 0) return self.fc2.forward(h) def quantize(weight): """对权重做INT8对称量化,返回量化值、scale与反量化权重。""" scale = np.max(np.abs(weight)) / 127.0 q_int = np.clip(np.round(weight / scale), -127, 127).astype(np.int8) return q_int, scale, q_int.astype(np.float32) * scale def fuse(mlp): """把fc1 -> fc2合并为单层,模拟算子融合减少中间搬运。""" fused = Linear(16, 4) fused.weight = mlp.fc2.weight @ mlp.fc1.weight fused.bias = mlp.fc2.weight @ mlp.fc1.bias + mlp.fc2.bias return fused def main(): x = np.random.randn(8, 16).astype(np.float32) mlp = MLP() y_ref = mlp.forward(x) # 权重压缩:INT8量化 q1, s1, w1 = quantize(mlp.fc1.weight) q2, s2, w2 = quantize(mlp.fc2.weight) mlp.fc1.weight = w1 mlp.fc2.weight = w2 y_q = mlp.forward(x) # 算子融合:两个线性层合并成单层 fused = fuse(mlp) y_fused = fused.forward(x) print("原始输出均值: %.6f" % y_ref.mean()) print("量化输出均值: %.6f" % y_q.mean()) print("量化平均误差: %.6f" % np.abs(y_ref - y_q).mean()) print("融合最大偏差: %.6f" % np.abs(y_q - y_fused).max()) print("全模型参数量: %d" % (16 * 32 + 32 * 4)) print("融合后参数量: %d" % (16 * 4)) if __name__ == "__main__": main()
scale = np.max(np.abs(weight)) / 127.0对称量化缩放因子,把权重映射到INT8整数范围q_int = np.clip(np.round(weight / scale), -127, 127).astype(np.int8)量化主公式:缩放取整再裁剪,浮点权重变成1字节整数q_int.astype(np.float32) * scale反量化:用整数与scale还原近似浮点权重h = np.maximum(h, 0)ReLU激活函数,模拟模型前向传播中的非线性层fused.weight = mlp.fc2.weight @ mlp.fc1.weight算子融合核心:两个线性层的权重矩阵直接相乘合并fused.bias = mlp.fc2.weight @ mlp.fc1.bias + mlp.fc2.bias偏置同步合并,保证融合后数学等价np.abs(y_ref - y_q).mean()量化平均误差,衡量“平价蘑菇”与“松露”的口味差距
常见误区
误区WebGPU是WebGL的升级版,只是让网页3D游戏更流畅,跟跑大模型没什么关系,浏览器根本处理不了那么重的计算。
正解WebGPU是全新设计的GPU API,核心创新之一是通用计算(GPGPU)。它允许网页直接编排GPU并行计算,而不是只会画三角形。大模型推理本质是海量矩阵乘法,这正是GPU最擅长的领域。WebGPU把这块能力开放给网页沙箱,浏览器因此能运行完整的大模型,不再依赖插件或本地运行时。
为何常见:WebGL名字太像,而且过去网页里的高性能计算只有WebGL,自然被误认为是同一系列的图形增强。
误区我训练好的PyTorch模型保存成.pt文件放到静态文件夹里,浏览器加载一下,前端写几行代码就能直接推理。
正解需要一条完整的转换链:PyTorch先导出ONNX格式,再由WebGPU推理引擎把ONNX算子映射为WGSL计算内核,还要把权重改成GPU友好的内存布局,最后做量化和融合。就像五星饭店的菜谱必须重写成顾客家灶具能执行的步骤,原封不动搬过去只会炒糊。
为何常见:网页给人“即开即用”的印象,忽略了模型格式与浏览器GPU运行时之间的巨大工程鸿沟。
误区把FP32转成INT8就是把小数点全删了,模型肯定变成“人工智障”,生成结果没法用。
正解现代量化不是简单截断,而是按权重分布计算scale缩放因子,把整个浮点区间映射到[-127,127]的整数桶里,反量化误差通常很小。配合校准数据集、逐层量化、混合精度等技术,主流大模型INT8化后精度损失可控制在1%以内。好比把米尺换成厘米刻度,量出来依然准确,只是读取粒度变了。
为何常见:直觉上“整数=精度低”,忽略了缩放和校准这两个决定性环节。
误区没有服务器跑推理了,成本就是零,公司可以把云端API全部停掉,白赚隐私和速度。
正解服务器算力成本确实减少了,但工程成本转移了:模型文件要托管在CDN,用户首次访问要下载几百MB权重;多个模型版本需要维护;老设备算力不足时还得准备云端的兜底降级方案。成本结构从“每次推理付费”变成“分发+维护+兜底”,只有达到一定请求规模,净节省才真正显现。
为何常见:只盯着API账单上的数字消失,忽略了部署链路中新出现的各类固定支出。
误区只要用户用的是最新版Chrome,WebGPU就一定能用,不需要做任何兼容判断,直接上线。
正解WebGPU虽已是W3C标准,但浏览器阵营支持进度不一:Chrome/Edge 113+已稳定支持,Safari 26新增支持,Firefox仍在完善中。生产环境必须做能力检测if (!navigator.gpu),并提供WASM或WebGL后端的降级方案,否则不支持的用户打开页面就是一片空白。
为何常见:开发者自己用最新浏览器开发调试,容易默认“新特性=全网普及”,忽略真实用户群体的设备生态差异。
面试题
Q1. WebGPU相比WebGL最本质的区别是什么?
- A.只改进了3D图形渲染速度
- B.提供通用GPU计算能力GPGPU← 正确答案
- C.完全替代JavaScript脚本语言
- D.只支持NVIDIA显卡硬件设备
答案:B。WebGPU的核心创新是把GPU从图形渲染扩展到通用并行计算,让网页能跑矩阵乘法这类计算任务,这正是大模型推理的基础。A只看到图形层面,C和D属于严重事实错误。
Q2. 在WebGPU架构中,负责向GPU提交命令队列的组件是?
- A.GPUAdapter
- B.GPUQueue← 正确答案
- C.GPUDevice
- D.GPUCapabilities
答案:B。GPUQueue是命令提交的窗口,通过device.queue.submit()把命令缓冲交给GPU执行。GPUAdapter负责枚举物理设备,GPUDevice负责管理资源,它们都不是直接提交命令的角色。
Q3. 经典INT8对称量化中,缩放因子scale的计算方式是?
- A.权重绝对值最大值除以127← 正确答案
- B.权重最小值除以255
- C.权重均值乘以量化位数
- D.权重标准差乘以128
答案:A。对称量化把权重范围映射到[-127,127],scale = max(|w|)/127。B和D分别对应了非对称量化或统计量,C没有任何理论依据,属于错误干扰项。
Q4. 关于算子融合,以下说法正确的是?
- A.融合后的算子仍然独立调度
- B.融合减少了中间结果的显存读写← 正确答案
- C.融合主要目的是增加模型参数量
- D.融合只能应用在模型训练阶段
答案:B。算子融合把多个算子合并为单个GPU内核,中间结果缓存于片上,不再写回显存,这正是“少刷锅”的核心收益。A和C与融合目的相悖,D混淆了训练与推理阶段。
Q5. 以下哪项是WebGPU端侧推理的核心隐私优势?
- A.模型参数更小更易下载
- B.用户数据无需上传服务器← 正确答案
- C.推理速度提高一倍以上
- D.支持所有浏览器版本
答案:B。端侧推理让文档和聊天记录在浏览器本地处理,数据链路不再经过云端服务器,这是隐私合规的最大卖点。A和C是工程收益而非隐私优势,D与浏览器兼容性现状不符。
Q6. 大模型移植到WebGPU前通常需要做哪些优化?
- A.转换为ONNX中间格式← 正确答案
- B.执行INT8量化和压缩← 正确答案
- C.开启CPU超频设置
- D.进行算子融合与精简← 正确答案
答案:ABD。模型转换(ONNX化)、量化压缩、算子融合是WebGPU端侧推理的标准三步优化。C和浏览器端推理无关,WebGPU调用的是GPU而非CPU超频。
Q7. 影响端侧大模型推理延迟的因素有哪些?
- A.用户GPU核心数量← 正确答案
- B.模型权重显存占用← 正确答案
- C.网络带宽实时时延
- D.工作组调度大小← 正确答案
答案:ABD。GPU核心数决定并行度,显存占用影响数据搬运和缓存命中,工作组大小影响调度效率,这三者直接决定推理时延。C只在首次下载模型时影响加载,不影响推理本身。
Q8. WGSL中的workgroup_size主要控制什么?
- A.工作组内线程的数量← 正确答案
- B.GPU显存的物理容量
- C.模型的参数量大小
- D.浏览器窗口的渲染尺寸
答案:A。@workgroup_size(x,y,z)声明每个工作组内部启用多少条线程,与dispatchWorkgroups一起决定GPU上总的并行度。其余选项分别涉及显存、模型和窗口,与线程调度无关。
Q9. 以下哪些是WebGPU端侧推理带来的商业收益?
- A.降低云端API调用成本← 正确答案
- B.提升数据隐私合规性← 正确答案
- C.彻底消除模型体积大小
- D.支持断网离线场景使用← 正确答案
答案:ABD。端侧推理免除每次调用的API费用,数据不出设备提升合规性,不依赖网络支持离线使用。C明显错误,模型体积只能被量化缩小,不可能消除。
Q10. 浏览器端正确检测WebGPU支持能力的写法是?
- A.if (navigator.gpu) { …… }← 正确答案
- B.if (gpu.available) { …… }
- C.if (window.gpuOn) { …… }
- D.if (canvas.webgpu) { …… }
答案:A。WebGPU标准把入口挂在navigator.gpu上,存在则代表浏览器支持WebGPU API。其余写法都是臆造的全局变量或对象属性,实际运行时不存在,会直接抛错。