ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ONNX Runtime 路线图深度解读:平台覆盖、执行提供器扩展与性能优化全景

ONNX Runtime 路线图深度解读:平台覆盖、执行提供器扩展与性能优化全景 ONNX Runtime 路线图深度解读平台覆盖、执行提供器扩展与性能优化全景【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntimeONNX Runtime 是微软主导的开源跨平台高性能机器学习推理与训练加速引擎。本文以仓库中的 docs/Roadmap.md 为骨架逐条拆解官方路线图所声明的投资方向——平台覆盖、执行提供器Execution Provider, EP扩展、持续性能优化、模型兼容性与主流产品集成并结合当前仓库的源码与构建配置进行印证帮助读者理解 ORT 的演进思路、代码组织方式以及如何在真实项目中用好这些能力。一、ONNX Runtime 的高层目标ONNX Runtime 是一个基于 ONNX 规范ONNX 是一个开放的 ML 模型互操作标准的运行时加速器为 DNN深度神经网络与传统 ML 模型提供跨平台的高性能推理能力。路线图开篇即点明其定位不仅服务于开源社区也被微软内部核心产品广泛使用——文档中提到微软内部有超过 80 个生产模型基于该技术运行平均获得 2 倍以上的性能提升。围绕这一目标团队的投资方向集中在五个领域平台覆盖Platform coverage尽可能多地支持硬件架构、操作系统与语言绑定可扩展性与定制化Extensibility and customization通过执行提供器机制接入不同加速器性能Performance降低延迟、减少内存占用、提升吞吐与扩展性模型覆盖Model coverage对齐最新 ONNX 规范支持流行模型质量与易用性Quality and ease of use保证模型旧 opset与 API 的向后兼容。下文各小节将逐一展开并附上仓库中可验证的实现证据。二、平台覆盖架构、操作系统与语言绑定路线图指出ORT 已经支持广泛的架构、平台与语言并会继续扩大覆盖范围同时有意识地控制二进制体积以满足轻量设备与本地应用的约束。2.1 支持的架构架构支持状态X64已支持X86已支持ARM64已支持ARM32有限支持在仓库的 cmake 目录中可以找到与架构覆盖对应的真实构建支撑例如 linux_arm32_crosscompile_toolchain.cmake 与 linux_arm64_crosscompile_toolchain.cmake 提供了 ARM 交叉编译工具链riscv64.toolchain.cmake 则表明 RISC-V 等新架构也在持续探索。这些文件说明“平台覆盖”并非口号而是落实到 CMake 工具链层的实际能力。2.2 支持的操作系统平台支持状态Windows 7已支持Linux各发行版已支持macOS已支持Android预览iOS预览仓库中的 onnxruntime_ios.toolchain.cmake、onnxruntime_tvos.toolchain.cmake 与 onnxruntime_visionos.toolchain.cmake 分别面向 iOS / tvOS / visionOS 的交叉构建佐证了移动端与新兴 Apple 平台的投入dockerfiles 目录下的多个 Dockerfile如 Dockerfile.cuda、Dockerfile.tensorrt、Dockerfile.openvino、Dockerfile.jetson 等则覆盖了 Linux 上针对不同加速卡的部署环境。2.3 支持的语言绑定支持的语言列表在仓库根目录的 README.md 中有说明。从仓库结构可以直观看到官方维护的语言绑定Pythononnxruntime/python、C#csharp、Javajava、Node.jsjs/node、Objective-Cobjectivec、Gogo/onnxruntime以及 Rustrust。路线图明确说明核心团队当前不主动开发其他语言绑定如果缺少某个语言 API可以通过 Issue 提交请求也欢迎社区贡献。三、加速器与执行提供器Execution Providers执行提供器EP是 ONNX Runtime 插件化加速的核心机制同一个 ONNX 模型图会被分发到 CPU、GPU、NPU 等不同的 EP 上执行从而在云端与智能边缘的多样化算力上获得最优性能。3.1 新 EP 的持续引入路线图强调为了在越来越多的计算目标上获得最佳性能团队与硬件厂商、社区伙伴合作持续新增 EPEP 的灵活可插拔性是支撑广泛场景的关键。这一点在源码中体现得最直观——onnxruntime/core/providers 目录下按加速器划分了清晰的子目录GPU 类cuda/NVIDIA CUDA、tensorrt/NVIDIA TensorRT、migraphx/AMD、cann/昇腾、vitisai/赛灵思、nv_tensorrt_rtx/移动/嵌入式类nnapi/Android NNAPI、coreml/Apple CoreML、qnn/高通 QNN、snpe/高通 SNPE、rknpu/瑞芯微、vsinpu/、xnnpack/、acl/ARM Compute Library云端/其他类dml/DirectML、dnnl/oneDNN、openvino/Intel OpenVINO、azure/、webgpu/、webnn/、js/、winml/、cpu/默认 CPU 实现。各 EP 的启用入口集中在 execution_provider_factory.cc 与 get_execution_providers.cc而 onnxruntime_providers_*.cmake 系列文件如 onnxruntime_providers_cuda.cmake、onnxruntime_providers_tensorrt.cmake控制着各 EP 的编译开关。3.2 CUDA 算子覆盖的持续扩充路线图承诺会不断为已支持的算子补充 CUDA 实现以最大化 GPU 性能潜力。仓库中 onnxruntime/core/providers/cuda 拥有 1170 余个文件包含 578 个.cu内核文件与 224 个.cc实现覆盖算子横跨activation、controlflow、atomic、nn、object_detection、reduction、tensor、transformer等多个类别是这一投资方向的直接证据。3.3 简化 EP 贡献机制除了新增 EP路线图还明确投资于“让社区伙伴能以非破坏性方式贡献 EP”核心手段是改进 EP 接口、方便注册新 EP并把 EP 从核心运行时引擎中解耦。仓库中可佐证的机制包括execution_provider_factory.cc 与 provider_factory_creators.h统一的 EP 工厂注册入口onnxruntime/core/providers/shared_library共享库形式的 EP 接口支持将 EP 以动态库方式与主引擎分离加载onnxruntime/core/framework 中的IExecutionProvider系列接口定义构成 EP 与框架之间的契约层。仓库中的plugin-ep-cuda/与plugin-ep-webgpu/两个独立目录则是“EP 与核心引擎分离”的落地示例它们作为独立插件 EP 仓库形态含 Python/C# 打包脚本 build_wheel.py 与 pack_nuget.py表明 EP 可以脱离主仓库独立发布与演进。四、持续的性能优化性能是 ONNX Runtime 的核心焦点——从延迟、内存利用到 CPU 占用团队持续寻找最优策略。路线图特别强调尽管 DNN 是研究热点但在实践中大量企业仍因专业性、隐私与合规等原因使用传统 ML 框架因此 ORT 同时对 DNN 与传统 ML 提供优化与支持。4.1 路线图列出的性能项目更多量化支持More quantization support仓库中 onnxruntime/core/quantization/quantization.h 定义了量化 API配套的 onnxruntime/python/tools/quantization 目录257 个 Python 文件提供了从 PTQ 到 QAT 相关的量化工具链改进多线程Improved multithreading路线图提到的“更智能的工作分片work sharding”“用户提供的线程池user supplied thread pools”均有对应实现——onnxruntime/core/common/threadpool.cc 是线程池核心实现docs/NotesOnThreading.md 则系统阐述了 ORT 的线程模型设计静态线程池方法可运行于 ORT 线程池、OpenMP 或串行模式图优化Graph optimizations这是仓库中体量最大的优化方向之一。onnxruntime/core/optimizer 目录包含 160 个文件覆盖大量融合与消除规则例如conv_bn_fusionConvBN 融合、attention_fusion注意力算子融合、bias_gelu_fusion、constant_folding常量折叠、common_subexpression_elimination公共子表达式消除、transpose_optimizer转置优化以及qdq_transformer量化-反量化变换等智能图分区Intelligent graph partitioning为了最大化不同加速器的价值onnxruntime/core/framework/graph_partitioner.cc 与 graph_partitioner.h 实现了图分区逻辑将模型的不同子图分派给不同 EP这与 docs/annotated_partitioning/PartitioningWithAnnotationsAndMemoryConstraints.md 中描述的带注解分区机制相互呼应。4.2 面向移动与 IoT 边缘设备的优化路线图指出IoT 让 ML 工作负载可以在数据产生的网络边缘执行但边缘设备硬件规格差异巨大CPU、GPU、定制 NN ASIC。为兼容这类设备ORT 将投资于在各类 IoT 端点不同硬件配置上优化 ONNX 模型执行。仓库证据包括xnnpack/、nnapi/、coreml/、qnn/、snpe/等面向移动端与边缘 NPU 的 EPonnxruntime/core/mlas429 个文件中针对 ARM 等平台手写的 SIMD/汇编内核*.S、*.asmdocs/MLAS_ISA_Validation.md 记录了 MLAS 指令集验证机制保障不同 CPU 上内核选择的正确性。五、模型兼容性的扩展ONNX 规范聚焦于模型互操作而非覆盖所有框架的全部算子。路线图的目标是持续提升覆盖度既支持流行模型也支持最新的前沿模型。5.1 ONNX 规范覆盖随着 ONNX 规范新增算子ONNX Runtime 将提供对应的默认 CPU 与 CUDA 实现以保持对最新规范的合规。路线图明确点名的能力包括Sparse Tensor稀疏张量支持。仓库中对应的实现包括 onnxruntime/core/framework/sparse_tensor.cc、sparse_utils.h 与 sparse_utils.ccPython 侧则通过 onnxruntime_pybind_sparse_tensor.cc 暴露稀疏张量 API。5.2 流行转换器的投入路线图声明会与 OSS 与 ONNX 社区协作确保流行框架能够导出或转换为 ONNX 格式涉及 PyTorch 导出、TensorFlow-ONNX、Keras-ONNX、Sklearn-ONNX、ONNXMLToolsCoreML、XGBoost、LibSVM、LightGBM、SparkML以及 ML.NET 等工具链。仓库中对应的消费端示例包括 docs/python/examples、onnxruntime/python/tools 下的转换与校验工具以及各语言绑定的测试模型生成脚本如 onnxruntime/test/testdata 下的大量.py模型生成器。5.3 改进错误处理与回退策略为降低模型推理失败风险路线图将改进“缺失类型或不支持算子”场景下的错误处理与回退fallback策略当某个 EP 对某算子缺失或不正确实现时应尽量优雅回退或失败。这在 ORT 的图分区与 EP 能力查询机制中有所体现——图分区器graph_partitioner.cc会依据各 EP 的算子能力决定子图归属当某 EP 无法执行某个算子时该子图可被回退到 CPU 等具备完整算子覆盖的 EP 上执行。5.4 社区驱动的功能新增路线图强调采用“场景驱动scenario driven”的务实方式新增能力并欢迎社区通过 GitHub Issueenhancement标签提交功能建议甚至直接贡献实现。六、与主流产品的深度集成数据科学家与 ML 工程师依赖多种产品与工具链完成从算法到应用的全流程。路线图列出 ORT 重点集成的产品方向AzureML简化 ONNX 模型在 Azure 上的训练、转换与部署流程模型可解释性Model Interpretability为 ONNX 模型提供可解释性/可说明性能力ML.NET在 .NET 中推理 ONNX 模型仓库侧对应 csharp 目录下的Microsoft.ML.OnnxRuntime系列项目与 csharp/sample 示例PyTorch提升训练模型导出到 ONNX 的覆盖度仓库侧对应 onnxruntime/python/torch_cpp_extensions 与 orttraining 训练加速能力Windows / Windows ML在 Windows 设备上通过内置 Windows ML API 运行 ONNX 模型且 Windows ML API 会随 ONNX Runtime 构建与二进制一起发布使 Windows 开发者获得与操作系统无关的更新仓库侧对应 winml 目录SQL Database Edge在面向 IoT / IoT Edge 部署优化的 SQL 数据库引擎中使用 ONNX 模型做预测。七、总结路线图背后的仓库印证综观 docs/Roadmap.md 的五大投资方向可以得出三点对开发者有实际价值的结论EP 机制是理解 ORT 的钥匙几乎所有“平台覆盖”与“性能”目标都通过 onnxruntime/core/providers 下的 EP 体系落地选择正确的 EPCUDA/TensorRT/DirectML/OpenVINO/NNAPI 等通常比调参更能带来数量级的性能差异优化是分层叠加的量化onnxruntime/core/quantization→ 图优化onnxruntime/core/optimizer→ 图分区graph_partitioner.cc→ 线程池threadpool.cc→ 手写内核onnxruntime/core/mlas每一层都服务于“延迟、内存、吞吐”的极致平衡兼容性与易用性被置于与性能同等重要的位置Sparse Tensor、错误回退、旧 opset 向后兼容、多语言绑定Python/C#/Java/Node.js/Objective-C/Go/Rust共同降低了生产落地的风险。对于希望在 ONNX Runtime 上做长期投入的团队建议优先阅读 docs/Roadmap.md 理解官方优先级再结合 docs/OperatorKernels.md、docs/NotesOnThreading.md 与 docs/annotated_partitioning 等文档深入对应模块若希望参与共建可以围绕路线图中的未完成项提交 Issue 或社区贡献。【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表