术语表

ONNX (开放神经网络交流)

了解ONNX 如何增强人工智能模型的可移植性和互操作性,实现在不同平台上无缝部署Ultralytics YOLO 模型。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

在快速发展的人工智能(AI)机器学习(ML)领域,在不同工具和平台之间高效移动模型至关重要。ONNX (开放神经网络交换)通过提供专为人工智能模型设计的开源格式来应对这一挑战。它充当了通用翻译器的角色,允许开发人员在一个框架中训练模型,如 PyTorch等框架中训练模型,然后使用另一种框架或推理引擎(如 TensorFlow或专门的运行时进行部署。这种互操作性简化了从研究到生产的过程。

相关性ONNX

ONNX 的核心价值在于促进人工智能生态系统内的可移植性和互操作性。开发人员可以利用ONNX 自由移动模型,而不是被锁定在特定框架的生态系统中。通过定义一套通用的运算符和标准文件格式,ONNX 可确保模型的结构和学习参数(权重)得到一致的表示。这对 Ultralytics YOLO模型的用户来说尤其有利,因为Ultralytics 提供了将模型导出为ONNX 格式的直接方法。这种导出功能允许用户将 YOLOv8YOLO11等模型,并将它们部署到各种硬件和软件平台上,通常还可以利用优化的推理引擎来提高性能。

ONNX 如何工作

ONNX 通过几个关键功能实现互操作性:

  • 通用模型表示法:它定义了一套标准的运算符(如卷积层或激活函数)和数据类型。当一个模型转换为ONNX 时,其架构就会被转换为这种共享语言。
  • 基于图形的结构:模型以计算图的形式表示,其中节点表示操作,边表示数据流(张量)。这是大多数深度学习框架常用的结构。
  • 可扩展性: ONNX 定义了一套核心运算符,同时允许自定义运算符,从而支持新型模型架构。
  • 版本控制: ONNX 维护操作员版本以确保向后兼容性,这意味着随着标准的发展,使用旧版本创建的模型仍可使用。

应用ONNX

ONNX 广泛用于弥合模型训练环境与部署目标之间的差距。下面是两个例子:

  1. 边缘设备上的优化部署:开发人员在配备 GPU 的强大服务器上使用Ultralytics YOLO 训练对象检测模型。为了在资源有限的边缘设备上部署该模型,他们将模型导出到ONNX。然后可以使用以下工具优化ONNX 模型 NVIDIA TensorRT等工具对NVIDIA 模型进行优化,从而实现更快、更高效的实时推理。更多详情,请参阅我们的模型部署选项指南。
  2. 跨框架合作:一个研究团队在PyTorch 中开发了一个新颖的模型组件。另一个负责将该组件集成到使用TensorFlow 构建的大型应用程序中的团队,可以以ONNX 文件的形式接收该组件。这就避免了复杂的代码翻译或为不同框架维护独立模型版本的需要,从而使组织内部的协作更加轻松,比如我们客户页面上列出的那些组织。

相关概念

了解ONNX 通常涉及相关技术:

  • ONNX 运行时这是一个高性能推理引擎,专门设计用于在各种硬件CPU、CPU、内存)上高效执行ONNX 模型、 GPU等)上高效执行 ONNX 模型。ONNX 定义了格式,而ONNX Runtime 则提供了执行环境。
  • TensorRT NVIDIA 推出的用于高性能深度学习推理的 SDK,可以导入ONNX 模型,在NVIDIA GPU 上进行优化。Ultralytics 提供TensorRT 集成
  • OpenVINO用于优化和部署人工智能推理的Intel 工具包,支持在Intel 硬件上执行ONNX 模型。
  • 出口型号 将训练好的模型从其原始框架格式(如PyTorch .pt) 转换成ONNX 这样的标准化格式。
  • 模型部署将训练有素的模型用于生产环境的整个过程,ONNX 在简化跨平台兼容性方面发挥着关键作用。您可以使用Ultralytics HUB 等平台管理ONNX 模型的部署。

通过促进模型交换和部署,ONNX 在提高人工智能开发生命周期的灵活性和效率方面发挥了重要作用。

阅读全部