## PR 总结 **主要改动:** 修复了 ONNX Runtime WebGPU 后端中 `GatherBlockQuantized` 操作在 Intel Alder Lake (ADL) 和 Tiger Lake (TGL) 平台上的数据索引错误问题。 **解决的问题:** 此前该操作使用了不正确的 `data_indices` 参数,导致在上述 Intel 平台运行 Phi-4-mini 等模型时出现正确性问题。此修复设置了正确的数据索引,解决了模型推理结果不准确的 bug。 **技术要点:** 仅修改一个文件,新增 20 行代码,针对特定硬件平台的量化 Gather 操作进行适配,属于针对性的平台兼容性修复,提升了 WebGPU 在 Intel 集成显卡上的稳定性和正确性。
## PR 主要改动总结 **核心改动:** 修复了 WebGPU 后端中 Transpose 算子的调度大小(dispatch size)计算问题。 **解决的问题:** 该 PR 针对 Transpose 操作符在 WebGPU 实现中的工作组调度逻辑进行了优化,修正了 GPU 计算资源分配不当的问题,这可能导致性能下降或在某些输入形状下出现错误。 **技术要点:** 改动集中在单个文件,代码量较小(净减少 2 行),表明这是一个精准的 bugfix,很可能涉及调度维度计算或工作组大小的修正,确保 Transpose 操作能更高效、正确地利用 WebGPU 的并行计算能力。 **影响:** 提升了 WebGPU 后端执行张量转置操作的正确性和性能,对依赖 Transpose 算子的模型(如注意力机制、卷积网络等)有直接优化效果。
## PR 主要改动总结 **主要功能:** 这个 PR 为 ONNX Runtime 的 WebGPU 包添加了 Python 3.14 支持,同时配置构建流水线在 Python 3.14 环境下跳过 Python 测试。 **解决的问题:** 由于 ONNX 包目前尚不支持 Python 3.14,依赖 ONNX 的 Python 测试会因 `ModuleNotFoundError` 而失败。通过跳过测试避免了构建失败,这与 CUDA 包的处理策略保持一致。 **对 WebGPU 的影响:** WebGPU 包现在可以在 Python 3.14 环境下构建和发布,但测试暂时被禁用。这确保了包的前向兼容性,待 ONNX 支持 Python 3.14 后可恢复完整测试。 **技术要点:** 修改了三个 Azure Pipeline 配置文件,通过条件判断 `ne(variables['PythonVersion'], '3.14')` 来控制测试执行,实现了构建与测试的解耦。
## PR 主要改动总结 **核心功能:** 为 ONNX Runtime 的 WebGPU 执行提供程序 (EP) 实现了 QMoE (Quantized Mixture of Experts) 算子支持。 **关键改动:** 1. 新增完整的 MoE 模块架构,包括基础类 (`moe_base.h`)、MoE 核心实现 (`moe.cc/h`) 和量化版本 (`qmoe.cc/h`),总计新增约 700 行代码 2. 实现了 MoE 计算的关键 WebGPU shader 模板:门控网络 (`gate.wgsl`)、隐藏状态收集 (`hidden_state_gather.wgsl`)、SwiGLU 激活函数 (`swiglu.wgsl`)、最终混合 (`final_mix.wgsl`) 和张量置零操作 3. 在 WebGPU 贡献算子注册表中集成了新的 QMoE 算子,使 WebGPU 后端能够支持大型语言模型中常用的稀疏 MoE 架构推理 **技术意义:** 此改动显著增强了 WebGPU 对现代 Transformer 模型(如 Mixtral、Deepseek 等 MoE 架构模型)的支持能力,使浏览器端高效运行大规模稀疏模型成为可能。
## PR 主要改动总结 **核心改动:** 为 Safari 26.0 版本添加了 `device.AdapterInfo` API 的 polyfill 补丁,通过修改 Dawn WebGPU 实现来兼容该浏览器版本。 **解决问题:** 修复了 issue #26480,Safari 26.0 中缺少或不完全支持 `device.AdapterInfo` 接口导致的兼容性问题。 **WebGPU 支持影响:** 确保 ONNX Runtime 的 WebGPU 后端能在 Safari 26.0 上正常运行,提升了跨浏览器的兼容性和稳定性。 **技术实现:** 通过在 CMake 构建系统中添加针对 Dawn 库的补丁文件(safari_polyfill.patch),在编译时自动应用浏览器兼容性修复,无需修改核心代码。
## PR 主要改动总结 **核心改动:** 此 PR 为 ONNX Runtime 添加了 WebGPU 的 Python 包构建和发布支持,建立了完整的 CI/CD 流水线。 **主要功能:** 1. 新增了 Windows 和 Linux 平台的 WebGPU Python 包构建流水线配置文件,实现自动化打包和测试 2. 在构建脚本中集成 WebGPU 支持,允许通过 `--use_webgpu` 参数启用 WebGPU EP (Execution Provider) 3. 修改 setup.py 以支持 WebGPU 包的元数据和依赖配置 **技术影响:** - 使 Python 开发者可以通过 pip 安装支持 WebGPU 加速的 ONNX Runtime 包 - 建立了跨平台(Windows/Linux)的 WebGPU Python 包构建能力,为 WebGPU 后端的生态推广奠定基础 - 新增约 374 行 CI/CD 配置代码,实现了从构建、打包到发布的完整自动化流程
## PR 主要改动总结 **主要功能改动:** 这是一个针对 WebGPU Dawn API 的性能优化,通过减少对 `wgpuDeviceHasFeature` 函数的调用次数来提升效率。 **解决的问题:** 优化了设备特性检测的调用频率,避免重复查询 WebGPU 设备特性。通过缓存或重构调用逻辑,减少了不必要的 API 调用开销。 **对 WebGPU 支持的影响:** 改善了 ONNX Runtime WebGPU 后端的运行时性能,特别是在 shader 编译和程序管理阶段,降低了与底层 Dawn API 交互的成本。 **技术要点:** 涉及 4 个核心文件的小规模重构(净减少 2 行代码),主要集中在 `shader_helper`、`webgpu_context` 和 `program_manager` 模块,属于 #24281 的后续优化工作。
## PR 主要改动总结 **核心功能:** 该 PR 为 ONNX Runtime 的 WebGPU 后端在 Conv 和 MatMul 算子上实现了 Split-K 优化技术。当矩阵乘法中的 K 维度较大时,通过将计算拆分到多个工作组(workgroups)来提升并行度。 **解决的问题:** 解决了当前实现中 K 维度(内部维度)过大时,单个调用需要在一个超长循环中串行计算的性能瓶颈问题。Split-K 通过重新组织计算,利用多个工作组并行处理部分结果,再通过原子操作合并输出,显著提升计算效率。 **技术实现要点:** 1. 在 `MakeMatMulPackedVec4Source()` 中支持 Split-K 拆分(当前仅支持 batch_size==1 和 vec4 场景) 2. 在 `MatMulWriteFnSource()` 中使用原子内置函数累加部分结果 3. 实现 `SplitKConfig` 配置系统自动决策是否启用优化 4. 新增 `MatMulFillBiasBeforeSplitKProgram` 预初始化输出缓冲区 **影响:** 该优化显著提升了 WebGPU 平台上大规模矩阵乘法和卷积运算的性能表现。
## PR 主要改动总结 **核心改动:** 这个 PR 修改了 `inference_session.cc` 中执行提供程序(Execution Provider)的注册逻辑,确保 WebGPU 的数据传输(DataTransfer)不仅注册到会话级别的数据传输管理器,还同时注册到环境级别的数据传输管理器。 **解决的问题:** 修复了 WebGPU 执行提供程序在使用 CopyTensors C API 时的兼容性问题。之前仅在会话范围内注册数据传输,导致某些跨会话或环境级别的张量复制操作无法正常工作。 **技术影响:** 通过双重注册机制(会话 + 环境),扩大了 WebGPU 数据传输的可用范围,提升了 WebGPU 后端与 ONNX Runtime C API 的集成稳定性,特别是在多会话场景下的数据交互能力。 **代码规模:** 改动非常轻量(仅 16 行新增代码,1 个文件),但对 WebGPU 支持的完整性有重要意义。
## PR 主要改动总结 **核心改动:** 该 PR 将 SplitPackedQKV 和 FusedQKRotaryEmbedding 两个操作融合为一个新的 `SplitPackedQKVWithRotaryEmbedding` 算子,用于优化 Group Query Attention 中的 packed QKV 处理流程。 **解决的问题:** 通过算子融合减少了中间内存访问和重复计算,显著提升了 token 生成性能。在 NVIDIA 5080 GPU 上测试显示,token 生成速度提升约 3%(从 129 TPS 提升到 133 TPS)。 **技术要点:** 新算子的 dispatch size 设计为 `B*S*N*work_per_head`,其中 `work_per_head` 包含两部分:对需要旋转的维度(half_rotary_embedding_dim)先拆分 QKV 再执行旋转编码,对其余维度(need_copy_dim)则直接拆分并存储,实现了计算和内存访问的优化。 **WebGPU 影响:** 该优化专门针对 WebGPU 后端实现,增强了在浏览器环境中运行大语言模型推理的性能表现,特别是在 token 生成阶段。