ONNX Runtime WebGPU PR Monitor

Last Updated: 09/28/2026, 11:06 PM | Total: 549 PRs

Showing 1-10 of 107 PRs
Page 1 of 11
👤 saravanan-a-r📅 Created: 09/28/2026
🤖 AI 摘要

该 PR 为 onnxruntime-web 的标准非代理推理路径补齐 LoRA 适配器的 JavaScript 接口,允许从 URL 或 Uint8Array 加载 .onnx_adapter 文件,并通过单次 session.run 的 activeLoraAdapters 参数启用,不影响后续未指定适配器的推理。实现主要贯通公共 API、后端适配器管理、运行参数传递和 WASM C/C++ 绑定,复用已编译进 WASM 的原生 LoRA 能力,同时提供独立于会话的适配器生命周期及显式释放接口,并新增单元测试。支持范围明确限定于非代理路径,不能据此认为代理模式也已获得支持。所列改动未显示新增 WebGPU 算子或 GPU 内核优化,且缺少 WebGPU 执行提供程序的适配器兼容性测试与性能数据,因此无法确认具体模型在 WebGPU 上的可用性或推理性能影响。

📁 Changed Files (20 files, 510 changes: +501/-9)
cmake/onnxruntime_webassembly.cmake
js/common/lib/backend-impl.ts
js/common/lib/backend.ts
js/common/lib/index.ts
js/common/lib/inference-session-impl.ts
js/common/lib/inference-session.ts
js/common/lib/lora-adapter-impl.ts
js/common/lib/lora-adapter.ts
js/eslint.config.mjs
js/web/lib/backend-wasm.ts
js/web/lib/wasm/lora-adapter-handler.ts
js/web/lib/wasm/proxy-wrapper.ts
js/web/lib/wasm/run-options.ts
js/web/lib/wasm/session-handler-inference.ts
js/web/lib/wasm/wasm-core-impl.ts
js/web/lib/wasm/wasm-types.ts
js/web/test/unittests/backends/wasm/test-lora-adapter.ts
js/web/test/unittests/index.ts
onnxruntime/wasm/api.cc
onnxruntime/wasm/api.h
👤 pratikgx📅 Created: 09/28/2026
🤖 AI 摘要

该 PR 仅修复文档与贡献指南中的失效链接,改善开发者查阅发布说明、扩展算子和示例资源时的可达性,不涉及推理代码变更。主要调整包括补全 GitHub 目录链接中的 tree/main、将扩展算子文档指向合并后的 custom_ops.md,并将发布流程及 WebGPU 分页注意力设计文档中的技能路径从 .agents/skills 更正为 .github/skills。Python 文档改为引用实际发布的 v1.24.1 和 v1.13.1,两个 Notebook 的 ONNX Model Zoo 链接迁移至 validated/ 路径,不存在的高层推理设计文档引用则保留为纯文本。根据 PR 描述,新链接目标均已通过 GitHub API 确认存在;这些修改不改变 WebGPU 实现、GPU 推理性能或运行时兼容性,也不代表新增分页注意力功能。

📁 Changed Files (8 files, 26 changes: +13/-13)
CONTRIBUTING.md
docs/ReleaseNotesWorkflow.md
docs/Roadmap.md
docs/design/webgpu_paged_attention.md
docs/onnxruntime_extensions.md
docs/python/README.rst
docs/python/notebooks/onnx-inference-byoc-gpu-cpu-aks.ipynb
docs/python/notebooks/quantization_f8.ipynb
👤 sayanshaw24📅 Created: 09/28/2026
🤖 AI 摘要

该 PR 扩展了 ONNX Runtime WebGPU 执行提供程序中的量化混合专家算子 QMoE,使其接受 INT2 专家权重及不同全连接层使用不同整数位宽的配置,与此前 CUDA 引入的算子契约对齐。核心改动位于 QMoE 实现及接口,将 FC1、FC2、FC3 各自的位宽传递给现有 MatMulNBits,复用其已有的 2 位解包着色器能力,无需新增着色器路径。测试将原先拒绝混合位宽的用例替换为使用非零权重、FC1 为 INT2 且 FC2 为 INT4 的数值测试,覆盖优化后的单 token 执行路径。这些改动扩大了 WebGPU 对低比特及混合位宽 QMoE 模型的兼容范围,但目前仅完成格式和静态检查,WebGPU 构建、目标测试及既有回归测试仍待完成,也缺少性能测量,尚不能确认运行正确性或量化加速收益。

📁 Changed Files (3 files, 60 changes: +26/-34)
onnxruntime/contrib_ops/webgpu/moe/qmoe.cc
onnxruntime/contrib_ops/webgpu/moe/qmoe.h
onnxruntime/test/providers/webgpu/contrib_ops/moe_test.cc
👤 qjia7📅 Created: 09/28/2026
🤖 AI 摘要

该 PR 将 WebGPU 命令录制与缓冲区复用跟踪解耦,移除 CommandRecordingState 中的互斥锁、待释放缓冲区列表和未提交工作标志,同时保留插件执行提供程序(EP)的并发能力。插件 Env 及不带显式 stream 的分配、传输操作改用独立录制并在返回前提交,而显式 stream 操作继续使用 Session 的录制并延迟提交,避免不同操作共享录制状态。BufferManager 在现有缓存锁保护下,仅为支持缓冲区复用的缓存按录制跟踪待释放资源,提交时只将对应录制的缓冲区归还池中,放弃录制时则释放保留引用。测试调整保留了分配器操作与同一 Session 的 Run 重叠执行的插件并发覆盖,并补充同一 Session 串行 Run、GPU 间传输、跨录制缓存复用和录制放弃场景,同时删除内置 WebGPU 并发测试并更新插件并发保证文档。该改动简化了录制状态同步与资源回收边界,但没有性能基准可量化收益,且描述末尾截断,无法据此确定内置 WebGPU 并发使用及并发图捕获的完整支持边界。

📁 Changed Files (21 files, 1261 changes: +273/-988)
onnxruntime/core/providers/webgpu/allocator.cc
onnxruntime/core/providers/webgpu/allocator.h
onnxruntime/core/providers/webgpu/buffer_manager.cc
onnxruntime/core/providers/webgpu/buffer_manager.h
onnxruntime/core/providers/webgpu/compute_context.h
onnxruntime/core/providers/webgpu/data_transfer.cc
onnxruntime/core/providers/webgpu/data_transfer.h
onnxruntime/core/providers/webgpu/ep/README.md
onnxruntime/core/providers/webgpu/ep/allocator.cc
onnxruntime/core/providers/webgpu/ep/allocator.h
onnxruntime/core/providers/webgpu/ep/factory.cc
onnxruntime/core/providers/webgpu/ep/sync_stream.cc
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc
onnxruntime/core/providers/webgpu/webgpu_execution_provider.h
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/test/providers/webgpu/concurrent_context_test.cc
onnxruntime/test/providers/webgpu/plugin/test_webgpu_concurrency.cc
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
onnxruntime/test/providers/webgpu/webgpu_stream_regression_test.cc
👤 SharmaRithik📅 Created: 09/26/2026
🤖 AI 摘要

该改动修复了 ONNX Runtime WebGPU Execution Provider 在未启用 Resizable BAR 的独立显卡上上传模型初始化权重失败的问题:CPU 可直接访问的显存窗口受限时,大权重分配可能触发“Allocation size too large”。核心实现是在 WebGPU 上下文中根据 CPU 能否访问全部显存选择上传路径:满足条件时直接写入 GPU 内存,否则通过临时缓冲区中转,避免仅凭 Dawn 暴露 BufferMapExtendedUsages 就选择直接上传。修改还涉及上下文接口及相关测试,PR 描述确认 Qwen3-0.6B FP16 已能在受影响的 AMD Radeon RX 7900 XT 上加载并运行。该方案保留了支持完整显存访问时的直接上传路径,并提高了其他设备的兼容性;回退路径增加了中转复制,但现有信息未提供加载耗时或推理性能的量化数据。

📁 Changed Files (3 files, 90 changes: +90/-0)
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
👤 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 (5 files, 225 changes: +199/-26)
docs/design/webgpu_paged_attention.md
onnxruntime/contrib_ops/webgpu/bert/paged_attention.cc
onnxruntime/core/providers/webgpu/nn/layer_norm.cc
onnxruntime/core/providers/webgpu/nn/layer_norm.h
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, 129 changes: +116/-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