ONNX Runtime WebGPU PR Monitor

Last Updated: 10/16/2026, 08:41 PM | Total: 643 PRs

Showing 1-10 of 110 PRs
Page 1 of 11
🤖 AI 摘要

该 PR 修复了 ONNX Runtime WebGPU Provider 在先创建关闭权重加载加速的会话、再创建开启加速的会话时,后续会话无法正常启用 D3D12 权重加载加速的问题。实现上将 D3D12 设备选择和适配器选项配置分别提取为 SelectWeightLoadingD3D12Device 与 ConfigureWeightLoadingAdapterOptions,并调整原生 D3D12 设备的保留逻辑,使首次未启用加速时仍能为后续会话保留所需资源。测试新增了从关闭到开启加速的跨会话场景,验证不同会话配置下的加速可用性。这些改动主要改善 D3D12 加速路径的资源生命周期管理和会话配置兼容性;现有信息未提供性能基准,无法量化权重加载耗时的改善,也不能据此判断推理计算速度是否提升。

📁 Changed Files (3 files, 251 changes: +144/-107)
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_provider_options.h
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
👤 xiaofeihan1📅 Created: 10/16/2026
🤖 AI 摘要

此次改动将 WebGPU 的 Upload、MemCpy 和 Download 从 BufferManager 迁移到现有 DataTransferImpl,并统一调整原生执行提供程序、插件及测试的调用路径,使 BufferManager 专注于缓冲区分配、缓存和释放。DataTransferImpl 继续使用调用方选定的 BufferManager 及其上下文和 recording,上传与下载仍调用 context.Flush(buffer_manager, recording),保持提交顺序、暂存缓冲区行为、校验及拷贝大小对齐不变。此次重构不涉及 Flush 实现或签名、recording 与缓冲池的关联、Run/replay 生命周期及初始化器缓冲池退役逻辑,因此主要影响是职责划分,而非改变 GPU 拷贝或调度机制。PR 报告在 Windows Release、WebGPU/D3D12 环境下原生配置与构建通过,现有测试已迁移以覆盖新的拷贝实现;但未提供明确的测试运行结果、性能基准或其他平台验证信息,不能据此认定有性能提升或更广泛的兼容性改善。

📁 Changed Files (14 files, 328 changes: +179/-149)
onnxruntime/core/providers/webgpu/buffer_manager.cc
onnxruntime/core/providers/webgpu/buffer_manager.h
onnxruntime/core/providers/webgpu/data_transfer.cc
onnxruntime/core/providers/webgpu/data_transfer.h
onnxruntime/core/providers/webgpu/ep/sync_stream.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/test/providers/webgpu/concurrent_context_test.cc
onnxruntime/test/providers/webgpu/contrib_ops/moe_test.cc
onnxruntime/test/providers/webgpu/dispatch_normalization_test.cc
onnxruntime/test/providers/webgpu/plugin/test_webgpu_allocators.cc
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
onnxruntime/test/providers/webgpu/webgpu_stream_regression_test.cc
👤 tianleiwu📅 Created: 10/16/2026
🤖 AI 摘要

该 PR 改进 ONNX Runtime CUDA 插件执行提供程序(EP)的 NuGet 打包流程,完善许可证分发和包元数据,并与 #28525 中的 WebGPU 包更新保持一致。打包脚本在生成包前将仓库中的 LICENSE 和 ThirdPartyNotices.txt 暂存到项目旁,C# 项目配置则改为引用随包分发的许可证文件,并设置项目 URL。生成的包已确认包含许可证相关文件和预期的 NuGet 元数据,且使用临时 linux-x64 测试夹具成功完成打包。此次调整属于打包层面的完善,不涉及 WebGPU 或 CUDA 推理实现;现有信息未提供性能测试或跨平台兼容性验证,不能据此认定有性能提升或更广泛的兼容性变化。

📁 Changed Files (2 files, 25 changes: +24/-1)
plugin-ep-cuda/csharp/Microsoft.ML.OnnxRuntime.EP.Cuda/Microsoft.ML.OnnxRuntime.EP.Cuda.csproj
plugin-ep-cuda/csharp/pack_nuget.py
👤 gyagp📅 Created: 10/15/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 的 WebGPU 插件新增 Dawn 升级工具,将精确版本解析、源码归档 SHA1 校验值计算、已审核依赖清单更新、SwiftShader 版本同步,以及按 CMake 顺序验证和刷新本地补丁整合为统一流程。工具默认仅试运行并生成 Markdown/JSON 报告和建议差异,支持显式应用与检查模式;遇到新增或归属不明确的依赖、需审核的补丁时,会阻止应用变更,同时保留运行时与开发依赖分类及独立打包的 DXC 版本,不处理 DXIL 迁移。Windows、Linux 和 macOS 插件打包流水线还会根据实际拉取的 Dawn 依赖生成独立组件清单,核验检出版本并进行组件治理扫描,相关脚本配有测试和使用文档。这些改动主要提升升级一致性、依赖可追溯性和跨平台发布的可靠性;现有信息未提供具体 Dawn 升级版本、运行时行为变化或性能测试,因此不能认定其直接改善 GPU 推理性能或扩展兼容范围。

📁 Changed Files (16 files, 2094 changes: +2065/-29)
cgmanifests/README.md
cgmanifests/webgpu/BUILD-INVENTORY.md
cgmanifests/webgpu/README.md
cgmanifests/webgpu/generate_webgpu_cgmanifest.py
cgmanifests/webgpu/test_generate_webgpu_cgmanifest.py
cgmanifests/webgpu/test_update_webgpu_cgmanifest.py
cgmanifests/webgpu/update_webgpu_cgmanifest.py
cgmanifests/webgpu/validate_webgpu_cgmanifest.py
plugin-ep-webgpu/tools/dawn/README.md
plugin-ep-webgpu/tools/dawn/patch_dawn.py
plugin-ep-webgpu/tools/dawn/test_update_dawn.py
plugin-ep-webgpu/tools/dawn/update_dawn.py
tools/ci_build/github/azure-pipelines/stages/plugin-linux-webgpu-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-mac-webgpu-stage.yml
tools/ci_build/github/azure-pipelines/stages/plugin-win-webgpu-stage.yml
tools/ci_build/github/azure-pipelines/templates/webgpu-component-governance.yml
🤖 AI 摘要

该改动针对 ONNX Runtime WebGPU 后端中 NVIDIA 的稠密共享内存 FlashAttention 预填充路径,将头维度不超过 128 时的 Q·K 和 P·V 内层归约生成为直线式 WGSL,以减少循环开销。实现保留当前主线基于 FP32 qk_precision 的累加,以及归一化分数转换为 q_element_t 后参与 P·V 计算的行为,并沿用现有厂商与头维度缓存提示区分适用路径;外层循环、更大头维度、其他厂商、分页注意力及独立解码程序均不受影响。新增 FP16 高幅值回归测试以 65 个查询 token 和 64、128、256 三种头维度,覆盖不完整分块、归约展开、循环回退及分数溢出防护。PR 报告在启用 D3D12 Agility SDK 1.721.3-preview、使用 SM 6.10 时,完整模型预填充性能提升 10.87%–46.73%,但所给性能描述不完整,缺少具体模型、硬件及测量口径,不能据此推断其他配置下的收益。

📁 Changed Files (3 files, 48 changes: +44/-4)
onnxruntime/contrib_ops/webgpu/bert/flash_attention.cc
onnxruntime/contrib_ops/webgpu/bert/flash_attention.wgsl.template
onnxruntime/test/contrib_ops/group_query_attention_op_test.cc
👤 jiafatom📅 Created: 10/15/2026
🤖 AI 摘要

该 PR 为 INT3 QMoE 建立可移植的打包格式、数值参考及版本化算子契约,重点是 P0 参考工具和 P1 主机侧校验,而非 GPU 执行内核。核心实现包括逐行、低位优先的 UINT8 打包与解包、尺寸运算溢出检查、规范填充校验,以及 INT3 offset-4 解码和考虑存储尺度舍入的确定性 RTN 量化;通用工具支持 1~8 位,但不代表 QMoE 开放 INT5/INT6。算子定义与 MoE 辅助逻辑的调整配合形状推断、格式验证和固定数值测试,并提供独立标量参考及标准 ONNX opset-18 解包/解码图,避免依赖草案中的 Pack/Unpack 算子。该改动为后续后端实现提供一致性基准,但未包含 P2 CUDA 内核,也未显示 WebGPU 实现变更;现有信息缺少版本迁移细则和性能基准,无法据此确认旧模型兼容范围或推理加速收益。

📁 Changed Files (12 files, 2383 changes: +2134/-249)
.github/workflows/qmoe_packed_reference.yml
onnxruntime/contrib_ops/cpu/moe/moe_helper.h
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/core/graph/contrib_ops/ms_opset.h
onnxruntime/test/contrib_ops/qmoe_format_validation_test.cc
onnxruntime/test/contrib_ops/qmoe_shape_inference_test.cc
onnxruntime/test/python/quantization/qmoe_packed_reference/README.md
onnxruntime/test/python/quantization/qmoe_packed_reference/golden_vectors.json
onnxruntime/test/python/quantization/qmoe_packed_reference/onnx_reference.py
onnxruntime/test/python/quantization/qmoe_packed_reference/reference.py
onnxruntime/test/python/quantization/qmoe_packed_reference/test_reference.py
onnxruntime/test/python/transformers/test_qmoe_cpu.py
👤 samridh10exe📅 Created: 10/15/2026
🤖 AI 摘要

该 PR 修复 ONNX Runtime 图优化器中 MatMul 与 BatchNormalization 融合的正确性问题,避免中间 Reshape 或 Transpose 改变列与通道的对应关系后,仍按 BatchNormalization 通道参数缩放 MatMul 权重列,导致 Basic、Extended 和 All 优化级别产生错误结果。实现通过各节点推断出的输出形状逐步跟踪 MatMul 的列轴,仅在其保持对应 BatchNormalization 通道轴时允许融合,形状未知则保守跳过。测试新增了移动通道与保留通道的 Reshape 场景,并与未融合图比较;另将两个通道维度与 scale 长度不匹配的既有用例改为预期不融合,避免融合掩盖模型本身的无效输入。这是通用图优化逻辑调整,并非 WebGPU 内核改动;跳过融合可能减少部分图的性能优化机会,但提供的验证信息仅注明 Linux aarch64 CPU Release 环境,未给出完整测试结果、WebGPU 验证或性能数据。

📁 Changed Files (2 files, 160 changes: +122/-38)
onnxruntime/core/optimizer/matmul_bn_fusion.cc
onnxruntime/test/optimizer/graph_transform_test.cc
🤖 AI 摘要

该 PR 为 ONNX Runtime 新增 CUDA contrib 算子 com.microsoft.HyperConnectionLowRankMix,将低秩超连接模块中的可选前块后混合、分支 RMS 归一化、降维投影、ScaledSiLU、升维投影、sigmoid、前混合及后混合注入门融合为单个节点,目标是减少逐块执行时的算子调度和内核启动开销。实现包含 CUDA 算子与内核注册、算子定义、文档及 C++/Python 测试,直接使用标准行主序 [K, N] 权重,不依赖软件网格屏障、线程块集群或进程级状态。描述中 batch=1、H200、bf16、S=1 下每 token 减少约 2.1 ms 的收益来自 PR 之外的研究实现,不能直接视为本次实现的性能结果,当前信息也不足以确定其实际内核数量及各形状下的加速效果。本次未涉及 WebGPU 实现,新增节点不能据此直接在 WebGPU 后端运行;现有模型还需显式使用该 contrib 算子,所列改动未体现自动融合图优化。

📁 Changed Files (11 files, 1921 changes: +1921/-0)
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/cuda/bert/hyper_connection_low_rank_mix.cc
onnxruntime/contrib_ops/cuda/bert/hyper_connection_low_rank_mix.h
onnxruntime/contrib_ops/cuda/bert/hyper_connection_low_rank_mix_impl.cu
onnxruntime/contrib_ops/cuda/bert/hyper_connection_low_rank_mix_impl.h
onnxruntime/contrib_ops/cuda/cuda_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/core/graph/contrib_ops/ms_opset.h
onnxruntime/test/contrib_ops/hyper_connection_low_rank_mix_op_test.cc
onnxruntime/test/python/transformers/test_hyper_connection_low_rank_mix.py
model:qwen
👤 tianleiwu📅 Created: 10/15/2026
🤖 AI 摘要

该 PR 为 PackedSparseAttentionIndexer 增加可选的逐请求状态输出 state_status,使调用方能够识别状态更新是否成功,以及是否因游标不一致或 state_capacity 溢出而被拒绝,解决此前拒绝操作仅保持状态不变并返回空选择、却无法被直接观测的问题。实现上在算子 schema 中新增索引为 8、类型为 int32、形状为 (batch_size) 的输出,将输出数量范围调整为 6–9,并同步修改 CUDA 调用链、类型与形状推断、文档及测试。该设备端状态张量允许 CUDA Graph 解码或验证循环在回放结束后由主机读取结果,无需在算子内部同步;但现有信息未提供性能测量,不能据此断言吞吐或延迟改善。新增输出为可选项,接口设计上保留了旧调用方式;WebGPU 侧也有适配改动,但缺少具体实现内容,无法确认其是否支持生成该状态输出,还是仅对新增接口进行限制或校验。

📁 Changed Files (9 files, 305 changes: +285/-20)
docs/ContribOperators.md
docs/contrib_ops/packed_sparse_attention_indexer.md
onnxruntime/contrib_ops/cpu/sparse/packed_sparse_attention_indexer_common.h
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_impl.cu
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_impl.h
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/packed_sparse_attention_indexer_op_test.cc
model:qwen
👤 apsonawane📅 Created: 10/14/2026
🤖 AI 摘要

该 PR 主要修复 ONNX Runtime 内存 arena 的边界条件与 CUDA 配置生命周期问题,并优化现有 CUDA GEMV 和因果卷积内核,不引入模型专用算子或 schema 变更。分配器在 max_dead_bytes_per_chunk 为零时避免拆分大小恰好匹配的空闲块;CUDA 指针选项 API 支持设置和查询 default_memory_arena_cfg,将配置复制到提供程序自有存储,并对不支持的选项名返回无效参数错误。性能改动包括提高小 N GEMV 的 split-K 上限和向量化占用率目标,以及为满足条件的单请求 VarlenCausalConvWithState prefill 引入时间维分块,以提升并行度。测试补充覆盖 arena 边界、配置接口、GEMV 工作区大小、FP16/BF16 输出、重复 CUDA Graph 回放及因果卷积;这些改动未直接涉及 WebGPU,且未提供性能基准,无法量化加速收益,而此前被静默忽略的不支持选项现在会报错,调用方需注意这一行为变化。

📁 Changed Files (11 files, 246 changes: +235/-11)
include/onnxruntime/core/session/onnxruntime_c_api.h
onnxruntime/contrib_ops/cuda/bert/varlen_causal_conv_with_state_impl.cu
onnxruntime/core/framework/bfc_arena.cc
onnxruntime/core/providers/cuda/cuda_execution_provider_info.h
onnxruntime/core/providers/cuda/cuda_provider_factory.cc
onnxruntime/core/providers/cuda/math/matmul_small_n_gemv.cu
onnxruntime/core/session/provider_bridge_ort.cc
onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc
onnxruntime/test/framework/bfc_arena_test.cc
onnxruntime/test/providers/cuda/test_cases/matmul_small_n_gemv_test.cc
onnxruntime/test/shared_lib/test_inference.cc