## PR 主要改动总结 **核心改动:** 修复了 WebGPU 中 Einsum 算子对 5D 及更高维度张量的支持问题。 **解决的问题:** 原代码使用手动字符串拼接 `uniforms.inputN_shape[idx]` 访问 uniform 形状数据,这在处理高维张量时存在缺陷。现已替换为 `GetElementAt(...)` 方法,该方法能正确处理所有张量秩的 uniform 形状访问。 **测试覆盖:** 新增了约 100 行测试代码,专门针对多维张量的 Einsum 操作进行验证,确保修复的有效性。 **技术要点:** 这是一个针对 WebGPU shader 代码生成的修复,通过使用统一的形状访问辅助函数替代硬编码字符串,提升了代码的健壮性和可扩展性。此修复关闭了 issue #27762。
## PR 主要改动总结 **1. 主要功能改动** 此 PR 修复了 WebGPU 执行提供程序(EP)中 DequantizeLinear 算子的实现问题,使其能够通过 WebNN 的合规性测试。 **2. 解决的问题** - 修复了 DequantizeLinear 算子在 WebGPU 后端的剩余兼容性问题 - 大幅扩展了测试用例(新增 173 行测试数据),覆盖更多边界场景 - 重构了量化相关的 C++ 实现代码(120 行新增),提升了代码质量和健壮性 **3. 对 WebGPU 支持的影响** 现在所有 WebNN DequantizeLinear 合规性测试都能在 WebGPU EP 上通过,显著增强了 ONNX Runtime 在 Web 平台上的量化模型支持能力。 **4. 技术要点** 主要改动集中在 `quantize_linear.cc/h` 的核心逻辑重构,同时清理了 TypeScript 层的冗余代码(删除 3 行),整体提升了量化/反量化操作的正确性和可维护性。
## PR 主要改动总结 **核心改动:** 这是一个针对 WebGPU 后端 Where 算子的小型修复,仅修改了 1 行代码。 **解决的问题:** 修复了 WebNN/Where 操作符的合规性测试问题,使 WebGPU 执行提供程序(EP)能够通过 Web 平台测试(WPT)中的 where 算子测试用例。 **对 WebGPU 支持的影响:** 提升了 ONNX Runtime WebGPU 后端的标准兼容性,确保 Where 算子在 WebGPU 环境下的行为符合 WebNN 规范要求。 **技术特点:** 改动非常精准(仅 1 行代码变更),属于针对性的合规性问题修复,反映了在 Web 标准化测试中发现的边界情况处理问题。
## PR 改动总结 **主要改动:** 修复了 WebGPU EP(Execution Provider)中针对 transpose 算子处理一维常量张量的问题,涉及对 `transpose.cc` 文件的优化。 **解决的问题:** 修复了若干 WebNN 测试用例在 WebGPU EP 下的失败问题,特别是针对 `float32` 类型的一维常量张量的 transpose 默认操作。修复后,WebNN conformance 测试中的 transpose 测试可以达到 100% 通过率。 **技术要点:** 改动集中在 transpose 算子的实现逻辑上,通过 13 行新增代码和 6 行删除代码的重构,改进了对特殊情况(一维常量张量)的处理方式,增强了算子的鲁棒性和标准兼容性。 **对 WebGPU 的影响:** 这是 WebGPU EP 质量改进的一部分,提升了 ONNX Runtime 在 WebGPU 后端上与 WebNN 标准的兼容性和测试覆盖率。
## PR 主要改动总结 **核心功能:** 此 PR 为 ONNX Runtime 的 WebGPU 执行提供程序(EP)新增了两个关键的大语言模型(LLM)算子支持,并升级了现有算子的 ONNX opset 版本。 **新增特性:** 1. 实现了 **Rotary Embedding**(旋转位置编码)算子,这是 Transformer 模型中常用的位置编码方式 2. 实现了 **RMSNorm**(Root Mean Square Normalization)算子,这是现代 LLM(如 LLaMA)中广泛使用的归一化层 3. 将 **Reshape** 算子升级至 opset-25,**Transpose** 算子升级至 opset-24,以支持最新的 ONNX 标准 **技术影响:** 这些改动显著增强了 WebGPU 后端对大语言模型的支持能力,使得更多现代 Transformer 架构(尤其是开源 LLM)能够在 WebGPU 上高效运行,推进了浏览器端 AI 推理的发展。代码新增 354 行,主要集中在算子实现的核心逻辑上。
## PR 主要改动总结 ### 核心改动 此 PR 更新了 CUDA 后端的 TopK 算子注册机制,将原本仅支持 opset 11 的开放式注册拆分为两部分:opset 11-23 的版本化注册和 opset 24 的新开放式注册。 ### 解决的问题 修复了 CUDA TopK 算子版本不匹配导致的性能问题。之前当模型使用 opset 11 以上的 TopK 节点时,`VerifyVersion` 会拒绝非版本化的内核注册,导致算子静默回退到 CPU 执行,产生不必要的主机与设备间数据拷贝开销。 ### WebGPU 关联 此改动使 CUDA EP 与 CPU 和 WebGPU provider 的 TopK 算子注册模式保持一致,遵循了 PR #27728 建立的统一版本管理规范。 ### 技术要点 无内核逻辑变更,仅调整注册宏(`ONNX_OPERATOR_VERSIONED_KERNEL_EX` 和 `ONNX_OPERATOR_KERNEL_EX`),因为 opset 24 的 schema 与现有 `TopK<true>` 实现完全兼容。
## PR 主要改动总结 **核心改动:** 修复了多会话共享 WebGPU 设备时的性能分析事件归属错误问题。 **解决的问题:** 之前所有会话的 GPU 性能分析事件都累积在单一的共享向量中,导致最后调用 `EndProfiling()` 的会话会收集到所有会话的事件。这在 Whisper 等编码器-解码器模型中表现为:编码器的性能追踪文件中没有 GPU 事件,而解码器的文件却包含了两个会话的所有事件。 **技术实现:** 将共享的 `events_` 向量重构为 `per_session_events_` 映射表,以性能分析器指针为键区分不同会话。`CollectProfilingData()` 现在接受分析器键参数来正确存储事件,`EndProfiling()` 仅返回属于请求会话的事件,实现了会话级别的性能数据隔离。 **影响范围:** 确保在同一 WebGPU 设备上运行多个 ONNX Runtime 会话时,性能分析数据能够正确归属到各自的会话,提升了多模型场景下的调试和性能分析能力。
## PR 主要改动总结 **1. 主要功能改动:** 将 `is_channels_last` 参数从必需参数改为 `std::optional` 可选参数,涉及 MatMul、GEMM、Attention 和 Conv 等算子的实现。 **2. 解决的问题:** 解决了当 `bias` 参数未使用时,仍需为 `is_channels_last` 传递无意义值的问题,消除了代码中的歧义和冗余。使用 `std::optional` 后,在不需要该参数时可以安全地忽略它,提高了代码可读性和维护性。 **3. 对 WebGPU 的影响:** 此 PR 启用了 MatMul 算子的 Split-K 优化路径,可能提升 WebGPU 后端的矩阵乘法性能。 **4. 技术要点:** 修改涵盖 13 个文件(净增 19 行代码),主要集中在数学运算相关模块(matmul、gemm)和神经网络算子(attention、conv),通过类型系统改进简化了参数传递逻辑。
## PR 主要改动总结 **1. 主要功能:** 为 `com.microsoft.MoE` 和 `com.microsoft.QMoE` 算子添加了 ReLU² (relu_squared) 激活函数支持,涉及 CPU 和 WebGPU 两个后端的实现。 **2. 解决问题:** 支持使用 relu² 激活函数的 Nemotron 系列模型(如 NVIDIA-Nemotron-3-Nano-30B),使这些模型能够在 ONNX Runtime 中正确运行 MoE (Mixture of Experts) 层。 **3. WebGPU 影响:** 新增了 `activation.wgsl.template` 着色器模板文件,实现了 WebGPU 版本的 relu² 激活函数计算;更新了 `qmoe.cc` 中的 WebGPU kernel 以支持新的激活类型。 **4. 技术要点:** 修改涵盖算子定义、CPU/WebGPU 实现、工具函数和测试用例;代码新增 139 行,删除 8 行;PR 中还提到需要进一步确定命名规范(relu2 vs relu_squared)并添加 CUDA 支持。
## PR 主要改动总结 **核心改动:** 引入了融合的 `DivCeil` 算子来解决 WebGPU 中 Div(除法)和 Ceil(向上取整)组合操作的精度问题。 **解决问题:** 修复了 issue #27661 中报告的除法精度问题。与之前的 PR #27662 不同,此方案通过新增融合算子而非修改现有 Div 算子来解决问题,避免了对现有功能的影响。 **技术实现:** 添加了图优化转换器 `DivCeilFusion`,能够自动识别 Div+Ceil 的模式并将其融合为单一的 `DivCeil` 算子;同时在 WebGPU 后端实现了该融合算子的执行逻辑,通过一次计算完成除法和向上取整,消除中间精度损失。 **WebGPU 影响:** 提升了 WebGPU 执行提供程序的数值计算精度和性能,特别是在涉及除法后需要向上取整的场景(如张量维度计算)中更加可靠。