Données
Qu’est-ce que ONNX ?
ONNX (Open Neural Network Exchange) est une représentation ouverte pour échanger des modèles d’apprentissage automatique entre frameworks et runtimes d’inférence. Un fichier `.onnx` courant stocke un ModelProto Protocol Buffers décrivant graphe de calcul, entrées et sorties, types et formes, imports d’opset et tenseurs initiaux. Safetensors stocke surtout les poids tensoriels ; ONNX représente aussi un graphe de modèle. La conversion ne garantit pas que chaque runtime prenne en charge tous les opérateurs ou fonctions spécifiques : vérifiez les versions IR/opset et le support de l’implémentation.
Quand choisir ce format
- Inférence sur un runtime compatible avec les opérateurs et l’opset du modèle
- Échange d’un graphe incluant entrées sorties et types
Quand éviter ce format
- Supposer que tous les runtimes acceptent chaque opérateur et préservent précision et performances
- Stocker uniquement des poids tensoriels sans graphe d’inférence ou configuration
Usages courants
- Échanger graphes de calcul et poids ML avec des runtimes compatibles
- Transférer des modèles entre frameworks d’entraînement et environnements d’inférence
Caractéristiques
- ModelProto Protocol Buffers contenant le graphe et les informations du modèle
- Nœuds faisant référence aux opérateurs définis par domaine et version d’opset
- Tenseurs initiaux intégrés ou stockés dans des fichiers externes
Avantages et inconvénients
Avantages
- Graphe de modèle commun entre runtimes d’inférence compatibles
- Informations de types pour entrées et sorties utiles à la validation et l’optimisation
- Gestion de grands tenseurs dans des fichiers externes
Inconvénients
- Le support des opérateurs opsets types et optimisations diffère selon les runtimes
- Les sorties ou performances converties peuvent différer du framework source
- Les fichiers externes doivent rester associés au modèle .onnx
Ouvrir et convertir
Comment ouvrir
Chargez-le avec ONNX checker ou un runtime d’inférence compatible. Avant déploiement, vérifiez versions IR/opset, opérateurs, types et formes d’entrée/sortie et support du runtime ; comparez les sorties au modèle source sur des entrées représentatives.
Comment convertir
Exportez avec l’exporteur ONNX du framework source puis validez la structure avec ONNX checker. Une conversion réussie ne garantit ni équivalence numérique ni exécution sur l’appareil cible. Avec des données externes, conservez le modèle et tous les fichiers référencés dans le même lot de distribution.
Précautions
- Ne supprimez ne renommez ni ne déplacez les fichiers annexes référencés par les tenseurs externes
- Les emplacements externes peuvent contenir des chemins relatifs ; inspectez les références des modèles non fiables et utilisez un chargeur maintenu
- Validez conversion prétraitement post-traitement et précision même si le fichier ONNX est valide
Questions fréquentes
ONNX est-il uniquement un fichier de poids ?
Non. ModelProto décrit un graphe de calcul ainsi que les opérateurs et types, et peut inclure des tenseurs initiaux. Les grands tenseurs peuvent aussi être stockés dans des fichiers externes.
ONNX et Safetensors ont-ils le même usage ?
Non. Safetensors stocke surtout des poids tensoriels ; ONNX représente un graphe de modèle pour l’inférence. Ils peuvent être utilisés ensemble.
Tout runtime d’inférence peut-il exécuter tout modèle ONNX ?
Non. Vérifiez la prise en charge de l’IR/opset, des opérateurs, types de données et appareil cible du modèle.