ONNX(Open Neural Network Exchange)
是一个开源项目,旨在实现不同人工智能框架之间的模型互操作性,是开放的 AI 生态系统。它允许开发者在首选框架中训练模型,并在多种硬件和平台上高效部署。最初由微软和Facebook(现Meta)联合开发,并于2017年发布,现在有一个非常活跃的开源社区。

ONNX 是人工智能框架之间的“世界语”

人工智能框架是一类帮助开发、训练、微调、部署大模型的工具集,通常包括以下的组成部分:

  • [预训练模型库] —— 例如BERT, GPT, ResNet等
  • [自定义模型开发] —— 允许用户根据需求自定义大型模型
  • [分布式训练] —— 支持多GPU和多节点训练大型模型
  • [模型转换] —— 例如转换为ONNX格式以支持不同平台
  • [硬件加速] —— 利用CUDA, cuDNN等进行GPU加速

虽然不同的框架作用相似,开发者可以根据自己的偏好选择,不同的框架就像是说不同语言的“人”,彼此并不能交流,是孤岛。从协作的角度看,应该允许一门“世界语”存在,让不同框架可以交流,并能从训练顺利接入不同的推理引擎中使用,降低使用“摩擦”,ONNX 应运而生。

ONNX-something.png

训练到推理的摆渡人

简言之:不同框架可以开发同一个模型,比部署到不同的推理引擎上,自由切换

ONNX 具备以下关键能力:

  • 模型互操作性:ONNX 允许开发者在他们偏好的框架中进行开发,而不必担心后续推理(inference)的影响。这意味着开发者可以自由选择框架进行模型训练,并能够将这些模型在不同的推理引擎中使用
  • 跨框架支持:许多流行的深度学习框架,如PyTorch、TensorFlow、Caffe2等,都支持导出或导入ONNX格式的模型
  • 硬件加速:ONNX 与多种硬件加速器兼容,包括NVIDIA GPU、Intel CPU等,可以利用这些硬件的优化来提高模型的推理速度
  • 简化部署:通过统一的模型格式,ONNX 简化了将模型部署到不同平台和设备的过程,包括服务器、云环境、边缘设备等
  • 优化和扩展性:ONNX 支持模型优化,例如层融合、精度校准等,以提高模型在特定硬件上的性能。同时,它的设计允许未来技术的扩展和集成
  • 可视化和分析:ONNX 提供了工具来可视化模型结构和进行性能分析,帮助开发者理解和优化模型
  • 安全性和验证:ONNX 模型可以进行验证,确保模型的完整性和安全性,这对于生产环境中的模型部署尤为重要

其他摆渡人

不同的人工智能框架也会提供类似的模型转换和部署的工具,如百度的PaddlePaddle、苹果的Core ML等。这里主要对比一下封闭生态的NVIDIA TensorRT。

特性NVIDIA TensorRTONNX
目标和用途专为NVIDIA GPU优化深度学习推理(即模型部署阶段)而设计。TensorRT 专注于提高模型在NVIDIA硬件上运行时的性能和效率旨在实现不同深度学习框架之间的模型互操作性。ONNX 提供了一个开放的模型格式标准,使得模型可以在不同的框架和平台上运行
优化级别进行深度优化,包括层融合、精度校准、内核自动调优等,以实现在NVIDIA GPU上的最佳性能不直接进行硬件级别的优化,而是作为一个中间表示,可以被不同的运行时和框架进一步优化
硬件支持主要针对NVIDIA的GPU和深度学习加速器(如NVIDIA Tesla和Jetson系列)设计为跨平台,支持多种硬件加速器,不仅限于NVIDIA GPU
框架兼容性虽然主要与NVIDIA硬件配合使用,但也支持从其他框架(如TensorFlow和PyTorch)转换模型支持广泛的框架,包括但不限于Caffe2, Microsoft Cognitive Toolkit, PyTorch, MXNet等
开发和维护由NVIDIA开发和维护,是NVIDIA深度学习软件栈的一部分由微软和Facebook(现Meta)联合发起,是一个开放的社区项目,由Linux Foundation AI(LF AI)支持
使用场景适合需要在NVIDIA GPU上进行高效推理的场景,特别是在自动驾驶、机器人、医疗成像等领域适合需要跨框架和平台部署模型的场景,便于研究人员和开发者在不同环境中共享和使用模型

欢迎交流 AI 领域的话题

标签:baidu, 产品, AI

评论已关闭