## ONNX Runtime WebGPU 插件 EP 流水线更新总结 **主要改动:** 这是一个针对 WebGPU 插件构建流水线的配置优化 PR,主要涉及 CI/CD 配置文件的调整和简化。 **解决的问题:** 1. 修复了自定义 `.npmrc` 文件在 Linux 构建脚本中无法找到的问题(#28079 的后续修复) 2. 将构建启用参数默认值设置为 true,配置了每夜构建(nightly build)以支持所有平台 3. 移除了 Windows 构建中的冗余 NPM 配置,统一由模板文件 `setup-build-tools.yml` 处理 **技术要点:** 通过简化配置(删除 30 行,新增 13 行)提高了构建流水线的可维护性,将配置管理集中化,减少了跨平台构建的配置重复。这些改动确保了 WebGPU 插件在 Linux 和 Windows 平台上的构建流程更加稳定可靠。
## PR 主要改动总结 ### 1. 主要功能改动 将 SubgroupMatrixMatMulNBits 从基于厂商特定(Apple/Intel)的实现重构为基于配置的厂商无关(vendor-agnostic)架构。现在任何支持匹配子组矩阵配置的 GPU 都能自动被支持,无需硬编码厂商判断。 ### 2. 解决的问题与新特性 - **移除厂商绑定**:用统一的 `SupportedSubgroupMatrixConfig` 结构替代厂商特定配置表,包含矩阵维度(M/N/K)、组件类型、子组大小等参数 - **新增 NVIDIA 支持**:添加 16x16x16 shader 模板,专门优化 NVIDIA Blackwell 架构(如 RTX 5080),使用 128 线程工作组处理 64x64 tile - **改进可扩展性**:shader 选择由配置维度驱动(8x8x8、8x16x16、16x16x16),而非厂商标识 ### 3. 对 WebGPU 支持的影响 显著提升 WebGPU 量化矩阵运算的通用性和性能,通过自动配置匹配机制实现跨厂商 GPU 的无缝支持,为未来添加更多硬件优化奠定基础。 ### 4. 技术要点 - shader 模板重命名反映矩阵维度(`_apple` → `_8x8x8`,`_intel` → `_8x16x16`) - 16x16x16 实现采用边界检查和 scratch buffer 处理部分 M tile - 修复预打包(prepack)逻辑以适配新配置系统
## PR 主要改动总结 **核心改动:** 此 PR 移除了 `op_kernel_info.h` 头文件中不安全的 `reinterpret_cast` 强制类型转换,改用 ONNX Runtime 的 C API 调用来实现相同功能。 **解决的问题:** 修复了跨 DLL 边界的 ABI 兼容性问题。原先将 `OrtKernelInfo*` 直接转换为内部 `OpKernelInfo*` 会导致 vtable 不匹配,当 WebGPU 插件 EP 与旧版本 ORT(如 1.24.4)一起使用时,由于虚函数表结构变化会引发崩溃。 **技术实现:** 改用 `Ort::ConstKernelInfo::GetEp()` 替代直接访问执行提供器,使用 `KernelInfoGetAllocator` C API 和 `IAllocatorImplWrappingOrtAllocator` 包装器替代直接类型转换,确保了跨版本的二进制兼容性。 **WebGPU 影响:** 提升了 WebGPU 插件 EP 与不同版本 ONNX Runtime 的兼容性和稳定性,避免了版本升级时的崩溃问题。
## PR 主要改动总结 ### 核心功能 为 ONNX Runtime WebGPU 实现了 **TurboQuant 量化加速技术**,这是一个正在开发中的实验性功能,用于优化大语言模型的推理性能。 ### 技术实现 - 采用 **Hadamard 矩阵进行旋转变换**替代论文中的常规矩阵方法,实现了自定义的 TurboQuant 变体 - 主要集成在 Flash Attention 和 Group Query Attention (GQA) 模块中,新增了旋转量化 (rotate_quantize) 的 WebGPU shader 实现 - 基准测试显示在 Phi-4 模型上获得了显著性能提升:**prompt 处理速度达到 1790 tokens/s,token 生成速度为 99.8 tokens/s** ### 代码结构 新增了完整的 TurboQuant 基础设施,包括 Hadamard 变换核心逻辑、WGSL shader 模板、GQA 测试用例和详细的实现计划文档(646 行),共计 2700+ 行新代码,为后续优化奠定基础。
## PR 主要改动总结 **1. 主要功能:** 此 PR 为 ONNX Runtime 的 WebGPU 后端实现了 DeformConv(可变形卷积)算子,新增了约 370 行实现代码和相应的头文件。 **2. 解决的问题:** 添加 DeformConv 算子支持是为了运行 BiRefNet 模型,填补了 WebGPU 后端在该算子上的功能空缺。 **3. 对 WebGPU 的影响:** 增强了 WebGPU 执行提供程序的算子覆盖范围,使其能够支持更多依赖可变形卷积的深度学习模型,特别是图像分割类模型。 **4. 技术要点:** 在 `webgpu_execution_provider.cc` 中注册了新算子,实现遵循 ONNX 标准的 DeformConv 规范,同时更新了版本检查相关配置。
## PR 改动总结 **主要改动:** 修复了 WebGPU 后端中 MultiHeadAttention 算子在没有 present 输出时错误处理 past key/value 输入的问题。 **解决的问题:** 当 MHA 只有 1 个输出(无 present_key/present_value 输出)时,past key/value 应该被完全忽略以匹配 CPU 后端语义,但之前的实现仍将其传递给 shader,导致: - past 数据泄漏到注意力计算中,产生错误结果(输出 pastValue 数据而非预期的 V 数据) - shader 缓存键受到不必要的影响 **技术方案:** 在 `applyAttention()` 函数中引入 `effectivePastKey`/`effectivePastValue` 变量,当 `outputCount <= 1` 时将其设为 `undefined`,确保所有下游使用(shader 创建、输入数组)都基于这些有效值而非原始参数,从而正确隔离 past 数据的影响。
## PR 主要改动总结 **核心改动:** 修复了 ONNX Runtime JavaScript 实现中的两个关键性 bug,涉及轴向归一化和 WebGPU Slice 算子。 **解决的问题:** 1. 修复了 `normalizeAxis()` 函数中的逻辑错误,将不可能为真的条件 `axis < -tensorRank && axis >= tensorRank` 中的 `&&` 改为 `||`,使其能够正确检测和拒绝超出有效范围的轴参数,避免潜在的数组越界访问 2. 为 WebGPU Slice 算子补充了 `step == 0` 的验证逻辑,与 CPU 实现保持一致,防止除零错误导致的未定义行为(`ceil((end-start)/step)` 计算会产生无穷大并导致类型转换异常) **技术影响:** 提升了 WebGPU 后端的健壮性和安全性,确保恶意或错误输入不会导致运行时崩溃或未定义行为,同时修复了 onnxjs 和 jsep 两个 JavaScript 实现路径中的共同缺陷。
## PR 主要改动总结 **1. 主要功能改动:** 修复了 Windows WebGPU CI 构建超时问题,通过优化测试执行策略减少资源消耗。 **2. 解决的问题:** - 移除了冗余的 `onnxruntime_test_all.exe` 测试执行(该测试已在 CTest 阶段覆盖) - 将 `onnxruntime_provider_test.exe` 拆分为 4 个 GTest 分片并行执行,解决了数百个测试共享单个 WebGPU 上下文导致的 GPU 资源耗尽问题 **3. 对 WebGPU 支持的影响:** 显著提升了 WebGPU Windows CI 的稳定性,避免了测试运行器在执行过程中无响应或崩溃,确保持续集成流程能够正常完成。 **4. 技术要点:** 通过 GTest 的 `GTEST_TOTAL_SHARDS` 和 `GTEST_SHARD_INDEX` 参数实现测试分片,避免 Dawn/WebGPU 在长时间运行大量测试时的资源耗尽问题。
## PR 改动总结 **主要功能:** 为 ONNX Runtime 的 WebGPU 执行提供程序添加了 LSTM(长短期记忆网络)算子的完整支持,新增了约 666 行代码实现 LSTM 的 GPU 加速计算。 **解决的问题:** 填补了 WebGPU 后端对循环神经网络(RNN)中核心算子 LSTM 的支持空白,使得包含 LSTM 层的模型能够在 WebGPU 环境中运行,扩展了 WebGPU 后端对序列建模任务的支持能力。 **对 WebGPU 的影响:** 显著增强了 WebGPU 执行提供程序对深度学习模型的覆盖范围,特别是自然语言处理、时间序列预测等需要 LSTM 的场景,提升了浏览器端运行复杂 RNN 模型的能力。 **技术要点:** 实现包含独立的 LSTM 头文件和实现文件(lstm.h/cc),并在 WebGPU 执行提供程序中注册该算子,涉及 LSTM 特有的门控机制、隐藏状态管理和 GPU 计算着色器的适配。
## PR 主要改动总结 ### 核心功能 为 ONNX Runtime 的 WebGPU 后端新增了三个缺失的算子实现:**SpaceToDepth**、**ConstantOfShape** 和 **Compress**,共新增约 607 行代码。 ### 解决的问题 在优化 lfm2-vl 视觉模型时发现这些算子缺失导致推理过程中产生大量 **CPU 与 GPU 之间的数据拷贝**,严重影响性能。实现这些算子后,模型(特别是视觉编码器部分)的推理速度显著提升。 ### 技术实现 - 为每个算子分别创建了独立的头文件和实现文件(.h/.cc) - 在 `webgpu_execution_provider.cc` 中注册了新算子 - PR 开发主要借助 Claude Opus 4.6 生成,但经过人工审查、修正和测试验证 ### 影响意义 消除了 WebGPU 后端的关键算子空白,减少了推理时的 CPU-GPU 数据传输开销,增强了 WebGPU 在视觉模型上的实用性和性能表现。