What is ONNX (Open Neural Network Exchange)?
Un formato estándar abierto para representar modelos de aprendizaje automático, habilitando la interoperabilidad entre diferentes frameworks de entrenamiento y runtimes de inferencia.
Definition
ONNX (Open Neural Network Exchange) es un formato open-source para representar modelos de aprendizaje automático como grafos de computación. Originalmente desarrollado por Microsoft y Facebook (ahora Meta), ONNX define un conjunto común de operadores y tipos de datos que permiten exportar modelos de un framework (por ejemplo, PyTorch) e importarlos en otro (por ejemplo, TensorFlow, o motores de inferencia especializados como ONNX Runtime). El formato representa los modelos como grafos acíclicos dirigidos donde los nodos son operaciones (convolución, multiplicación de matrices, atención) y las aristas son los tensores que fluyen entre ellos.
ONNX sirve como puente entre el diverso ecosistema de ML. Diferentes equipos pueden preferir diferentes frameworks de entrenamiento, pero los entornos de despliegue a menudo tienen requisitos estrictos — una app móvil podría necesitar Core ML, un dispositivo embebido podría necesitar TensorRT, y un servicio en la nube podría usar ONNX Runtime. ONNX permite que un solo modelo entrenado se despliegue en todos estos entornos a través de conversión de formato, sin reentrenamiento ni reimplementación manual.
Para modelos de lenguaje, ONNX es particularmente relevante para la optimización de inferencia. ONNX Runtime, el motor de inferencia de Microsoft, aplica optimizaciones a nivel de grafo — fusión de operadores, plegado de constantes, planificación de memoria — que pueden acelerar significativamente la inferencia. Estas optimizaciones se aplican a la representación del grafo ONNX, haciéndolas agnósticas al framework. El ecosistema ONNX también soporta herramientas de cuantización que pueden comprimir modelos a precisión INT8 o INT4 directamente sobre el grafo ONNX.
Why It Matters
En entornos empresariales, el framework de entrenamiento y el entorno de despliegue a menudo son diferentes. Los equipos de investigación pueden desarrollar modelos en PyTorch, pero los sistemas de producción podrían requerir TensorRT para inferencia en GPU, ONNX Runtime para inferencia en CPU, o Core ML para dispositivos Apple. Sin un formato portátil como ONNX, cada objetivo de despliegue requeriría reimplementar el modelo — un proceso costoso y propenso a errores.
ONNX Runtime específicamente se ha convertido en un motor de inferencia clave para despliegues de producción debido a su rendimiento. En cargas de trabajo de CPU, ONNX Runtime con optimizaciones puede ser de 2 a 4 veces más rápido que la inferencia nativa de PyTorch. Esta ventaja de rendimiento hace de la conversión a ONNX un paso estándar en los pipelines de despliegue de producción, especialmente para modelos que necesitan servir a escala con requisitos de latencia estrictos.
How It Works
La conversión a ONNX funciona trazando o scripting el grafo de computación de un modelo. En PyTorch, torch.onnx.export() ejecuta una entrada de muestra a través del modelo, registra todas las operaciones realizadas, y serializa el grafo de computación resultante en formato ONNX. El grafo exportado captura tanto la arquitectura del modelo (operaciones y sus conexiones) como los pesos entrenados (como tensores constantes en el grafo).
El grafo ONNX luego puede ser cargado por cualquier runtime compatible. ONNX Runtime aplica pases de optimización: fusionando operaciones adyacentes (por ejemplo, combinando MatMul + Add + GELU en un solo kernel fusionado), eliminando computaciones redundantes, y planificando la asignación de memoria para minimizar la sobrecarga. El grafo optimizado se compila en kernels ejecutables para el hardware objetivo (CPU, GPU o aceleradores especializados), produciendo una sesión de inferencia que procesa entradas con sobrecarga mínima.
Example Use Case
Una empresa entrena un modelo de clasificación de texto en PyTorch para detección de intención del cliente. Para producción, necesitan servir el modelo en instancias de CPU para controlar costos. Exportan el modelo a ONNX, aplican las optimizaciones de grafo de ONNX Runtime y cuantización INT8, y logran una mejora de throughput de 3.5x sobre la inferencia nativa de PyTorch en CPU — permitiéndoles servir 10,000 solicitudes por segundo en una sola instancia en lugar de requerir tres instancias.
Key Takeaways
- ONNX es un estándar abierto para representación portátil de modelos entre frameworks de ML.
- Permite entrenar en un framework y desplegar en otro sin reimplementación.
- ONNX Runtime proporciona optimizaciones a nivel de grafo que aceleran significativamente la inferencia.
- El formato representa modelos como grafos de computación acíclicos dirigidos con operaciones y tensores.
- ONNX es particularmente valioso para la optimización de inferencia en CPU y el despliegue multiplataforma.
How Ertas Helps
Ertas Studio puede exportar modelos ajustados en formatos compatibles con pipelines de conversión a ONNX, habilitando el despliegue a través de ONNX Runtime para equipos que necesitan inferencia optimizada en CPU o compatibilidad multiplataforma.
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.