ONNX Runtime WebGPU PR Monitor

Last Updated: 10/08/2026, 11:03 PM | Total: 600 PRs

Showing 1-10 of 108 PRs
Page 1 of 11
👤 tianleiwu📅 Created: 10/08/2026
🤖 AI 摘要

该 PR 将 CUDA 插件执行提供程序(EP)的版本更新为 0.4.0、WebGPU 插件 EP 的版本更新为 0.6.0,主要涉及插件版本元数据更新。同时,在 ONNX Runtime 的 compile_api.cc 中标记版本 31 的编译 API 边界,以明确接口版本分界。就提供的修改范围而言,未涉及 WebGPU 算子实现、着色器或 GPU 执行逻辑,不能据此认定存在性能提升。由于缺少插件版本发布说明及 API 边界的具体代码,尚无法确定新版本包含哪些功能、修复,以及对运行时与插件兼容性的具体影响。

📁 Changed Files (3 files, 7 changes: +5/-2)
onnxruntime/core/session/compile_api.cc
plugin-ep-cuda/VERSION_NUMBER
plugin-ep-webgpu/VERSION_NUMBER
👤 aciddelgado📅 Created: 10/08/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 新增 com.microsoft::GatedDeltaNetStateReplay v1 contrib 算子,可直接在 WebGPU 上回放已捕获的 GatedDeltaNet 状态转移,为部分接受场景重建循环状态,无需将状态下载到 CPU。实现采用每个状态元素一个调用、每个工作组 128 个线程,按保留的前缀长度依次执行衰减和 key×delta 累加,并通过头索引映射支持不同的 key/value 头数。算子复用 ProgramBase、ComputeContext 和 BufferView,支持无需满足存储缓冲区绑定对齐要求的逻辑偏移;当前范围限定为单请求、单描述符及 FP32 状态和 capsule 底层张量,由 CPU 元数据提供偏移、头几何、原始捕获容量和保留步数。改动还补齐了算子 schema、opset 与 WebGPU 内核注册、文档及相关测试;避免状态回传有望降低传输和同步开销,但现有信息未提供性能基准或测试运行结果,无法确认具体加速幅度。

📁 Changed Files (11 files, 1034 changes: +1034/-0)
docs/ContribOperators.md
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.h
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.wgsl.template
onnxruntime/contrib_ops/webgpu/webgpu_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/core/graph/contrib_ops/ms_opset.h
onnxruntime/core/providers/webgpu/compute_context.h
onnxruntime/core/providers/webgpu/ep/README.md
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
onnxruntime/test/contrib_ops/gated_delta_net_state_replay_op_test.cc
👤 prathikr📅 Created: 10/08/2026
🤖 AI 摘要

该 PR 旨在减少 Qwen GatedDeltaNet 在 WebGPU 上执行 A/B 门控投影时的算子与调度开销;从修改路径看,核心涉及算子接口、WebGPU 实现、着色器和测试,并非通用 LayerNorm 融合。实现通过新增可选 gate_projections 输入接收打包的 FP16 A/B 投影结果,在着色器内转换为 FP32,门控计算和循环状态仍保持 FP32,同时保留现有分块预填充与循环解码内核。PR 描述称配套 ONNX 重写可移除 48 个 MatMul 和 96 个 Cast 节点且不引入 Split 调度,并通过避免不必要的 QKV 拷贝,使满足条件的路径继续使用向量化循环读写。原有模型保持兼容,融合后的模型需要更新 ORT 主机运行时和 WebGPU 执行提供程序,无需修改 GenAI;验证中 24 项测试全部通过,首层投影在 1 行和 256 行输入下逐位一致,但缺少具体延迟、吞吐量及对照基线,无法量化实际性能收益。

📁 Changed Files (7 files, 184 changes: +165/-19)
docs/ContribOperators.md
docs/OperatorKernels.md
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_params.wgsl.template
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
👤 mustjab📅 Created: 10/08/2026
🤖 AI 摘要

此改动将 ONNX Runtime 的共享 WebGPU 数据传输包装器改为无状态实现,移除其缓存的上下文、初始化互斥锁及内部创建接口的上下文 ID 参数,避免包装器持有不必要的上下文状态。会话内的数据复制直接通过所属流使用执行提供程序的传输状态;无流复制则依据 GPU 张量的内存设备 ID 选择已注册上下文(包括上下文零),仅在本次复制期间持有该上下文,并在 GPU 到 GPU 复制成功后执行 flush。文档进一步澄清,内存设备标识不会自动注册 Dawn 对象,Env/全局分配器目前仍受上下文零限制,外部上下文复制也必须满足相应注册要求。分配器和会话的上下文 ID 以及公共 C API 均保持不变,且未新增会话创建前的外部上下文注册能力;现有验证仅覆盖限定范围的 C++ 静态检查和暂存改动的空白检查,缺少运行时测试与性能基准,无法据此确认性能收益。

📁 Changed Files (4 files, 99 changes: +35/-64)
docs/WebGPU_External_Dawn.md
onnxruntime/core/providers/webgpu/ep/factory.cc
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/core/providers/webgpu/webgpu_provider_factory_creator.h
👤 gyagp📅 Created: 10/08/2026
🤖 AI 摘要

该改动在 ONNX Runtime 算子测试框架中增加显式启用的 FP16 能力跳过机制,使设备缺少 ShaderF16 时可跳过 WebGPU 执行,同时继续测试其他执行提供程序,仅当没有任何提供程序能够执行时才将整个测试标记为跳过。实现覆盖会话初始化、权重预打包和执行阶段,且只识别预期成功的 WebGPU 测试中由共享着色器生成器报告的能力错误,不改变预期失败、无关错误或未启用该机制的测试行为。现有 FP16 Conv 和 ConvTranspose 测试辅助函数已接入该机制,输入、容差和排除的执行提供程序列表保持不变,并新增六个回归用例,其中包含禁用 ShaderF16 的真实原生 WebGPU 设备,且为该设备启用了上游原生 ORT 所需的 ImplicitDeviceSynchronization。该 PR 将 FP16 测试能力处理从 ConvTranspose3D 支持工作中独立出来,改善无 ShaderF16 设备上的测试兼容性;所提供信息未涉及算子计算实现或性能测量,不能据此推断推理性能提升。

📁 Changed Files (5 files, 232 changes: +232/-0)
onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc
onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc
onnxruntime/test/providers/webgpu/fp16_capability_test.cc
onnxruntime/test/unittest_util/base_tester.cc
onnxruntime/test/unittest_util/base_tester.h
👤 hanbitmyths📅 Created: 10/07/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 的 CUDA GQA 解码路径新增 FP16/BF16、头维度为 512 的 XQA 内核,面向 Gemma 4 等模型的宽头分组注意力需求。实现采用 FP32 在线 softmax 和部分结果合并,支持 BNSH/BSNH 两种 KV 缓存布局、正整数 GQA 分组比、局部窗口及 attention sinks,并统一运行时临时缓冲区布局、工作区估算、边界与调度资格检查。在满足条件时优先使用原生 H512 分组注意力,避免将 KV 缓存扩展至查询头数量所带来的大额工作区开销,同时保留既有较小头维度的调度路径,并新增内核、工作区、资格判断及缓存不被意外修改的回归测试。所列改动集中于 CUDA 后端,没有直接涉及 WebGPU;预期收益主要是降低工作区需求并扩展模型支持,但未提供性能基准或完整测试结果,无法量化加速效果或确认全部验证情况。

📁 Changed Files (17 files, 1058 changes: +884/-174)
onnxruntime/contrib_ops/cuda/bert/attention_kernel_options.h
onnxruntime/contrib_ops/cuda/bert/group_query_attention.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention_eligibility.h
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace.h
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace_bounds.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace_estimate.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace_routes.cc
onnxruntime/contrib_ops/cuda/bert/group_query_attention_workspace_xqa_flash.cc
onnxruntime/contrib_ops/cuda/bert/xqa/xqa_loader_bf16.cu
onnxruntime/contrib_ops/cuda/bert/xqa/xqa_loader_fp16.cu
onnxruntime/contrib_ops/cuda/bert/xqa/xqa_loader_fp16_512.cu
onnxruntime/test/contrib_ops/cuda_kernels/xqa_h512_test.cc
onnxruntime/test/contrib_ops/group_query_attention_op_test.cc
onnxruntime/test/providers/cuda/test_cases/group_query_attention_eligibility_test.cc
onnxruntime/test/providers/cuda/test_cases/group_query_attention_workspace_estimate_test.cc
onnxruntime/test/providers/cuda/test_cases/group_query_attention_workspace_xqa_flash_test.cc
👤 danielsongmicrosoft📅 Created: 10/07/2026
🤖 AI 摘要

该改动修复了 ONNX Runtime WebGPU GEMM 在调度网格归一化后,额外工作组可能超出逻辑批次范围并继续执行的问题。在 GEMM 公共实现中,重建逻辑工作组 z 索引后增加边界检查,当索引超出 `logical_dispatch_z` 的有效范围时立即返回,阻止无效工作组继续参与计算。新增的 70,000 批次 MatMul 回归用例专门覆盖归一化调度产生多余工作组的场景,以验证不会访问超出批次范围的数据。验证包括 WebGPU provider 的 RelWithDebInfo 构建、该回归测试及格式检查;改动主要提升大批量推理的正确性,现有信息未提供性能基准或跨设备兼容性测试结果。

📁 Changed Files (2 files, 5 changes: +5/-0)
onnxruntime/core/providers/webgpu/math/gemm_utils.cc
onnxruntime/test/providers/webgpu/matmul_large_test.cc
👤 mustjab📅 Created: 10/07/2026
🤖 AI 摘要

该 PR 为可选 LoRA 增加默认关闭的图融合优化,通过 optimization.enable_matmul_nbits_lora_fusion=1 启用,将符合条件的量化投影与 LoRA 子图融合为 com.microsoft.MatMulNBitsLora,避免空秩适配器仍执行额外的 MatMul 和 Add。实现涵盖算子定义、图优化器及 CPU/WebGPU 内核:秩为零时仅运行基础量化投影,启用适配器时仍保留两次低秩 MatMul 和独立的增量加法,因此并非将活跃 LoRA 的全部计算合并成单个 GPU 内核。支持范围为 CPU FP32 和原生 WebGPU FP32/FP16,融合要求执行提供程序与数据类型兼容、可覆盖的默认适配器张量为空且中间结果仅被单处使用,同时保留适配器输入名称和模型元数据,不修改量化权重,也不引入 ONNX 控制流。新增回归测试覆盖执行、向量输入、融合限制与显式启用行为;预期收益主要是减少无适配器时的冗余计算和调度,但所给验证描述不完整且缺少性能数据,无法确认具体加速幅度或完整验证范围。

📁 Changed Files (18 files, 1228 changes: +1222/-6)
docs/ContribOperators.md
docs/OperatorKernels.md
docs/design/optional_quantized_lora_mul_add.md
include/onnxruntime/core/session/onnxruntime_session_options_config_keys.h
onnxruntime/contrib_ops/cpu/cpu_contrib_kernels.cc
onnxruntime/contrib_ops/cpu/quantization/lora_mul_add_helper.h
onnxruntime/contrib_ops/cpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.h
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_fusion.cc
onnxruntime/core/optimizer/matmul_nbits_fusion.h
onnxruntime/core/providers/webgpu/quantization/quantize_linear.cc
onnxruntime/test/contrib_ops/lora_mul_add_test.cc
onnxruntime/test/optimizer/lora_mul_add_fusion_test.cc
onnxruntime/test/providers/webgpu/tensor/quantize_linear_test.cc
👤 mustjab📅 Created: 10/07/2026
🤖 AI 摘要

该改动修复 ONNX MatMul 内维度 K 为零但输出非空时,WebGPU 因绑定空 A/B 张量的空 GPU 缓冲区而触发验证错误或生成无效绑定组的问题,覆盖可选零秩 LoRA 默认值等场景。实现上在矩阵乘算法选择前处理 K=0:输出为空时跳过 GPU 调度,输出非空时直接写入零,或计算已有偏置及融合激活的结果,避免绑定空输入,非零 K 的执行路径保持不变。回归测试覆盖 FP32/FP16、批量广播、向量与标量、空输出及图捕获重放;transpose 路径也有配套修改,但现有信息不足以确定其具体处理逻辑。该修复提升了边界形状下的兼容性,并已在 Windows RTX 4070 上启用完整 WebGPU 验证和图捕获通过 FP16 集成检查,但未提供性能基准,不能据此判断常规矩阵乘的性能变化。

📁 Changed Files (7 files, 423 changes: +417/-6)
onnxruntime/core/providers/cpu/math/matmul_helper.h
onnxruntime/core/providers/webgpu/math/matmul.cc
onnxruntime/core/providers/webgpu/quantization/quantize_linear.cc
onnxruntime/core/providers/webgpu/tensor/transpose.cc
onnxruntime/test/providers/webgpu/graph_capture_test_utils.h
onnxruntime/test/providers/webgpu/matmul_large_test.cc
onnxruntime/test/providers/webgpu/tensor/quantize_linear_test.cc
👤 edgchen1📅 Created: 10/07/2026
🤖 AI 摘要

该 PR 修复 ONNX Runtime WebGPU 在 dispatch 归一化时因向上取整引入额外工作组的问题,防止这些工作组进入实际计算并造成潜在越界访问或结果错误。核心实现是共享的工作组一致性保护,在缓冲区访问、工作组屏障和 Split-K 分解之前排除填充工作组,并让 Intel subgroup GEMM 与 MatMul 着色器复用逻辑坐标初始化逻辑。同时强化主机端 dispatch、空间尺寸及 CeilDiv 运算的溢出防护,提升大尺寸输入下的健壮性。测试覆盖归一化与工具函数、逻辑坐标和填充保护的 GPU 探针,以及使用生产程序构建器的 Conv 回归场景;这些改动主要提升执行正确性,现有信息未提供性能基准或跨设备验证结果,无法量化性能及兼容性收益。

📁 Changed Files (15 files, 493 changes: +440/-53)
cmake/onnxruntime_unittests.cmake
onnxruntime/core/providers/webgpu/math/gemm_utils.cc
onnxruntime/core/providers/webgpu/math/gemm_utils.h
onnxruntime/core/providers/webgpu/math/matmul.cc
onnxruntime/core/providers/webgpu/nn/conv2d_mm.cc
onnxruntime/core/providers/webgpu/program_manager.cc
onnxruntime/core/providers/webgpu/program_manager.h
onnxruntime/core/providers/webgpu/vendor/intel/math/gemm.cc
onnxruntime/core/providers/webgpu/vendor/intel/math/gemm.h
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
onnxruntime/core/providers/webgpu/webgpu_utils.h
onnxruntime/test/providers/webgpu/dispatch_normalization_test.cc
onnxruntime/test/providers/webgpu/webgpu_utils_test.cc