## PR 主要改动总结 **核心改动:** 修复了测试文件中执行提供器(Execution Provider, EP)的配置顺序问题。 **解决的问题:** `BaseTester::ConfigEps()` 只会运行列表中**第一个可用的 EP**,而不是所有 EP。之前 CPU EP 被添加在列表首位,导致 WebGPU、CUDA 等其他 EP 从未被实际测试到。 **对 WebGPU 的影响:** 修复后,WebGPU EP 现在会被添加到 CPU EP **之前**,确保 WebGPU 后端能够正确执行测试。涉及的算子包括 MatMul 2-bit 量化、SkipLayerNorm 和 Gather 操作。 **技术要点:** 在 3 个测试文件中调整了 EP 添加顺序,统一将 CPU EP 放在最后,确保其他硬件加速 EP(WebGPU、CUDA)优先被测试,避免测试覆盖率漏洞。
## PR 主要改动总结 ### 核心功能 此 PR 在 ONNX Runtime 中添加了**运行级别(Run-level)性能分析 API**,允许开发者通过 `RunOptions` 为特定推理运行启用性能分析,而非仅支持会话级别的全局分析。 ### 解决的问题 1. **细粒度性能分析**:支持针对单次推理运行收集性能数据,运行结束后自动保存带时间戳的 JSON 分析文件 2. **多线程安全**:使用**线程本地存储(TLS)**机制维护 `RunLevelState`,确保多线程场景下各线程的性能分析数据互不干扰 ### WebGPU 相关影响 WebGPU 执行提供器(EP)新增了运行级别性能分析支持(`webgpu_profiler.cc/h`),能够正确收集 GPU 内核执行时间等性能指标,与会话级别分析并行工作。 ### 技术要点 - 在 `profiler.h` 中定义 TLS 变量存储运行状态 - 修改 `sequential_executor.cc` 集成运行级别事件收集 - 各 EP(包括 WebGPU)需独立实现运行级别分析逻辑以保证数据正确性
## PR 总结 ### 主要改动 此 PR 重构了 WebGPU 执行提供器的参数初始化逻辑,将原本混杂的配置项拆分为三个独立的类:`WebGpuExecutionProviderConfig`(EP 内部存储配置)、`WebGpuContextCreationParams`(上下文构造参数)和 `WebGpuContextInitializationParams`(上下文初始化参数)。 ### 解决的问题 通过集中化管理,确保默认值设置和选项解析逻辑只在一处发生,避免了配置管理的混乱和重复代码。所有配置类实例都保证以默认值初始化,提高了代码的可维护性和一致性。 ### 代码影响 主要修改集中在 `webgpu_provider_factory.cc`(净减 61 行代码),通过更清晰的类结构简化了 WebGPU 上下文的创建和初始化流程,使配置传递路径更加明确。 ### 技术要点 这是一次典型的代码重构,通过职责分离原则(Separation of Concerns)优化了架构设计,没有改变功能行为,但显著提升了代码质量和可读性。
## PR 主要改动总结 **核心改动:** 此 PR 重构了 WebGPU BERT Attention 算子中 Q、K、V 张量的计算方式,移除了自定义的 QKV 准备内核,改用更模块化的方案——先执行 MatMul 操作,再通过专用的 Split 内核进行分离。 **解决的问题:** 通过复用已高度优化的 MatMul 算子,显著提升了性能。在 phi4-vision 模型中,PrepareQKV 操作从 751.67ms 降至 128.88ms(约 83% 性能提升),其中 MatMul 耗时 123.07ms,新增的 SplitPackedQKV 仅需 5.81ms。 **技术要点:** 代码净减少 63 行,提高了可维护性和代码复用性。通过泛化 QKV 分离逻辑,使该功能可在更广泛的场景中复用,同时利用了团队在 MatMul 算子上已积累的优化成果。 **WebGPU 影响:** 此优化直接改善了 WebGPU 后端的 Attention 算子性能,对运行大型语言模型(如 phi4-vision)有显著加速效果。
## PR 主要改动总结 **1. 主要功能改动:** 扩展了 ONNX Runtime WebGPU 后端的 `Split-K` 优化技术支持范围,将 `dim_inner` 参数支持从原来的限制提升到最大 3072,并在 `xe-3lpg` 架构上启用了该优化。 **2. 解决的问题与特性:** 通过更广泛地应用 `Split-K` 优化策略,显著提升了特定模型的推理性能,在 Lunar Lake 集成 GPU 上,`jina-clip-v1-text-fp16` 模型性能提升约 30%,`jina-embeddings-v2-base-code-fp16` 模型提升约 20%。 **3. 对 WebGPU 支持的影响:** 增强了 WebGPU 后端在 Intel 新一代集成显卡上的矩阵运算性能,特别是针对文本嵌入和多模态模型的优化能力,使 WebGPU 在边缘设备推理场景中更具竞争力。 **4. 技术要点:** 修改集中在 `webgpu_utils` 工具模块,通过调整 `Split-K` 算法的参数限制和硬件适配逻辑,实现了对更多计算场景的覆盖,代码改动量较小(35 行新增,9 行删除)但性能收益显著。
## PR 主要改动总结 **主要功能改动:** 这个 PR 为 ONNX Runtime 的 WebGPU 后端的 `im2col-matmul` 实现添加了 `auto_pad` 属性支持。 **解决的问题:** 完成了之前遗留的 TODO 任务。实际上发现 `auto_pad` 属性在 Conv2d 启动内核之前就已经用于计算填充值,因此 `im2col-matmul` 内核无需额外处理逻辑即可支持该特性。 **对 WebGPU 支持的影响:** 增强了 WebGPU 后端对卷积操作的完整性支持,使其能够正确处理带有自动填充属性的卷积层,提升了与标准 ONNX 算子的兼容性。 **技术要点:** 代码改动很小(删除 5 行,主要是移除限制性检查),同时增加了 41 行测试代码以验证 `auto_pad` 功能的正确性。这是一个典型的"发现问题已经被上层解决"的优化场景。
## PR 主要改动总结 **核心改动:** 此 PR 为 ONNX Runtime 的 WebGPU 后端的 Range 算子添加了 int64 数据类型支持。 **解决问题:** 满足 GenAI 场景中使用 ONNX 模型更新 position_ids 的需求。在连续解码模式下,需要通过 Range 算子生成位置索引序列(`position_ids[i] = i + total_length - new_kv_length`),这要求 Range 算子支持 int64 类型的输入参数。 **技术实现:** 修改了 `range.cc` 和 `range.h` 文件,扩展了原有实现以支持 int64 类型的 start、limit 和 delta 参数,并在 WebGPU 执行提供器中注册了相应的算子支持。 **实际价值:** 增强了 WebGPU 后端对大语言模型推理场景的支持能力,特别是涉及序列位置编码的生成式 AI 应用。
## PR 改动总结 **主要功能:** 为 ONNX Runtime 的 WebGPU 执行提供程序添加了 FormatTransform 算子内核,支持张量在 Plain 格式与 nChw4c/ABcd16a4b 两种分块(blocked)格式之间的相互转换。 **解决的问题:** 实现了 WebGPU 后端的数据格式转换能力,使其能够处理内存布局优化所需的格式变换,特别是针对 Intel 架构优化的分块内存布局。该实现支持填充(padding)感知的形状推理,确保在格式转换时正确处理边界情况。 **WebGPU 影响:** 通过 WGSL 着色器模板实现 GPU 加速的格式转换,增强了 WebGPU 执行提供程序处理不同内存布局的能力,为后续性能优化(如利用硬件友好的数据排列)奠定了基础。 **技术要点:** 在内部 NHWC 域注册了算子模式(schema),添加了完整的单元测试覆盖分块格式、填充场景和往返转换,代码结构清晰地分离了头文件、实现和着色器模板三个层次。
## PR 改动总结 **主要改动:** 将 WebGPU 中置换维度 perm{2310} 的转置操作从单步执行优化为两步执行,主要影响卷积(Conv)算子的性能。 **解决问题:** 通过拆分转置步骤,使得可以使用更高效的 transpose-shared 实现替代原来的 transpose-naive 实现,从而提升 Conv 算子在 WebGPU 上的执行效率。 **WebGPU 影响:** 针对性优化了 WebGPU 后端的张量转置逻辑,特别是在处理 NHWC 和 NCHW 格式转换等常见场景时性能得到改善。 **技术要点:** 修改了 transpose.cc 的核心实现逻辑(+35/-18),更新了 conv.cc 中的调用方式(+27/-14),并新增了相应的单元测试以验证拆分转置的正确性。
## PR 改动总结 **主要功能改动:** 此 PR 为 ONNX Runtime 添加了针对 MatMul 和 Gemm 算子的大规模矩阵运算测试用例,新增了两个专门的测试文件,共计 431 行代码。 **解决的问题:** 补充了大尺寸矩阵(large shapes)场景下的测试覆盖,这对于验证 WebGPU 后端在处理实际应用中常见的大规模矩阵乘法运算时的正确性和性能表现至关重要。 **对 WebGPU 的影响:** 虽然测试文件位于 CPU provider 目录下,但大尺寸矩阵测试用例可以被 WebGPU 后端复用,有助于发现和修复 WebGPU 在处理大规模张量计算时可能存在的内存管理、着色器编译或执行效率问题。 **技术要点:** 测试覆盖了矩阵乘法的核心场景,包括不同的矩阵维度组合和 Gemm 的 alpha/beta 参数配置,为保证跨平台算子实现的一致性提供了基准。