Aller au contenu principal

ONNX Runtime : un format d'échange pour servir des modèles partout

ONNX est le format qui coupe le lien entre l'atelier où l'on entraîne un modèle et la machine où on le sert. Un modèle exporté au format ONNX se charge dans un moteur d'inférence C++, Java, JavaScript, Go, s'exécute sur CPU, GPU, TensorRT ou processeur mobile, et n'a plus besoin ni de PyTorch, ni de TensorFlow, ni d'un interpréteur Python. Ce cours vous apprend à faire cette bascule sans casser silencieusement votre modèle.

Durée du cours : 4h

Ce que vous allez apprendre

  • Lire un graphe ONNX, comprendre les jeux d'opérateurs (opset) et les versions.
  • Exporter un modèle depuis PyTorch avec torch.onnx.export en gérant les axes dynamiques.
  • Exporter un modèle TensorFlow ou Keras avec tf2onnx, et traiter la convention NHWC contre NCHW.
  • Vérifier numériquement l'équivalence entre le modèle d'origine et l'export ONNX.
  • Appliquer les niveaux d'optimisation de graphe d'ONNX Runtime et mesurer le gain.
  • Quantifier un modèle en INT8, en dynamique ou en statique avec calibration.
  • Choisir et ordonner les fournisseurs d'exécution : CPU, CUDA, TensorRT ; détecter un repli silencieux.
  • Comparer les performances de PyTorch, ONNX Runtime CPU, CUDA et TensorRT selon un protocole reproductible.
  • Diagnostiquer un opérateur non pris en charge et le contourner sans réentraîner le modèle.
  • Servir un modèle ONNX derrière FastAPI, avec une session partagée et un prétraitement identique à l'entraînement.

Prérequis

  • PyTorch (cours 09) ou TensorFlow / Keras (cours 08). Vous n'avez pas besoin des deux : les modules 2 et 3 sont autonomes.
  • Python, NumPy et un peu d'expérience de la ligne de commande.
  • Deep learning fondamental (cours 07) pour comprendre ce qu'est un graphe de calcul, un tenseur et une couche de convolution.

Fil rouge du cours

Deux modèles voyagent ensemble tout au long du cours, sur les mêmes tenseurs et les mêmes mesures : le ResNet18 entraîné au module 9 du cours PyTorch sur Fashion-MNIST, et un petit encodeur de texte de type transformeur pour classer des phrases (inspiré du cours 13). Le premier montre le chemin classique — CNN, opérateurs bien pris en charge, gains massifs de TensorRT ; le second révèle les pièges plus subtils — token embedding, masque d'attention, un opérateur récalcitrant qu'il faudra contourner. À la fin du cours, les deux modèles sont exportés, quantifiés, mesurés et servis derrière une petite API HTTP.

Modules du cours

  1. Le format ONNX : graphe, opérateurs, versions.
  2. Export depuis PyTorch.
  3. Export depuis TensorFlow.
  4. Vérification de l'équivalence numérique.
  5. Optimisation du graphe.
  6. Quantification ONNX.
  7. Fournisseurs d'exécution : CPU, GPU, TensorRT.
  8. Mesure comparative des performances.
  9. Opérateurs non pris en charge et contournements.
  10. Mise en service d'un modèle ONNX.

Évaluation et attestation

Le parcours se termine par un examen de 40 questions qui couvre les dix modules, du choix d'un jeu d'opérateurs à la lecture d'un profil de latence sous ONNX Runtime. En cas de réussite, une attestation d'achèvement est délivrée immédiatement ; son numéro est vérifiable sur la plateforme par tout tiers.

Les cours gratuits, eux, se concluent par un quiz de 5 questions avec un aperçu de l'attestation, sans certification.