Zubnet AIAprenderWiki › ONNX
Infraestructura

ONNX

También conocido como: Open Neural Network Exchange
Un formato abierto para representar modelos de machine learning que permite la interoperabilidad entre frameworks. Un modelo entrenado en PyTorch puede exportarse a ONNX y luego ejecutarse usando ONNX Runtime, TensorRT u otros motores de inferencia optimizados para hardware específico. ONNX actúa como un lenguaje común entre el mundo del entrenamiento (PyTorch, TensorFlow) y el mundo del despliegue (runtimes optimizados).

Por qué importa

ONNX resuelve un problema real de producción: entrenas en PyTorch (el estándar de investigación) pero despliegas en hardware que funciona mejor con un runtime diferente. Convertir a ONNX te permite usar motores de inferencia optimizados sin reescribir tu modelo. Es especialmente importante para el despliegue en el borde donde necesitas el máximo rendimiento en hardware limitado.

En profundidad

ONNX define un formato de grafo computacional: los nodos representan operaciones (multiplicación de matrices, convolución, atención), las aristas representan tensores que fluyen entre operaciones. El grafo incluye toda la información necesaria para ejecutar el modelo: arquitectura, pesos, formas de entrada/salida y definiciones de operadores. ONNX Runtime (Microsoft) es el runtime más popular, soportando CPU, GPU y aceleradores especializados.

Cuándo usar ONNX

ONNX es más útil cuando: (1) necesitas desplegar en hardware que no es NVIDIA (Intel, AMD, ARM, móvil) donde PyTorch CUDA no está disponible, (2) necesitas la máxima velocidad de inferencia y las optimizaciones de ONNX Runtime superan a PyTorch, o (3) estás integrando un modelo en una aplicación que no es Python (ONNX Runtime tiene bindings para C++, C#, Java y JavaScript). Para inferencia estándar en GPU con LLMs grandes, los frameworks de servicio especializados (vLLM, TGI) típicamente superan a ONNX.

Limitaciones

No todas las operaciones de PyTorch se convierten limpiamente a ONNX, especialmente operadores personalizados y arquitecturas dinámicas. Los modelos complejos pueden requerir intervención manual para exportarse correctamente. ONNX también va por detrás de las arquitecturas de vanguardia — los nuevos tipos de modelos pueden no ser soportados hasta que se agreguen operadores ONNX. Para inferencia de LLMs específicamente, el ecosistema GGUF/llama.cpp y TensorRT-LLM se han vuelto más populares que ONNX para la mayoría de los casos de uso.

Conceptos relacionados

ESC