Zubnet AIApprendreWiki › ONNX
Infrastructure

ONNX

Aussi appelé : Open Neural Network Exchange
Un format ouvert pour représenter les modèles d'apprentissage automatique qui permet l'interopérabilité entre frameworks. Un modèle entraîné dans PyTorch peut être exporté en ONNX puis exécuté avec ONNX Runtime, TensorRT ou d'autres moteurs d'inférence optimisés pour du matériel spécifique. ONNX agit comme un langage commun entre le monde de l'entraînement (PyTorch, TensorFlow) et le monde du déploiement (runtimes optimisés).

Pourquoi c'est important

ONNX résout un vrai problème de production : tu entraînes dans PyTorch (le standard de recherche) mais tu déploies sur du matériel qui tourne mieux avec un runtime différent. Convertir en ONNX te permet d'utiliser des moteurs d'inférence optimisés sans réécrire ton modèle. C'est particulièrement important pour le déploiement en périphérie où tu as besoin de performance maximale sur du matériel limité.

En profondeur

ONNX définit un format de graphe de calcul : les nœuds représentent des opérations (multiplication matricielle, convolution, attention), les arêtes représentent les tenseurs circulant entre les opérations. Le graphe inclut toute l'information nécessaire pour exécuter le modèle : architecture, poids, formes d'entrée/sortie et définitions d'opérateurs. ONNX Runtime (Microsoft) est le runtime le plus populaire, supportant CPU, GPU et accélérateurs spécialisés.

Quand utiliser ONNX

ONNX est le plus utile quand : (1) tu dois déployer sur du matériel non-NVIDIA (Intel, AMD, ARM, mobile) où PyTorch CUDA n'est pas disponible, (2) tu as besoin de vitesse d'inférence maximale et que les optimisations d'ONNX Runtime surpassent PyTorch, ou (3) tu intègres un modèle dans une application non-Python (ONNX Runtime a des bindings C++, C#, Java et JavaScript). Pour l'inférence GPU standard avec de gros LLM, les frameworks de service spécialisés (vLLM, TGI) surpassent généralement ONNX.

Limitations

Toutes les opérations PyTorch ne se convertissent pas proprement en ONNX, surtout les opérateurs personnalisés et les architectures dynamiques. Les modèles complexes peuvent nécessiter une intervention manuelle pour être correctement exportés. ONNX est aussi en retard par rapport aux architectures de pointe — les nouveaux types de modèles peuvent ne pas être supportés tant que les opérateurs ONNX ne sont pas ajoutés. Pour l'inférence LLM spécifiquement, l'écosystème GGUF/llama.cpp et TensorRT-LLM sont devenus plus populaires qu'ONNX pour la plupart des cas d'usage.

Concepts connexes

← Tous les termes
← Ollama OpenAI →