Glosario

ONNX (Intercambio abierto de redes neuronales)

Descubre cómo ONNX mejora la portabilidad e interoperabilidad de los modelos de IA, permitiendo el despliegue sin fisuras de los modelos de Ultralytics YOLO en diversas plataformas.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

En el campo en rápida evolución de la inteligencia artificial (IA) y el aprendizaje automático (AM), es crucial trasladar modelos entre distintas herramientas y plataformas de forma eficiente. ONNX (Open Neural Network Exchange) aborda este reto proporcionando un formato de código abierto diseñado específicamente para modelos de IA. Actúa como un traductor universal, permitiendo a los desarrolladores entrenar un modelo en un marco, como PyTorchy luego desplegarlo utilizando otro marco o motor de inferencia, como TensorFlow o tiempos de ejecución especializados. Esta interoperabilidad agiliza el camino de la investigación a la producción.

Relevancia de ONNX

El valor fundamental de ONNX reside en promover la portabilidad y la interoperabilidad dentro del ecosistema de la IA. En lugar de quedar atrapados en el ecosistema de un marco específico, los desarrolladores pueden aprovechar ONNX para mover modelos libremente. Al definir un conjunto común de operadores y un formato de archivo estándar, ONNX garantiza que la estructura de un modelo y los parámetros aprendidos(pesos) se representen de forma coherente. Esto es especialmente beneficioso para los usuarios de Ultralytics YOLO ya que Ultralytics proporciona métodos sencillos para exportar modelos al formato ONNX . Esta capacidad de exportación permite a los usuarios tomar modelos como YOLOv8 o YOLO11 y desplegarlos en una amplia variedad de plataformas de hardware y software, a menudo utilizando motores de inferencia optimizados para mejorar el rendimiento.

Cómo funciona ONNX

ONNX logra la interoperabilidad mediante varias características clave:

  • Representación común del modelo: Define un conjunto estándar de operadores (como capas de convolución o funciones de activación) y tipos de datos. Cuando un modelo se convierte a ONNX, su arquitectura se traduce a este lenguaje compartido.
  • Estructura basada en grafos: Los modelos se representan como grafos computacionales, donde los nodos son operaciones y las aristas representan el flujo de datos (tensores). Se trata de una estructura común utilizada por la mayoría de los marcos de aprendizaje profundo.
  • Extensibilidad: Aunque ONNX define un conjunto básico de operadores, admite operadores personalizados, lo que permite dar soporte a arquitecturas de modelos novedosas.
  • Versiones: ONNX mantiene las versiones de los operadores para garantizar la compatibilidad con versiones anteriores, lo que significa que los modelos creados con versiones más antiguas pueden seguir utilizándose a medida que evoluciona la norma.

Aplicaciones de ONNX

ONNX se utiliza mucho para salvar la distancia entre los entornos de entrenamiento de los modelos y los objetivos de despliegue. He aquí dos ejemplos:

  1. Despliegue optimizado en dispositivos Edge: Un desarrollador entrena un modelo de detección de objetos utilizando Ultralytics YOLO en un potente servidor con GPUs. Para desplegar este modelo en dispositivos de borde con recursos limitados, exporta el modelo a ONNX. El modelo ONNX puede entonces optimizarse utilizando herramientas como NVIDIA TensorRT para hardware NVIDIA u OpenVINO deIntel para CPUs/VPUs Intel , consiguiendo una inferencia en tiempo real más rápida y eficiente. Consulta nuestra guía sobre opciones de despliegue de modelos para más detalles.
  2. Colaboración entre frameworks: Un equipo de investigación desarrolla un componente de modelo novedoso en PyTorch. Otro equipo, responsable de integrar este componente en una aplicación mayor construida con TensorFlow, puede recibir el componente como un archivo ONNX . Esto evita la necesidad de complejas traducciones de código o el mantenimiento de versiones separadas del modelo para diferentes marcos, fomentando una colaboración más fácil dentro de organizaciones como las que figuran en nuestra página de clientes.

Conceptos relacionados

Comprender ONNX a menudo implica tecnologías relacionadas:

  • ONNX Runtime: Se trata de un motor de inferencia de alto rendimiento diseñado específicamente para ejecutar modelos ONNX de forma eficiente en distintos tipos de hardwareCPU, GPUetc.). Mientras que ONNX define el formato, ONNX Runtime proporciona el entorno de ejecución.
  • TensorRT: Un SDK de NVIDIA para la inferencia de aprendizaje profundo de alto rendimiento, que puede importar modelos ONNX para su optimización en GPUs NVIDIA . Ultralytics ofrece integración con TensorRT .
  • OpenVINO: Un conjunto de herramientas Intel para optimizar y desplegar la inferencia de IA, compatible con modelos ONNX para su ejecución en hardware Intel .
  • Modelo de exportación: El proceso de convertir un modelo entrenado desde su formato marco original (por ejemplo, PyTorch .pt) en un formato normalizado como ONNX.
  • Despliegue del modelo: El proceso general de tomar un modelo entrenado y ponerlo a disposición para su uso en un entorno de producción, en el que ONNX desempeña un papel clave al simplificar la compatibilidad entre plataformas. Puedes gestionar el despliegue de tus modelos ONNX utilizando plataformas como Ultralytics HUB.

Al facilitar el intercambio y el despliegue de modelos, ONNX desempeña un papel vital para que el ciclo de vida del desarrollo de la IA sea más flexible y eficiente.

Leer todo