ONNX Runtime WebGPU PR Monitor

Last Updated: 10/19/2026, 10:12 PM | Total: 654 PRs

Showing 1-10 of 112 PRs
Page 1 of 12
🤖 AI 摘要

该 PR 针对动态形状或模型未提供形状信息时、加载阶段无法拦截的非法输入,在 CPU 及 contrib 算子的执行路径中补充运行时校验,使其返回明确的错误 Status,而非发生越界访问。已明确的实现包括 ReverseSequence 在读取前两维前检查秩至少为 2,DFT 在访问末维前检查输入秩,以及 opset ≥ 20 的 DFT 在读取可选 axis 输入前检查其是否存在且仅含一个元素,缺省时保留默认轴设置。文件路径还表明 GatherND、量化查表激活基类 QLinearLookupBase 和 Inverse 的 CPU 实现得到调整,并为相关算子补充测试,但描述被截断,无法确认这些算子及 STFT 的完整校验条件。此次修改未涉及 WebGPU 内核,主要提升 CPU 执行路径对非法输入和可选输入的健壮性;新增检查的性能影响尚无基准数据支持,也不能据此推断 GPU 推理性能变化。

📁 Changed Files (10 files, 145 changes: +142/-3)
onnxruntime/contrib_ops/cpu/inverse.cc
onnxruntime/contrib_ops/cpu/quantization/qlinear_activations.cc
onnxruntime/core/providers/cpu/signal/dft.cc
onnxruntime/core/providers/cpu/tensor/gather_nd.h
onnxruntime/core/providers/cpu/tensor/reverse_sequence.cc
onnxruntime/test/contrib_ops/inverse_test.cc
onnxruntime/test/contrib_ops/qlinear_lookup_table_test.cc
onnxruntime/test/providers/cpu/signal/signal_ops_test.cc
onnxruntime/test/providers/cpu/tensor/gather_nd_op_test.cc
onnxruntime/test/providers/cpu/tensor/reverse_sequence_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 主要优化 ONNX Runtime CUDA 后端的量化 MoE 结果收尾和块缩放 FP8 投影解码路径,同时保留原有 packed-INT、原生 decode 及 FP32 输出路径,以维持既有用法的兼容性。关键实现包括支持拆分输出的 FP8 投影、新增 FP8 到 BF16 的反量化 CUDA 实现,并补齐 Float8E4M3FN_BFloat16 工厂,使 FP32 缩放因子与 BF16 输出保持独立。配套更新了算子定义、类型解析和文档,增加 MoE 压缩、FP8 矩阵乘及反量化测试,并在满足内部测试、FP4 和 contrib 配置条件时,为普通与插件 CUDA 构建启用 FP4 QMoE 回归测试。现有信息表明改动面向 CUDA,未见 WebGPU 实现变更;性能优化目标明确,但缺少基准数据及对应硬件、输入规模,无法量化加速收益。

📁 Changed Files (23 files, 1882 changes: +1410/-472)
cmake/onnxruntime_unittests.cmake
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/cuda/cuda_contrib_kernels.cc
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_gemv_fp4.cu
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_gemv_fp4.h
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_kernels.cu
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.cc
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.cu
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.h
onnxruntime/contrib_ops/cuda/moe/moe_quantization.cc
onnxruntime/contrib_ops/cuda/moe/qmoe_kernels.cu
onnxruntime/contrib_ops/cuda/moe/qmoe_kernels.h
onnxruntime/contrib_ops/cuda/quantization/dequantize_fp8_bf16.cu
onnxruntime/contrib_ops/cuda/quantization/dequantize_fp8_bf16.h
onnxruntime/contrib_ops/cuda/quantization/quantize_dequantize_linear.cc
onnxruntime/core/framework/kernel_type_str_resolver_utils.cc
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/core/graph/contrib_ops/quantization_defs.cc
onnxruntime/test/contrib_ops/cuda_kernels/qmoe_fp8_compaction_test.cc
onnxruntime/test/contrib_ops/dequantize_fp8_bf16_test.cc
onnxruntime/test/contrib_ops/matmul_block_scaled_fp8_test.cc
onnxruntime/test/contrib_ops/moe_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 主要扩展 DynamicSparseAttention 的缓存能力与分组 CUDA prefill/decode 路径,并优化 PackedSparseAttentionIndexer 的打包索引处理,支持 BF16 QSA 使用 FP32 key-state、可选中间状态与状态输出,以及确定性的分块选择。实现上修复了分组浮点缓存 decode 在单 split 时仍需分配局部结果缓冲区的问题,并增加 FP16/BF16 参考一致性测试,覆盖不完整查询头分组、空或部分选择、局部窗口、sink logits 及特定单 split 回归场景。算子 schema、CUDA 和 WebGPU 统一了 QSA 可选参数的位置,WebGPU 则显式拒绝仅 CUDA 支持的模式,避免接口对齐被误认为后端功能完全一致。实验性的 radix/warp-head 控制保持默认关闭并注明适用范围;这些修改旨在改善 CUDA 执行效率与边界场景正确性,但提供的信息不含性能基准,无法量化加速收益或判断 WebGPU 是否提速。

📁 Changed Files (18 files, 2825 changes: +2400/-425)
docs/ContribOperators.md
docs/OperatorKernels.md
docs/contrib_ops/packed_sparse_attention_indexer.md
onnxruntime/contrib_ops/cpu/sparse/packed_sparse_attention_indexer_common.h
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention.cc
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention_impl.cu
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention_impl.h
onnxruntime/contrib_ops/cuda/cuda_contrib_kernels.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer.h
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/dynamic_sparse_attention.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.h
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/dynamic_sparse_attention_op_test.cc
onnxruntime/test/contrib_ops/packed_sparse_attention_indexer_op_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 扩展 Gated Delta Net(GDN)与带状态因果卷积的融合处理,支持激活类型的 GDN 门控、融合打包投影,并完善卷积状态及归一化处理,同时保留现有默认模式。核心实现主要位于 CUDA 算子与内核,并同步调整算子 schema、执行提供程序校验和文档;其中修复了变长批次中空请求的 mid_state 初始化,使其继承输入状态或在无输入状态时清零,并覆盖两种头维度及有无初始状态的回归场景。WebGPU 两类算子的入口也有配套修改,但现有信息不足以确认其是否完整支持新增融合路径;CPU 因果卷积入口同样进行了调整。融合处理有望减少独立算子调度或中间数据开销,但未提供性能基准,无法判断实际加速幅度;兼容性方面则通过保留默认行为及既有回归覆盖降低变更风险。

📁 Changed Files (19 files, 1002 changes: +844/-158)
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/cpu/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state.h
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state_impl.cu
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state_impl.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net.cc
onnxruntime/contrib_ops/cuda/bert/gated_delta_net.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_impl.cu
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_impl.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_mma.cuh
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_plan.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_split_impl.cu
onnxruntime/contrib_ops/webgpu/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
🤖 AI 摘要

该改动修复 ONNX Runtime WebGPU 量化算子 MatMulNBits 的宽分块路径在 Qualcomm D3D12 上产生错误 FP16 结果的问题,同时保留 subgroup shuffle 和 32 行分块策略。核心实现是在 subgroupShuffle 前将 vec4<f16> 按位重解释为 vec2<u32>,传输后再还原,以完整保留 FP16 位模式,不改变存储、算术或累加精度。算子侧仅在 Qualcomm、D3D12、FP16 且支持 subgroup shuffle 时启用该路径,并将此选择纳入着色器缓存键,避免不同路径误用缓存。其他厂商和后端的着色器路径、NVIDIA 的直接读取偏好以及测试选择与容差均保持不变;描述指出现有的 4 位和 8 位量化 FP16 测试可暴露该历史问题,但未提供修复后的测试结果或性能基准,无法判断具体性能影响。

📁 Changed Files (3 files, 33 changes: +29/-4)
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.h
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits_wide_tile.wgsl.template
🤖 AI 摘要

该改动为 ONNX Runtime 的 WebGPU 插件构建生成与实际拉取的 Dawn 依赖对应的组件清单,并在 Windows、Linux 和 macOS 打包流水线中扫描和保留,以提升第三方依赖的可追溯性与供应链治理覆盖率。生成器以不执行脚本的方式读取固定版本依赖获取脚本中的依赖列表及 DEPS,核验所选 Git 检出的 HEAD 是否匹配声明的提交,同时记录 Dawn 归档的 URL 和校验和,以及 Windows 打包使用的独立 DXC 归档元数据。流水线会运行生成器测试、输出 metadata/cgmanifest.json,并显式扫描该目录,补足常规扫描排除构建目录而遗漏已拉取依赖的问题。生成的清单描述构建输入,与人工审核的清单及其运行时/开发依赖分类保持独立,不能据此判断哪些组件最终链接进插件;该 PR 不包含 Dawn 升级或推理执行路径调整,现有信息也未提供性能或兼容性变化的证据。

📁 Changed Files (9 files, 489 changes: +479/-10)
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
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 CUDA EP 的 GroupQueryAttention 在 SM≥90 上自动选择 cuDNN SDPA 后,因图构建失败而导致整个 Run 失败的问题,典型场景是 sm_120 使用 cuDNN 9.20 却未部署其运行时编译引擎所需的 NVRTC。核心是在内核选择阶段引入不抛异常的 try_build_graph 探测,复用执行阶段的 GraphParams 键和线程局部缓存,并将构建失败缓存为 nullptr,使自动选择的 cuDNN 路径不可用时能够回退并准备 Flash Attention 或 memory-efficient attention 所需的缓冲区。缓存可避免对相同参数反复尝试构图,失败后的重复探测仅需一次哈希查找,但现有信息未提供端到端性能或回退开销的实测数据。修改集中于 CUDA/cuDNN 实现,并新增构图探测及 GQA 测试,主要提升运行环境兼容性和推理可靠性,不涉及 WebGPU 后端的直接改动。

📁 Changed Files (6 files, 414 changes: +379/-35)
onnxruntime/contrib_ops/cuda/bert/cudnn_fmha/cudnn_flash_attention.cc
onnxruntime/contrib_ops/cuda/bert/cudnn_fmha/cudnn_flash_attention.h
onnxruntime/contrib_ops/cuda/bert/group_query_attention.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention.h
onnxruntime/test/contrib_ops/group_query_attention_op_test.cc
onnxruntime/test/providers/cuda/test_cases/cudnn_sdpa_build_probe_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
👤 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 (8 files, 1811 changes: +1778/-33)
cgmanifests/webgpu/README.md
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
🤖 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