Intercambio Abierto de Redes Neuronales (ONNX)

ONNX es un formato de código abierto que permite el intercambio de modelos de IA entre plataformas, apoyando la interoperabilidad, estandarización y despliegue eficiente.

¿Qué es ONNX?

El Intercambio Abierto de Redes Neuronales (ONNX) es un formato de código abierto creado para facilitar la intercambiabilidad de modelos de aprendizaje automático entre diversas plataformas y herramientas. Nacido de la colaboración entre Facebook y Microsoft, ONNX fue lanzado oficialmente en septiembre de 2017. Sirve como un puente entre distintos frameworks de machine learning, permitiendo a los desarrolladores portar modelos sin necesidad de reestructurarlos o reentrenarlos. Esta estandarización favorece un enfoque más eficiente y flexible para el despliegue de modelos en distintos entornos.

Características clave de ONNX

  1. Interoperabilidad: ONNX está diseñado principalmente para permitir el intercambio fluido de modelos entre los principales frameworks de machine learning como TensorFlow, PyTorch, Caffe2 y Microsoft Cognitive Toolkit (CNTK). Esta interoperabilidad se extiende tanto a modelos de aprendizaje profundo como a modelos tradicionales, permitiendo a los desarrolladores aprovechar las fortalezas de distintas herramientas sin quedar atados a un solo ecosistema.
  2. Estandarización: ONNX proporciona un formato unificado que incluye un conjunto común de operadores y tipos de datos. Esta estandarización garantiza que los modelos sean consistentes y funcionales al transferirse entre plataformas, mitigando los problemas de compatibilidad que suelen surgir con formatos propietarios.
  3. Impulsado por la Comunidad: El éxito y evolución de ONNX se atribuyen en gran medida a su vibrante comunidad de desarrolladores y organizaciones. Este esfuerzo colaborativo garantiza que ONNX se actualice y mejore regularmente, fomentando la innovación en el despliegue de modelos de IA.
  4. Optimización de Hardware: ONNX es compatible con múltiples plataformas de hardware, ofreciendo optimizaciones de modelos para mejorar el rendimiento en diversos dispositivos, incluidos GPUs y CPUs. Esta capacidad es crucial para desplegar modelos en entornos con recursos limitados o para mejorar los tiempos de inferencia en sistemas de producción.
  5. Versionado y Compatibilidad: ONNX mantiene la compatibilidad hacia atrás, permitiendo que los modelos desarrollados con versiones anteriores funcionen eficazmente en nuevos entornos. Este enfoque asegura que los modelos puedan evolucionar sin sacrificar funcionalidad o rendimiento.

ONNX Runtime

ONNX Runtime es un motor de alto rendimiento que ejecuta modelos ONNX, garantizando una operación eficiente en hardware y plataformas diversas. Proporciona múltiples optimizaciones y soporta varios proveedores de ejecución, lo que lo hace indispensable para desplegar modelos de IA en producción. ONNX Runtime puede integrarse con modelos de frameworks como PyTorch, TensorFlow y scikit-learn, entre otros. Aplica optimizaciones de grafo y asigna subgrafos a aceleradores específicos de hardware, asegurando un rendimiento superior en comparación con los frameworks originales.

Casos de uso y ejemplos

  1. Salud: En imágenes médicas, ONNX facilita el despliegue de modelos de aprendizaje profundo para tareas como la detección de tumores en resonancias magnéticas en diferentes plataformas de diagnóstico.
  2. Automoción: ONNX juega un papel fundamental en vehículos autónomos, permitiendo la integración de modelos de detección de objetos que soportan la toma de decisiones en tiempo real en sistemas de conducción autónoma.
  3. Retail: ONNX agiliza el despliegue de sistemas de recomendación en comercio electrónico, mejorando experiencias de compra personalizadas mediante el uso de modelos entrenados en diferentes frameworks.
  4. Manufactura: Los modelos de mantenimiento predictivo pueden desarrollarse en un framework y desplegarse en sistemas fabriles usando ONNX, logrando una mayor eficiencia operativa.
  5. Finanzas: Los modelos de detección de fraude creados en un framework pueden integrarse fácilmente en sistemas bancarios usando ONNX, fortaleciendo las medidas de prevención de fraude.
  6. Agricultura: ONNX respalda la agricultura de precisión al permitir la integración de modelos de cultivos y suelos en diversos sistemas de gestión agrícola.
  7. Educación: Los sistemas de aprendizaje adaptativo aprovechan ONNX para incorporar modelos de IA que personalizan experiencias de aprendizaje en distintas plataformas educativas.

Frameworks populares compatibles con ONNX

  • PyTorch: Conocido por su grafo computacional dinámico y facilidad de uso, PyTorch es ampliamente adoptado en investigación y desarrollo.
  • TensorFlow: Un framework integral desarrollado por Google, que ofrece APIs para construir y desplegar modelos de aprendizaje automático.
  • Microsoft Cognitive Toolkit (CNTK): Eficiente para entrenar modelos de aprendizaje profundo, especialmente en tareas de reconocimiento de voz e imagen.
  • Apache MXNet: Respaldado por Amazon, MXNet es reconocido por su flexibilidad y eficiencia en plataformas cloud y móviles.
  • Scikit-Learn: Popular para algoritmos tradicionales de aprendizaje automático, con soporte de conversión a ONNX a través de sklearn-onnx.
  • Keras: Una API de alto nivel que funciona sobre TensorFlow, enfocada en la experimentación rápida.
  • Apple Core ML: Permite la integración de modelos en aplicaciones iOS, con soporte para conversiones ONNX.

Beneficios de usar ONNX

  • Flexibilidad de Frameworks: ONNX permite cambiar entre distintos frameworks de aprendizaje automático, favoreciendo la flexibilidad en el desarrollo y despliegue de modelos.
  • Eficiencia en el Despliegue: Facilita el despliegue de modelos en diferentes plataformas y dispositivos sin modificaciones significativas.
  • Apoyo Comunitario e Industrial: Un respaldo robusto de la comunidad y la industria garantiza mejoras continuas y adopción generalizada de ONNX.

Desafíos en la adopción de ONNX

  • Complejidad en la Conversión: El proceso de conversión de modelos al formato ONNX puede ser complejo, especialmente para modelos con capas u operaciones personalizadas.
  • Compatibilidad de Versiones: Asegurar la compatibilidad entre diferentes versiones de ONNX y frameworks puede ser un reto.
  • Soporte Limitado para Operaciones Propietarias: Algunas operaciones avanzadas pueden no estar soportadas en ONNX, limitando su aplicabilidad en ciertos escenarios.

Comprendiendo ONNX (Intercambio Abierto de Redes Neuronales)

El Intercambio Abierto de Redes Neuronales (ONNX) es un formato de código abierto diseñado para facilitar la intercambiabilidad de modelos de IA entre diferentes frameworks de aprendizaje automático. Ha ganado tracción en la comunidad de IA por su capacidad de proporcionar un formato unificado y portátil para representar modelos de aprendizaje profundo, permitiendo un despliegue fluido en diversas plataformas. A continuación, se resumen trabajos científicos significativos relacionados con ONNX, que destacan su aplicación y desarrollo:

1. Compilación de modelos de redes neuronales ONNX usando MLIR

  • Autores: Tian Jin, Gheorghe-Teodor Bercea, Tung D. Le, Tong Chen, Gong Su, Haruki Imai, Yasushi Negishi, Anh Leu, Kevin O’Brien, Kiyokuni Kawachiya, Alexandre E. Eichenberger
  • Resumen: Este artículo discute el compilador onnx-mlir, que convierte modelos ONNX en código ejecutable utilizando la infraestructura Multi-Level Intermediate Representation (MLIR). Los autores introducen dos nuevos dialectos dentro de MLIR para optimizar la inferencia de modelos ONNX. Este trabajo es fundamental para mejorar la portabilidad y optimización de modelos en distintos entornos de cómputo.

2. Sionnx: Generador automático de pruebas unitarias para conformidad ONNX

  • Autores: Xinli Cai, Peng Zhou, Shuhan Ding, Guoyang Chen, Weifeng Zhang
  • Resumen: El artículo presenta Sionnx, un framework para generar pruebas unitarias que verifiquen la conformidad de operadores ONNX en varias implementaciones. Utilizando un lenguaje de especificación de operadores de alto nivel (OSL), Sionnx garantiza una cobertura de pruebas exhaustiva, facilitando una verificación robusta entre frameworks. Esta herramienta es crucial para mantener la consistencia y confiabilidad en la ejecución de modelos ONNX.

3. QONNX: Representación de redes neuronales cuantizadas de precisión arbitraria

  • Autores: Alessandro Pappalardo, Yaman Umuroglu, Michaela Blott, Jovan Mitrevski, Ben Hawks, Nhan Tran, Vladimir Loncar, Sioni Summers, Hendrik Borras, Jules Muhizi, Matthew Trahms, Shih-Chieh Hsu, Scott Hauck, Javier Duarte
  • Resumen: Este artículo amplía el formato ONNX para soportar redes neuronales cuantizadas de precisión arbitraria. La introducción de nuevos operadores como Quant, BipolarQuant y Trunc dentro del formato Quantized ONNX (QONNX) permite una representación eficiente de la cuantización de baja precisión. Este avance fomenta despliegues más eficientes de redes neuronales en hardware con diferentes requisitos de precisión.

Preguntas frecuentes

¿Qué es ONNX?

ONNX (Intercambio Abierto de Redes Neuronales) es un formato de código abierto creado para facilitar el intercambio de modelos de aprendizaje automático entre diversas plataformas y herramientas, permitiendo a los desarrolladores desplegar modelos en diferentes frameworks sin reestructurar ni reentrenar.

¿Cuáles son las características clave de ONNX?

ONNX proporciona interoperabilidad entre los principales frameworks de IA, estandarización de la representación de modelos, fuerte apoyo comunitario, optimización de hardware entre dispositivos y mantiene la compatibilidad de versiones para un despliegue fluido.

¿Qué frameworks son compatibles con ONNX?

Los frameworks populares compatibles con ONNX incluyen PyTorch, TensorFlow, Microsoft Cognitive Toolkit (CNTK), Apache MXNet, Scikit-Learn, Keras y Apple Core ML.

¿Cuáles son los beneficios de usar ONNX?

ONNX permite cambiar de forma flexible entre frameworks, un despliegue eficiente en diferentes dispositivos y se beneficia de un sólido apoyo de la comunidad y la industria.

¿Qué desafíos existen con la adopción de ONNX?

Los desafíos incluyen la complejidad al convertir modelos con operaciones personalizadas, problemas de compatibilidad de versiones y soporte limitado para algunas operaciones propietarias o avanzadas.

Prueba FlowHunt con Soporte ONNX

Comienza a construir y desplegar soluciones de IA con integración fluida de modelos ONNX en FlowHunt.

Saber más