该改动修复 ONNX Runtime Web 1.31.x 中自定义 WebGPU 设备的回归问题:即使 GPU 输入缓冲区与会话使用同一设备,推理仍可能因设备 ID 不匹配而失败,将输出位置设为 gpu-buffer 时也可能找不到分配器。根因是 wasm 接口为 WebGPU_Buf 硬编码设备 ID 0,而 WebGPU 分配器已改用上下文 ID,且自定义设备的编号从 1 开始。修复通过在 JavaScript 层按会话记录并提供设备 ID,由 TypeScript 层将其作为新增参数传入 OrtCreateTensor 和 OrtBindOutput,且仅用于 WebGPU_Buf;JSEP 和非 WebGPU 会话仍传入 0。此次修改还扩展了自定义 WebGPU 设备的浏览器端到端测试,旨在恢复 1.30.0 已支持的 GPU 缓冲区输入输出兼容性;现有信息未提供性能测试结果,不能据此认定有吞吐或延迟改善。
该 PR 旨在修复 ONNX Runtime Node.js 绑定中 WebGPU 推理输出资源的生命周期管理,避免输出仍需使用时底层资源被过早释放。从修改集中在推理会话封装和张量辅助层来看,改动涉及输出张量向 JavaScript 侧交付时的资源保留与生命周期衔接,并补充了 inference-session-run 相关测试。这主要关系到 Node.js WebGPU 输出的有效性和后续使用可靠性,而非算子计算逻辑的优化。由于未提供具体代码差异,尚无法确认资源保留及释放机制、测试覆盖场景,也不能据此断言存在零拷贝优化、性能提升或兼容性变化。
该 PR 修复了通过内部 OrtEpFactory 创建的执行提供程序(EP)未保留所选 OrtEpDevices 的问题,补全会话遥测中的硬件与 EP 元数据,并使通过 SessionOptionsAppendExecutionProvider_V2 注册的非 CPU EP 能向模型包提供设备及工厂信息。实现上,在 EpFactoryInternal::CreateIExecutionProvider 中通过新增的 SetEpDevices 统一保存设备,让策略选择、V2 注册和测试选择辅助逻辑共用该路径;插件 EP 仍通过构造函数接收设备。对 WebGPU、DML 和 provider bridge 工厂,还在 noexcept 创建方法中增加了异常捕获,使启用异常的构建在创建失败时返回错误状态,而非终止进程。此次改动主要改善设备元数据传递的一致性和初始化失败时的健壮性,未体现 WebGPU 算子或 GPU 执行路径优化,且未提供性能基准,不能据此判断推理速度有所提升。
此次改动修复 ONNX Runtime WebGPU 归约中的数值正确性问题,以及弱原子比较交换偶发失败可能导致贡献丢失的问题。归约实现为 LogSumExp 引入移位指数求和以避免有限输入引发溢出,让整数 Sum/Prod 避免经过 FP32 转换而丢失低位,并用双字累加和计算 int32/uint32 均值以避免累加溢出。原子更新逻辑按 WGSL 契约持续重试 atomicCompareExchangeWeak,直到 exchanged 为真;已有可选 int64 支持的范围限制保持不变,并未新增完整的 64 位算术支持。新增测试覆盖朴素与共享内存归约路径、大数、无穷值及有符号和无符号整数边界,但原子 Split-K 路径未在本地执行,D3D12 上也无法确定性复现弱比较交换的偶发失败;现有信息缺少性能测量和完整验证结果,无法据此判断性能变化或跨后端验证情况。
该 PR 针对 ONNX Runtime WebGPU 后端的 InstanceNorm、SkipLayerNorm 和 GroupNorm 修复数值稳定性问题,避免常量或近常量输入因 FP16 中间值溢出、方差计算中的消减误差而产生 NaN 或不准确结果;标准 LayerNormalization 不在本次范围内。实现上引入共享数值辅助逻辑,采用中心化平方偏差和补偿均值计算,将统计量与 epsilon 保持为 FP32,并分别保留中心化偏移与残余均值,通过整数尾数差处理相近值相减,防止着色器表达式重结合丢失微小均值偏移。新增测试覆盖大数及小数常量、大缩放系数下的消减误差、相邻 FP32 值、小 epsilon、FP16 中间值、分段归约和残差输出,已报告 Windows x64 Release 原生 WebGPU/D3D12 环境下 13 项专项测试通过。此次改动主要提升上述归一化算子的数值可靠性,不保证任意数值范围内的精确求和;现有信息未提供性能基准或其他平台、后端的验证结果,因此无法判断吞吐开销及跨平台兼容性表现。
该 PR 修复 ONNX Runtime WebGPU 推理中 FP16 中间结果溢出、即使最终输出可表示仍可能计算异常的问题,以及混合类型 BatchNormalization 生成无效 WGSL 的问题。Softmax 和 AveragePool 将累加器、部分和及除数保持为 FP32,仅在最终输出时转换类型;反量化也先以 FP32 计算,再转换为 FP16。BatchNormalization 明确计算类型,按算子版本设置混合类型约束,并在将标量统计量广播为向量前完成类型转换,以保证着色器类型合法性。新增回归测试覆盖长行、大窗口、较大但可表示的最终值、两种布局下的混合类型统计量,以及标量、vec2、vec4 反量化;在禁用 CPU 回退并启用完整验证和着色器缓存验证的 Windows x64 Release 原生 WebGPU/D3D12 环境中,9 项专项测试全部通过。改动提升了相关算子的数值可靠性与混合类型兼容性,但未提供性能基准或其他后端的验证结果,无法判断 FP32 中间计算的性能影响及跨后端表现。
该 PR 修复 ONNX Runtime WebGPU 执行提供程序在广播和向量化张量访问中的正确性问题,避免合法输入被拒绝、生成无效 WGSL 或读取错误元素。Einsum 改用逐项维度游标及运行时单例维度偏移,处理省略号、对角线、标量以及着色器缓存复用时单例维度变化的情况;Where 则通过逻辑访问辅助函数正确读取打包布尔输入并支持广播。BiasSplitGelu 根据拆分后的输出宽度选择向量化方式,修正标量、vec2 和 vec4 路径;RMSNormalization 新增支持广播的 scale 访问路径,同时保留非法形状校验。这些改动提升了相关算子的输入兼容性与 GPU 计算正确性,已在禁用 CPU 回退并启用完整及着色器缓存验证的 Windows x64 Release WebGPU/D3D12 环境中通过 18 项专项测试,但未提供性能基准,无法判断吞吐量或延迟变化。
该 PR 在 ONNX Runtime 的 WebGPU Flash Attention 中,为明确支持 128-lane 子组的 Qualcomm GPU 增加稠密 FP16 因果 prefill 优化路径,重点降低每个 lane 的寄存器存储压力。WGSL 内核由相邻 4 个 lane 共同处理一个查询行,256 线程工作组处理 64 行、每轮暂存 16 个键值位置,并使用 FP32 执行 softmax 和输出累加,在最终写回时归一化。新路径仅在 head size 为 128、查询 token 数至少为 128 且满足能力与功能限制时启用;注意力偏置、head sinks、局部窗口、softcap、量化 KV 缓存及逐批次查询长度模式沿用原路径,decode 不变。测试按设备能力启用,覆盖不完整查询/键分块、批大小 1/2、GQA 比例 3、旋转位置编码、大幅值 FP16 输入、已有历史缓存及逐批次填充键长度,并以直接计算的因果平均值校验零值查询场景。该设计旨在利用 Adreno X1-85 等 GPU 的宽子组提升 prefill 效率,但当前信息未提供性能基准,无法量化实际加速幅度。
该 PR 修复 ONNX Runtime WebGPU 执行提供程序在边界输入下的张量坐标、输出形状和索引错误,涉及 Slice、Resize、Range、Trilu 和 TopK 算子。关键改动包括纠正反向 Slice 的起点与步长处理、nearest Resize 的秩和单位缩放坐标处理、TopK 的填充项排序,以及 Range/Trilu 中可能溢出的算术运算,避免生成无效着色器或将填充项索引混入结果。卷积的 MatMul 快捷路径被限制为仅用于填充与输出几何兼容的情况,并同步预打包资格与实际执行条件,以防不适用的优化路径产生错误结果;未提供性能基准,无法量化这一限制的性能影响。新增回归覆盖边界偏移、空或部分范围、标量与向量视图、布局与初始化器变体、单元素及高秩 Resize,以及两种 TopK 排序路径中的极值和无穷值;在禁用 CPU 回退并启用完整验证与着色器缓存验证的 Windows x64 Release WebGPU/D3D12 环境中,21 项专项测试全部通过。
此改动修复 ONNX Runtime WebGPU 普通(非 Flash)Attention 路径中的缓存正确性问题,包括首次提示阶段缓存输出未写入、V 与 Q/K 头宽不同时 value cache 尺寸错误,以及仅请求一个缓存输出时错误丢弃历史缓存输入。实现上按 V 自身的头宽分配 value cache,并将历史缓存读取条件与缓存输出写入条件分离,同时保留 MultiHeadAttention 在两个缓存输出均未请求时忽略历史张量的既有行为。新增测试通过较小头维度强制走普通 Attention 路径,覆盖首次缓存生成、不等头宽及可选缓存输出下的解码场景,并纳入单元测试构建。三个专项测试已在禁用 CPU 回退、启用完整及着色器缓存验证的 Windows x64 WebGPU/D3D12 环境中通过,支持这些场景下的正确性;当前未提供性能基准或其他平台验证结果,不能据此推断性能提升或跨平台表现。