ONNX Runtime WebGPU PR Monitor

Last Updated: 09/25/2026, 09:14 PM | Total: 543 PRs

Showing 1-10 of 104 PRs
Page 1 of 11
👤 aciddelgado📅 Created: 09/25/2026
🤖 AI 摘要

该 PR 为 WebGPU PagedAttention 增加 q_norm_weight、k_norm_weight 和 qk_norm_epsilon 支持,解决 Qwen3.8 / DFlash2 路径因不支持这些输入而报错的问题,并覆盖独立及打包 QKV、有无 RoPE 的预处理场景。实现复用共享归一化着色器,逐头对 Q 和新追加的 K 执行 RMSNorm,归约与增益乘法采用 FP32,结果转为 FP16 后再进入旋转位置编码,以匹配 CUDA/参考实现的算术顺序;已有 K 缓存及所有 V 值保持不变。共享归一化的 FP32 算术模式为显式启用,不改变现有调用方的默认行为,同时在启用 Q/K 归一化时要求 epsilon 为有限正数。文件路径表明改动还涉及 GatedDeltaNet、FlashAttention 着色器、算子定义及相关测试和文档,但现有信息不足以确认这些关联修改的具体语义,也没有性能基准可用于量化新增归一化的开销或收益。

📁 Changed Files (16 files, 692 changes: +580/-112)
docs/ContribOperators.md
docs/design/webgpu_paged_attention.md
onnxruntime/contrib_ops/webgpu/bert/attention_common.h
onnxruntime/contrib_ops/webgpu/bert/flash_attention.wgsl.template
onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.h
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.wgsl.template
onnxruntime/contrib_ops/webgpu/bert/paged_attention.cc
onnxruntime/contrib_ops/webgpu/bert/paged_attention.h
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/core/providers/webgpu/nn/layer_norm.cc
onnxruntime/core/providers/webgpu/nn/layer_norm.h
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
onnxruntime/test/contrib_ops/paged_attention_op_test.cc
onnxruntime/test/python/transformers/test_paged_attention.py
🤖 AI 摘要

该改动将会话选项 enable_profiling 传递到 WebGPU 初始化流程,使 WebGPU EP 仅在会话启用性能分析时才请求 timestamp-query,避免普通推理无条件申请 GPU 时间戳查询能力。从修改路径看,配置传递覆盖了 provider 注册、Python 绑定及插件式 EP 工厂,并涉及 EP C API 与插件接口的配套调整。测试改动涉及 WebGPU 上下文和插件 EP,旨在验证相关初始化及配置传递行为,但现有信息未提供具体断言。此举可减少未启用 profiling 时对可选 WebGPU 特性的依赖,有助于改善兼容性;不过,缺少设备支持情况、失败回退逻辑和性能测量,无法确认具体兼容性收益或推理速度变化。

📁 Changed Files (14 files, 111 changes: +98/-13)
include/onnxruntime/core/session/onnxruntime_ep_c_api.h
onnxruntime/core/platform/windows/debug_alloc.cc
onnxruntime/core/providers/webgpu/ep/factory.cc
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/core/providers/webgpu/webgpu_provider_factory_creator.h
onnxruntime/core/session/plugin_ep/ep_api.cc
onnxruntime/core/session/plugin_ep/ep_api.h
onnxruntime/core/session/plugin_ep/ep_factory_webgpu.cc
onnxruntime/core/session/provider_registration.cc
onnxruntime/python/onnxruntime_pybind_state.cc
onnxruntime/test/framework/ep_plugin_provider_test.cc
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
👤 gyagp📅 Created: 09/25/2026
🤖 AI 摘要

该改动针对 ONNX Runtime WebGPU 的量化 MatMulNBits,在报告支持相应能力的 AMD D3D12 适配器上优先选择子组大小为 64 的 16×16×16 FP16 subgroup-matrix 配置,同时保留 wave32 回退和其他适配器的既有配置偏好。实现上同步调整主机端配置与 WGSL 内核:小 M 使用宽 tile,较大 M 使用两个或四个 wave 共享反量化权重,并在必要时缩小 K 分块以整除 K,将 tile 尺寸纳入程序缓存键以区分不同内核配置。这些策略旨在通过权重共享和更大的 K 分块减少重复工作与同步开销;PR 描述称多数已测 prefill 形状获得性能提升,但未提供具体测试形状、硬件型号或加速幅度。新增独立的 WebGPU 4 位和 8 位正确性测试,覆盖三种 tile 策略及带或不带偏置、零点的情况,并显式选择 WebGPU、禁用 CPU 回退,避免回退执行掩盖 GPU 路径问题。

📁 Changed Files (4 files, 418 changes: +277/-141)
onnxruntime/contrib_ops/webgpu/quantization/subgroup_matrix_matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/subgroup_matrix_matmul_nbits.h
onnxruntime/contrib_ops/webgpu/quantization/subgroup_matrix_matmul_nbits_16x16x16_128.wgsl.template
onnxruntime/test/providers/webgpu/quantization/matmul_nbits_test.cc
👤 mei1127📅 Created: 09/25/2026
🤖 AI 摘要

该 PR 将 D3D12 Agility SDK 运行时 DLL 随 Python wheel 一同分发,覆盖内置 WebGPU 执行提供程序(EP)的标准 ONNX Runtime 包和独立 WebGPU Plugin EP 包,减少 Windows 部署时手动准备运行时依赖的需求。改动涉及 CMake、标准包与插件包的 wheel 打包逻辑,并同步调整构建参数、Windows 插件 CI、测试及文档,使构建与分发流程配合运行时 DLL 的打包。其主要影响是改善 Windows 上 WebGPU 使用 D3D12 后端时的依赖分发与部署体验,而非直接优化 GPU 推理计算。现有信息未提供具体 DLL 版本、加载策略、系统与驱动要求或性能测试结果,因此不能据此确认兼容性范围扩大或推理性能提升。

📁 Changed Files (13 files, 126 changes: +91/-35)
cmake/external/onnxruntime_external_deps.cmake
cmake/onnxruntime_providers_webgpu.cmake
cmake/onnxruntime_python.cmake
docs/BuildWithDawnAgilitySDK.md
plugin-ep-webgpu/README.md
plugin-ep-webgpu/python/build_wheel.py
plugin-ep-webgpu/python/onnxruntime_ep_webgpu/README.md
plugin-ep-webgpu/python/pyproject.toml.in
plugin-ep-webgpu/python/test/test_webgpu_plugin_ep.py
setup.py
tools/ci_build/build.py
tools/ci_build/build_args.py
tools/ci_build/github/azure-pipelines/stages/plugin-win-webgpu-stage.yml
👤 sayanshaw24📅 Created: 09/24/2026
🤖 AI 摘要

该 PR 为 WebGPU 的 QMoE 增加块缩放 FP8 W8A16 推理支持,可直接使用 Qwen 3.8 Flash Next MTP 格式的专家权重,无需重新量化或展开为稠密权重。实现扩展了算子定义和 WebGPU 调度:当 quant_type="fp8" 且 block_size=128 时,读取形状为 [E, ceil(N/128), ceil(K/128)] 的 FP32 缩放张量,并通过新增 WGSL 着色器解码 E4M3 原始字节,在 FP16/FP32 累加过程中应用对应块的缩放。预填充采用直接专家派发,单 token 解码采用间接 top-k 专家派发,避免额外权重转换与稠密化开销,但未提供性能或显存实测数据,无法量化收益。不指定 block_size 时保留原有 CUDA 全局缩放 FP8 契约,整数、FP4、NVFP4 和 WFP4AFP8 行为不变,并新增具有不同专家缩放乘积的双专家精确性测试。验证信息确认 Windows Release 下 WebGPU provider 及 provider test 构建成功,但测试执行记录被截断,无法确认具体测试的运行结果。

📁 Changed Files (6 files, 439 changes: +369/-70)
onnxruntime/contrib_ops/webgpu/bert/engram_gate.h
onnxruntime/contrib_ops/webgpu/moe/block_fp8_expert_matmul.wgsl.template
onnxruntime/contrib_ops/webgpu/moe/qmoe.cc
onnxruntime/contrib_ops/webgpu/moe/qmoe.h
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/test/providers/webgpu/contrib_ops/moe_test.cc
👤 aciddelgado📅 Created: 09/24/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 的 WebGPU PagedAttention 补齐 is_causal=0 且 local_window_size>0 的支持,移除阻碍 Qwen3.8 / DFlash2 路径的参数校验限制。实现上修正 dense prefill 和 dense split-reduce 两条注意力路径,按各序列实际长度独立计算相对当前查询的左右边界:非因果模式仅解除右侧因果限制,左边界仍为 max(0, P+q+1-W),右边界为 P+Q,而非改成序列末尾窗口或对称窗口。相关着色器同步调整分块排除、分数掩码和 softmax 归约中的边界处理,并防止左边界减法发生无符号下溢,同时更新 Python 测试与设计文档。这些改动旨在使 WebGPU 行为对齐 CUDA/参考实现并扩展模型兼容性;现有信息未提供测试运行结果或性能基准,无法确认具体性能变化。

📁 Changed Files (5 files, 182 changes: +130/-52)
docs/design/webgpu_paged_attention.md
onnxruntime/contrib_ops/webgpu/bert/flash_attention.wgsl.template
onnxruntime/contrib_ops/webgpu/bert/flash_attention_decode_qkv.wgsl.template
onnxruntime/contrib_ops/webgpu/bert/paged_attention.cc
onnxruntime/test/python/transformers/test_paged_attention.py
👤 xiaofeihan1📅 Created: 09/24/2026
🤖 AI 摘要

该改动调整 WebGPU 执行提供程序的运行时兼容策略:将连续支持版本的下限设为 ONNX Runtime 1.30.1,同时精确允许 1.28.3,不扩大为对整个 1.28.x 系列的支持,也不改变 API 版本协商机制。版本策略通过统一定义供运行时兼容性匹配、CMake 配置以及 Python wheel、NuGet 的 README 生成使用,减少构建、运行时判断与发布文档之间的不一致。新增版本匹配和打包回归测试,并让运行时冒烟 CI 继续使用最低连续支持版本 1.30.1,避免依赖例外版本二进制包已公开可用的假设。此改动主要改善兼容性管理和发布一致性,现有信息未体现 WebGPU 算子、GPU 执行路径或推理性能方面的变化。

📁 Changed Files (16 files, 520 changes: +475/-45)
cmake/onnxruntime_providers_webgpu.cmake
cmake/onnxruntime_unittests.cmake
onnxruntime/core/providers/webgpu/ep/api.cc
onnxruntime/core/providers/webgpu/ep/version_policy.h
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
onnxruntime/test/webgpu/version_policy_test.cc
plugin-ep-webgpu/ADDITIONAL_SUPPORTED_ONNXRUNTIME_VERSIONS
plugin-ep-webgpu/MIN_ONNXRUNTIME_VERSION
plugin-ep-webgpu/README.md
plugin-ep-webgpu/_packaging_utils.py
plugin-ep-webgpu/csharp/Microsoft.ML.OnnxRuntime.EP.WebGpu/README.md
plugin-ep-webgpu/csharp/pack_nuget.py
plugin-ep-webgpu/python/build_wheel.py
plugin-ep-webgpu/python/onnxruntime_ep_webgpu/README.md
plugin-ep-webgpu/test_packaging_utils.py
tools/ci_build/github/azure-pipelines/stages/plugin-win-webgpu-test-stage.yml
👤 ykhrustalev📅 Created: 09/24/2026
🤖 AI 摘要

该改动改善了 ONNX Runtime 核心库与 WebGPU EP 插件版本不一致时的错误诊断:核心库可能将旧版 EP 不支持的激活函数融合进 Conv,导致会话创建失败。实现上改为抛出 GetFusedActivationAttr 返回的错误状态,替代仅报告条件失败的 ORT_ENFORCE,并在错误信息中标明不支持的激活函数、属性来源,以及使用 ORT_ENABLE_BASIC 保留独立激活节点的规避方式。同时移除了 FusedConv 中重复的属性解析,因为其 Conv<_, is_fused = true> 基类已完成该操作,并新增针对未知融合激活函数的错误诊断测试。这主要提升了版本兼容问题的可诊断性,并未扩展 WebGPU Conv 支持的融合激活范围;降低优化级别可能影响推理性能,但所给信息没有提供性能测量结果。

📁 Changed Files (4 files, 115 changes: +110/-5)
onnxruntime/contrib_ops/webgpu/fused_conv.cc
onnxruntime/core/providers/webgpu/nn/conv.h
onnxruntime/core/providers/webgpu/nn/fuse_utils.cc
onnxruntime/test/contrib_ops/conv_unknown_activation_test.cc
👤 qjia7📅 Created: 09/22/2026
🤖 AI 摘要

该 PR 修复了 WebGPU 执行提供程序对一维 blocked DequantizeLinear 的分类错误,避免指定 block_size 的输入被误按逐轴反量化处理,导致无报错但输出错误。核心改动位于 WebGPU 量化算子的分类逻辑,并在公共算子测试文件中新增带 zero-point 的一维 int8 分块反量化回归用例。相关 DequantizeLinearOp21BlockedTest 测试共 37 项全部通过,包括新增用例,且构建和 lint 检查通过。此次修复改善了 WebGPU 对该反量化模式的语义兼容性与数值正确性;现有信息未提供性能基准,无法判断其对推理速度的影响。

📁 Changed Files (2 files, 14 changes: +12/-2)
onnxruntime/core/providers/webgpu/quantization/quantize_linear.cc
onnxruntime/test/providers/cpu/tensor/quantize_linear_test.cc
🤖 AI 摘要

该 PR 修复了 ONNX Runtime Web 的 JSEP WebGPU GatherND 实现中,对 vec4 打包 uniform 的索引访问错误,避免在输入秩不小于 5 时生成非法的 `i32(vec4<u32>)` 转换,导致 Tint 拒绝着色器模块。关键改动位于 `computeSliceOffsets` 的打包数据访问逻辑,使输入维度和切片步长的索引读取符合标量计算要求,并新增覆盖 rank-5 输入维度及打包切片步长的回归测试。直接调用测试运行器后,Chrome WebGPU 上全部 7 个 GatherND 用例通过,TypeScript 检查及相关格式、静态检查也通过;最初的 npm 测试失败涉及参数传递和缺少 JSEP WASM 产物,已由后续运行替代验证。该修复主要恢复受影响 GatherND 场景的 WebGPU 可用性与着色器编译兼容性,现有信息未提供性能基准或跨浏览器验证结果,不能据此推断性能提升或其他浏览器的兼容性。

📁 Changed Files (2 files, 80 changes: +69/-11)
js/web/lib/wasm/jsep/webgpu/ops/gather-nd.ts
js/web/test/data/ops/gather-nd.jsonc