## PR 主要改动总结 **核心改动:** 为 WebGPU 和 JavaScript 实现的 RotaryEmbedding 算子添加 position_ids 边界校验,补全之前 PR #27597 中仅覆盖 CPU 和 CUDA 的安全修复。 **解决的问题:** 修复 `com.microsoft::RotaryEmbedding` 算子使用 position_ids 作为 cos_cache/sin_cache 索引时缺少边界检查的安全漏洞。WebGPU 硬件会静默截断越界读取,导致错误结果而不报错,存在安全隐患。 **WebGPU 影响:** 在 WebGPU 实现中添加了双重防护机制:主机端通过 ORT_MAKE_STATUS 进行严格校验,着色器端对越界访问进行防御性处理(pass-through)。同时为 TypeScript 版本添加了基于 getBigInt64Array 的校验逻辑。 **技术要点:** 新增 7 个 C++ 越界测试用例,覆盖 contrib 和 ONNX 域;WebGPU 实现支持 format-0 格式感知校验;总共添加 333 行代码以确保跨平台的边界安全性。
## PR 主要改动总结 **注意:此 PR 与 WebGPU 无关,是针对 CUDA 后端的改进** ### 核心改动 为 CUDA PagedAttention 算子添加了 CUTLASS 内存高效注意力机制(MEA)作为降级方案,首次在 **sm<80 架构(Turing/Volta/Pascal)上支持 fp16 的 PagedAttention**。 ### 解决的问题 - 原实现仅支持 sm>=80(Ampere 及更新架构)的 FlashAttention,在旧架构上会直接报错 - 现在 sm<80 + fp16 可通过 MEA 正常运行;sm>=80 默认仍使用 FlashAttention,可通过环境变量切换到 MEA 用于调试和性能对比 - 注意 bf16 在 sm<80 上仍不支持(MEA 的 bf16 需要 sm>=80) ### 技术要点 修改主要集中在实现层(`paged_attention_impl.cu` +204 行)和算子逻辑层(`paged_attention.cc` +85 行),增加了内核选择逻辑和 MEA 实现路径,并补充了相应的 Python 测试用例。
## PR 主要改动总结 ### 核心改动 这个 PR 优化了 WebGPU 后端的矩阵乘法(MatMul)操作,当 `batchB==1` 时,将 `batchA` 维度合并到 `M` 维度中进行计算。 ### 解决的问题 针对 M 维度较小但 batchA 维度较大的场景,原有实现会在每个 tile 中产生大量无效元素。通过维度合并减少了 workgroup 数量,提升了计算效率和 GPU 利用率。 ### 技术影响 修改了 WebGPU 和 Intel 供应商特定的 MatMul 实现逻辑,优化了工作组调度策略。同时增加了相应的测试用例(32 行)以验证维度合并的正确性。 ### 技术要点 这是一个针对批量矩阵乘法的性能优化,通过重塑张量维度来改善 GPU 并行计算的工作负载分布,特别适用于非对称批量场景(一侧有批量维度,另一侧为单批次)。
## PR 主要改动总结 **主要功能改动:** 针对 WebGPU 的 ReduceMean 算子优化了计算策略选择逻辑。当输出尺寸远大于归约维度大小时,改用朴素归约(naive reduction)方法替代共享内存归约方法。 **解决的问题:** 解决了共享内存归约方法在特定场景下的性能问题。当输出维度较大时,共享归约可能需要对输入进行转置操作,这会带来显著的时间开销,影响整体性能。 **对 WebGPU 支持的影响:** 通过根据数据维度特征智能选择归约算法,提升了 WebGPU 后端在处理大输出尺寸归约操作时的执行效率。 **技术要点:** 代码改动量很小(仅 3 行新增,1 行删除),通过添加条件判断实现算法切换,属于性能优化类改动。
## PR 主要改动总结 **1. 主要功能:** 此 PR 为 ONNX Runtime 的 CUDA 插件执行提供器(EP)添加了完整的打包流水线,参照现有 WebGPU 插件的打包模式构建。新增了 4 个 Azure Pipelines 配置文件和 1 个 Linux 构建脚本,共新增 714 行代码。 **2. 解决的问题与特性:** 支持在 Windows x64 和 Linux x64 平台上打包 CUDA 12.8 和 13.0 两个版本,并在选择 CUDA 13.0 时可选支持 Linux aarch64 架构。流水线通过参数化配置(CUDA 版本、包版本、构建类型、Python 配置)实现灵活扩展,同时内置验证逻辑拒绝不支持的组合(如 CUDA 12.8 + Linux aarch64)。 **3. 对 WebGPU 的影响:** 此 PR 与 WebGPU 无直接关系,标题中提到 WebGPU 是因为该 CUDA 打包流水线借鉴了现有 WebGPU 插件的打包架构模式作为参考实现。 **4. 技术要点:** 采用分层 Pipeline 架构(顶层调度 + 平台特定 Stage),通过条件判断和参数验证确保构建配置的合法性,并对 CMake 构建脚本和头文件进行了小幅调整以支持插件打包。
## PR 主要改动总结 **核心功能:** 该 PR 为 WebGPU 后端添加了对批量大小(batch size)> 1 时的 Split-K 优化支持。通过在 dispatch_z 维度同时编码批次索引和 Split-K 索引,并在着色器中通过除法和取模运算进行解码(`batch = logical_global_id.z / num_k_splits` 和 `split_index = logical_global_id.z % num_k_splits`)来实现。 **解决的问题:** 优化了多批次矩阵乘法的性能,在 Intel PTL 硬件上对 `sam-vit-b-decoder-static-fp16-demo` 模型实现了 7.5% 的性能提升。同时将批量大小纳入 Split-K 启用条件,因为增加批量大小本身就能提高并行度,从而降低 Split-K 的优化效果。 **技术要点:** 主要修改集中在 GEMM/MatMul 相关代码(gemm_utils.cc、matmul.cc、matmul_packed.cc 等),增加了 200+ 行代码和相应的测试用例。另外将 `ort_version_check.h` 中的 `consteval` 改为 `constexpr` 以解决 VS2022 的编译错误。
## 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 规范,同时更新了版本检查相关配置。