ONNX Runtime WebGPU PR Monitor

Last Updated: 05/02/2026, 07:00 PM | Total: 211 PRs

Showing 1-10 of 37 PRs
Page 1 of 4
👤 hariharans29📅 Created: 05/02/2026
🤖 AI 摘要

## PR 主要改动总结 ### 1. 主要功能改动 该 PR 重构了 WebGPU 的 BufferManager 创建时机和路由机制,采用延迟创建(lazy creation)策略,并引入 `graph_buffer_mgr_active_` 标志来控制图模式下的 buffer 管理器在 OnRunStart/OnRunEnd 之间的激活状态。 ### 2. 解决的核心问题 修复了图捕获(graph capture)首次重放时的**陈旧缓冲区绑定问题**:当启用图捕获时,捕获的命令持有捕获阶段的 buffer 指针,如果分配器在首次 Replay() 前释放并重用了内存槽位,会导致调度读取过期内存,产生错误的 logits 张量输出,影响模型推理正确性。 ### 3. 对 WebGPU 支持的影响 该修复对 WebGPU 的图捕获优化功能至关重要,特别是在 MatMulNBits MLP/QKV 融合等会改变内存分配模式的场景下,确保了固定形状解码和动态形状推理的正确性。 ### 4. 技术要点 - 重构 `GpuBufferAllocator` 使用 `std::function<const BufferManager&()>` 动态解析活跃的 buffer 管理器 - 新增 `WebGpuContext::WaitForQueueIdle()` 和 `ComputeContextBase::FlushAndWait()` 辅助方法用于 buffer 管理器生命周期管理 - 通过门控机制避免在非图执行期间使用图模式的 buffer 管理器

📁 Changed Files (7 files, 69 changes: +49/-20)
onnxruntime/core/providers/webgpu/allocator.cc
onnxruntime/core/providers/webgpu/allocator.h
onnxruntime/core/providers/webgpu/compute_context.h
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
👤 edgchen1📅 Created: 05/02/2026
🤖 AI 摘要

## PR 主要改动总结 **1. 主要改动:** 这是一个版本号更新的 PR,将 WebGPU 执行提供程序插件的版本号从之前的版本升级到 0.2.0。 **2. 改动目的:** 在创建发布分支后进行常规的版本号升级操作,标志着新的开发周期开始。这是软件发布流程中的标准做法,用于区分不同的开发阶段。 **3. 影响范围:** 改动非常小,仅修改了 `plugin-ep-webgpu/VERSION_NUMBER` 文件中的一行内容(1行新增,1行删除)。这不涉及任何功能性变更,对 WebGPU 的实际支持能力没有直接影响。 **4. 技术要点:** 这是一个纯粹的版本管理操作,属于项目维护性质的提交,为后续的 0.2.0 版本开发做准备。

📁 Changed Files (1 files, 2 changes: +1/-1)
plugin-ep-webgpu/VERSION_NUMBER
👤 edgchen1📅 Created: 05/02/2026
🤖 AI 摘要

## PR 主要改动总结 **核心改动:** 这个 PR 为 ONNX Runtime 的 WebGPU 插件执行提供器(Execution Provider)新增了一个发布信息文档(RELEASE.md)。 **主要功能:** 添加了 62 行的发布说明文档,用于记录 WebGPU 插件 EP 的版本发布信息、更新日志和相关说明。这是一个纯文档性质的改动,没有涉及代码逻辑变更。 **文档价值:** 为 WebGPU 插件执行提供器建立了正式的发布信息追踪机制,方便开发者和用户了解各版本的功能特性、bug 修复和兼容性变更,提升了项目的可维护性和透明度。 **影响范围:** 这是一个文档完善性改进,对现有 WebGPU 功能本身没有直接影响,但有助于用户更好地理解和使用 WebGPU 执行提供器的不同版本。

📁 Changed Files (1 files, 62 changes: +62/-0)
plugin-ep-webgpu/RELEASE.md
👤 edgchen1📅 Created: 05/01/2026
🤖 AI 摘要

## PR 主要改动总结 **核心功能:** 为 ONNX Runtime 的 WebGPU 插件式 Execution Provider 添加了完整的 C#/.NET NuGet 打包支持,新增了 `Microsoft.ML.OnnxRuntime.EP.WebGpu` NuGet 包。 **解决的问题:** 填补了 WebGPU EP 在 .NET 生态中的空白,使 C# 开发者能够通过 NuGet 包管理器方便地集成和使用 WebGPU 加速能力,之前只支持 Python。 **技术要点:** - 新增完整的打包基础设施,包括 `.csproj` 项目文件、NuGet 打包脚本 (`pack_nuget.py`) 和 CI/CD 流水线配置 - 提供 `WebGpuEp.cs` 辅助类自动处理跨平台的本地库路径解析和 EP 注册 - 包含测试项目、文档和代码示例,实现了从构建、打包到使用的完整工作流 **对 WebGPU 支持的影响:** 显著扩展了 WebGPU EP 的受众范围和可用性,使其能够在 .NET 应用中无缝部署,推动 WebGPU 在跨语言场景下的采用。

📁 Changed Files (15 files, 1179 changes: +1171/-8)
plugin-ep-webgpu/README.md
plugin-ep-webgpu/csharp/Microsoft.ML.OnnxRuntime.EP.WebGpu/Microsoft.ML.OnnxRuntime.EP.WebGpu.csproj
plugin-ep-webgpu/csharp/Microsoft.ML.OnnxRuntime.EP.WebGpu/README.md
plugin-ep-webgpu/csharp/Microsoft.ML.OnnxRuntime.EP.WebGpu/WebGpuEp.cs
plugin-ep-webgpu/csharp/README.md
plugin-ep-webgpu/csharp/pack_nuget.py
plugin-ep-webgpu/csharp/test/WebGpuEpNuGetTest/Program.cs
plugin-ep-webgpu/csharp/test/WebGpuEpNuGetTest/WebGpuEpNuGetTest.csproj
plugin-ep-webgpu/csharp/test/WebGpuEpNuGetTest/generate_mul_model.py
plugin-ep-webgpu/csharp/test/WebGpuEpNuGetTest/mul.onnx
plugin-ep-webgpu/python/README.md
plugin-ep-webgpu/python/build_wheel.py
tools/ci_build/github/azure-pipelines/stages/plugin-webgpu-nuget-packaging-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-webgpu-packaging-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-win-webgpu-test-stage.yml
👤 prathikr📅 Created: 04/30/2026
🤖 AI 摘要

## PR 主要改动总结 **主要功能改动:** 此 PR 将 Foundry 本地打包流程集成到 WebGPU 插件的执行提供程序(EP)打包管道中。 **解决的问题:** 通过在 Azure Pipeline 配置文件中新增 148 行代码(仅删除 4 行),扩展了 WebGPU 插件的打包能力,使其支持 Foundry 工具链的本地打包流程,提升了构建和分发的自动化程度。 **技术要点:** 改动集中在 CI/CD 管道配置层面,修改了 `plugin-webgpu-packaging-stage.yml` 文件,表明这是一个构建基础设施的增强,为 WebGPU 执行提供程序添加了新的打包阶段和步骤。 **影响:** 这将使 ONNX Runtime 的 WebGPU 插件能够通过 Foundry 平台进行更规范的本地打包和部署,改善开发者的集成体验。

📁 Changed Files (1 files, 157 changes: +152/-5)
tools/ci_build/github/azure-pipelines/stages/plugin-webgpu-packaging-stage.yml
👤 tianleiwu📅 Created: 04/30/2026
🤖 AI 摘要

## PR 主要改动总结 ### 核心功能 此 PR 为 CUDA 插件式执行提供器(Plugin EP)添加了 Python wheel 打包支持,创建了 `onnxruntime-ep-cuda` Python 包,使 CUDA EP 可以作为独立插件进行分发和安装。 ### 解决的问题 参照 WebGPU 插件 EP 的打包模式(#28226),建立了完整的 CUDA 插件打包流程,包括 Linux 和 Windows x64 平台的 CI/CD 管道,实现了插件化部署,降低了主包体积并提高了灵活性。 ### 与 WebGPU 的关联 虽然 PR 标题提到 WebGPU,但实际内容是**复用 WebGPU 插件 EP 的打包架构和设计模式**,将相同的插件化方案应用到 CUDA EP 上,形成统一的插件打包范式。 ### 技术要点 - 新增了插件定位和注册的辅助 API - 扩展了版本管理以支持 PEP 440 兼容的版本号 - 使用 manylinux CUDA Docker 镜像构建 Linux wheel 包 - 目前仅支持 x64 架构,与现有构建流程保持一致

📁 Changed Files (20 files, 785 changes: +664/-121)
plugin-ep-cuda/MIN_ONNXRUNTIME_VERSION
plugin-ep-cuda/README.md
plugin-ep-cuda/python/README.md
plugin-ep-cuda/python/build_wheel.py
plugin-ep-cuda/python/onnxruntime_ep_cuda/README.md
plugin-ep-cuda/python/onnxruntime_ep_cuda/__init__.py
plugin-ep-cuda/python/pyproject.toml.in
plugin-ep-cuda/python/requirements-build-wheel.txt
plugin-ep-cuda/python/setup.py
tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.yml
tools/ci_build/github/azure-pipelines/stages/plugin-cuda-packaging-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-linux-cuda-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-win-cuda-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-win-webgpu-stage.yml
tools/ci_build/github/azure-pipelines/templates/set-plugin-build-variables-step.yml
tools/ci_build/github/linux/build_cuda_plugin_package.sh
tools/ci_build/github/linux/build_cuda_plugin_python_package.sh
tools/ci_build/github/linux/docker/Dockerfile.manylinux2_28_cuda
tools/ci_build/github/linux/docker/scripts/manylinux/install_centos.sh
tools/ci_build/set_plugin_build_variables.py
👤 maxwbuckley📅 Created: 04/30/2026
🤖 AI 摘要

## PR 主要改动总结 **注意:此 PR 实际上与 WebGPU 无关,而是关于 CoreML EP 的改进** ### 核心改动 为 CoreML EP 添加了对 `com.microsoft:FusedConv` 算子的支持,覆盖 MLProgram 和 NeuralNetwork 两种执行路径。 ### 解决的问题 解决了预优化模型(通过 CPU EP 或 WebGPU 等 EP 优化并保存的模型)在 CoreML EP 上加载时的分区碎片化问题。之前当模型包含 `FusedConv` 节点时,CoreML EP 无法识别这些节点,导致无法有效执行。 ### WebGPU 关联 虽然 PR 针对 CoreML EP,但与 WebGPU 相关:当使用 WebGPU EP 优化模型并保存后,生成的 `FusedConv` 节点现在可以被 CoreML EP 正确处理,改善了跨平台模型部署的兼容性。 ### 技术要点 `FusedConv` 是 Conv+Activation 融合算子,由 ORT 的 `ConvActivationFusion` 优化 pass 生成。此改动主要影响移动端部署和 ORT 格式模型的使用场景,新增 132 行测试代码和 107 行实现代码。

📁 Changed Files (4 files, 247 changes: +244/-3)
onnxruntime/core/providers/coreml/builders/impl/conv_op_builder.cc
onnxruntime/core/providers/coreml/builders/op_builder_factory.cc
onnxruntime/test/providers/coreml/coreml_basic_test.cc
tools/ci_build/github/apple/coreml_supported_mlprogram_ops.md
👤 xhcao📅 Created: 04/30/2026
🤖 AI 摘要

## ONNX Runtime WebGPU PR 改动总结 ### 主要改动 此 PR 将 `gemm-subgroup` 优化扩展到 Conv(卷积)算子,并根据工作组(workgroup)数量动态决定是否启用 gemm-subgroup 优化。 ### 解决的问题 为 WebGPU 后端的卷积操作引入了 subgroup 级别的 GEMM 优化,增强了英特尔硬件上的性能表现,同时添加了基于工作组数量的智能启用机制,避免在不适合的场景下使用该优化。 ### 技术要点 - 修改了 matmul 相关代码,增加工作组数量参数传递(添加参数到函数接口) - 在 conv.cc 中集成了 gemm-subgroup 支持 - 优化决策逻辑更加智能化,根据实际计算规模动态选择是否使用 subgroup 优化 ### 影响范围 代码改动较小(22 行新增,10 行删除),主要集中在英特尔厂商特定的数学运算优化模块,对 WebGPU 的卷积性能有积极影响。

📁 Changed Files (4 files, 32 changes: +22/-10)
onnxruntime/core/providers/webgpu/nn/conv.cc
onnxruntime/core/providers/webgpu/vendor/intel/math/gemm_subgroup.cc
onnxruntime/core/providers/webgpu/vendor/intel/math/matmul.cc
onnxruntime/core/providers/webgpu/vendor/intel/math/matmul.h
👤 hariharans29📅 Created: 04/30/2026
🤖 AI 摘要

## PR 主要改动总结 ### 核心功能 此 PR 为 ONNX Runtime 的 WebGPU 后端添加了两个专门针对 Qwen3 模型的图融合优化,分别是 **MatMulNBitsMlp** 和 **MatMulNBitsQkv** 融合算子及其对应的 kernel 实现。 ### 解决的问题 - **MatMulNBitsMlp**:将 SwiGLU MLP 块中的 5-7 个独立操作(可选的 LayerNorm + 两个 MatMulNBits 投影 + 可选 bias + Sigmoid/Mul(SiLU) + 逐元素乘法)融合为单次 dispatch,显著减少 GPU 调用开销 - **MatMulNBitsQkv**:将注意力机制中的 4 个操作(可选的 LayerNorm + 三个共享输入的 Q/K/V 投影)融合为单次 dispatch ### WebGPU 支持影响 这两个融合专为 WebGPU 优化,通过减少多次 kernel 调度和中间数据传输,大幅提升 Qwen3 等 Transformer 模型在 WebGPU 上的推理性能,特别是在量化(N-bit)场景下。 ### 技术要点 重构了现有 `MatMulNBits` 的调度逻辑以便新融合 kernel 复用判断条件;新增完整的 op schema、WGSL shader 模板以及对应的图优化和单元测试,共新增约 3800 行代码。

📁 Changed Files (20 files, 3879 changes: +3863/-16)
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_common.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_common.h
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_mlp.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_mlp.h
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_mlp.wgsl.template
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_mlp_wide_tile_m1.wgsl.template
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_qkv.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_qkv.h
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_qkv.wgsl.template
onnxruntime/contrib_ops/webgpu/webgpu_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/core/optimizer/graph_transformer_utils.cc
onnxruntime/core/optimizer/matmul_nbits_mlp_fusion.cc
onnxruntime/core/optimizer/matmul_nbits_mlp_fusion.h
onnxruntime/core/optimizer/matmul_nbits_qkv_fusion.cc
onnxruntime/core/optimizer/matmul_nbits_qkv_fusion.h
onnxruntime/test/optimizer/graph_transform_utils_test.cc
onnxruntime/test/optimizer/matmul_nbits_mlp_fusion_test.cc
onnxruntime/test/optimizer/matmul_nbits_qkv_fusion_test.cc
👤 qjia7📅 Created: 04/29/2026
🤖 AI 摘要

## PR 主要改动总结 **核心改动:** 为 ONNX Runtime WebGPU 实现了基于图标注 ID 的独立缓冲区管理器(per-graph buffer manager),替换原有的全局共享缓冲区管理器。这使得多个使用不同提示词的生成器可以各自拥有隔离的缓冲区缓存。 **解决的问题:** 修复了在启用图捕获(graph capture)时,多个生成器之间可能发生的缓冲区数据污染问题。通过为每个图分配独立的缓冲区管理器,确保不同生成器的执行互不干扰。 **技术要点:** 1. 引入 `per_graph_buffer_mgrs_` 映射表,以图标注 ID 为键存储各自的缓冲区管理器 2. 重构 `GpuBufferAllocator`,将固定的 `const BufferManager&` 改为支持动态路由的指针和 `SetBufferManager()` 方法 3. 新增 `ReleaseGraph` API 贯穿整个调用栈(从 EP 基类到 C API),允许在生成器销毁时释放已捕获的图资源,包括命令、缓冲区管理器和跟踪状态

📁 Changed Files (17 files, 242 changes: +209/-33)
include/onnxruntime/core/framework/execution_provider.h
include/onnxruntime/core/session/onnxruntime_c_api.h
include/onnxruntime/core/session/onnxruntime_ep_c_api.h
onnxruntime/core/providers/webgpu/allocator.cc
onnxruntime/core/providers/webgpu/allocator.h
onnxruntime/core/providers/webgpu/ep/ep.cc
onnxruntime/core/providers/webgpu/ep/ep.h
onnxruntime/core/providers/webgpu/ep/factory.cc
onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc
onnxruntime/core/providers/webgpu/webgpu_execution_provider.h
onnxruntime/core/session/inference_session.cc
onnxruntime/core/session/inference_session.h
onnxruntime/core/session/onnxruntime_c_api.cc
onnxruntime/core/session/ort_apis.h
onnxruntime/core/session/ort_version_check.h
onnxruntime/core/session/plugin_ep/ep_plugin_provider_interfaces.cc
onnxruntime/core/session/plugin_ep/ep_plugin_provider_interfaces.h