Captum · Model Interpretability for PyTorch

Captum · Model Interpretability for PyTorch

Meta (PyTorch team) · Programmation

Captum est une bibliothèque gratuite et open source signée Meta qui explique les prédictions des modèles PyTorch. Ses algorithmes d'attribution montrent quelles variables, quels neurones ou quelles couches ont pesé sur une sortie.

Aperçu de l'interface de Captum · Model Interpretability for PyTorch

À propos de Captum · Model Interpretability for PyTorch

About

Qu'est-ce que Captum

Captum est une bibliothèque Python d'interprétabilité des modèles PyTorch. Elle répond à une question précise : à quoi un réseau déjà entraîné réagit-il réellement ? Le nom vient du latin et veut dire compréhension, ce qui résume le travail. Vous prenez un modèle existant, vous lancez un algorithme d'attribution dessus et vous obtenez des valeurs qui mesurent la part de chaque variable d'entrée, de chaque neurone et de chaque couche dans une prédiction donnée.

L'intérêt devient évident quand un modèle se trompe sans que personne sache pourquoi. Un classifieur étiquette une image médicale comme anormale, un moteur de recommandation renvoie toujours le même article bizarre, un modèle de langage répond avec une assurance qui ne tient pas debout. Captum ouvre la passe avant au lieu de laisser deviner.

La limite tient au périmètre. Captum est une bibliothèque, pas une application. Il faut être à l'aise avec Python et PyTorch pour que tout cela ait un sens, et les résultats arrivent sous forme de tenseurs que vous interprétez ou affichez vous-même dans un notebook. Aucun tableau de bord hébergé n'existe. L'interface visuelle Captum Insights a été retirée après la version 0.8.0, donc un utilisateur qui cherche un outil à cliquer sera déçu.

Pour bien démarrer

  1. Installez le paquet avec pip install captum, ou avec conda install captum -c pytorch si vous travaillez sous conda. La version 0.9.0 demande Python 3.10 au minimum et PyTorch 2.3 au minimum.
  2. Chargez votre modèle entraîné et passez-le en mode évaluation. La plupart des algorithmes ne demandent aucune modification de l'architecture.
  3. Choisissez un algorithme et donnez-lui le modèle. IntegratedGradients(model) reste le premier réflexe quand on travaille avec une attribution fondée sur les gradients.
  4. Appelez attribute() avec votre lot d'entrées et, quand la méthode le demande, une référence comme un tenseur de zéros.
  5. Examinez les attributions renvoyées, vérifiez le delta de convergence si vous l'avez demandé et tracez les scores à côté de vos entrées.

Informations sur le produit

Aperçu des tarifs, des plateformes compatibles et des performances de Captum · Model Interpretability for PyTorch.

Offre gratuiteOui
Offres payantesFree (open source, BSD 3 Clause)
PlateformePython library; runs on CPU, GPU and distributed PyTorch setups
DéveloppeurMeta (PyTorch team)
CatégorieProgrammation
Date de lancementJun 2020
Dernière mise à jourApr 2026
Visites du site7.2K
Classement mondial du site2.9M
Disponibilité de l’APIOui

Idéal pour

Les utilisateurs, tâches et cas d'usage où cet outil convient le mieux.

Utilisateurs

  • Ingénieurs en apprentissage automatique
  • Chercheurs en interprétabilité
  • Ingénieurs applicatifs avec des modèles en production

Tâches

  • Déboguer une prédiction erronée
  • Vérifier si le modèle a appris des raccourcis
  • Comparer neurones et couches
  • Auditer les données d'entraînement

Cas d'usage

  • Préparer un modèle pour une revue
  • Recherche sur les grands modèles de langage
  • Tester la résistance avant une mise en production

Fonctionnalités clés

Algorithmes d'attribution

Captum classe ses méthodes en deux familles, celles fondées sur les gradients et celles fondées sur les perturbations. Côté gradients, on trouve Saliency, InputXGradient, IntegratedGradients, DeepLift, GradientShap, GuidedBackprop et Guided GradCam ; côté perturbations, FeatureAblation, Occlusion, ShapleyValueSampling et Lime. Réunir les deux familles au même endroit permet de recouper un résultat : quand une méthode de gradient et une méthode de perturbation désignent les mêmes pixels, l'attribution des variables gagne en solidité et vous arrivez en réunion de débogage de modèles avec une explication précise plutôt qu'une impression.

Attribution par neurone et par couche

L'attribution de variables indique ce que le modèle a regardé. L'attribution par neurones et par couches indique où cela s'est joué dans le réseau. LayerConductance, LayerIntegratedGradients, LayerLRP et leurs équivalents par neurone notent les activations d'une couche choisie, ce qui permet de remonter d'une prédiction ratée jusqu'à un point précis de l'architecture.

Enveloppes pour l'attribution sur les LLM

LLMAttribution et LLMGradientAttribution adaptent les algorithmes existants aux séquences de jetons des modèles de langage de type Hugging Face. Ils indiquent quels jetons du message ont influencé la réponse générée, et vous pouvez regrouper ces jetons en mots ou en phrases avant de les noter. L'attribution sur un LLM coûte plus qu'une seule passe avant, il vaut donc mieux anticiper le coût d'inférence.

Analyse des concepts et de l'influence

Le module de concepts implémente TCAV, qui vérifie si un concept comme les rayures ou la fourrure compte pour une classe en entraînant un petit classifieur sur les activations. Le module d'influence ajoute TracIn et d'autres estimateurs pour savoir quels exemples d'entraînement ont façonné une prédiction. Les deux visent des travaux de recherche, pas des vérifications rapides.

Tests de robustesse

Le module de robustesse fournit FGSM, PGD, AttackComparator et MinParamPerturbation. Vous pouvez générer des exemples adverses, comparer des attaques côte à côte et chercher la plus petite perturbation qui change une étiquette. L'association avec l'attribution est naturelle : une variable qui résiste à la fois au contrôle par gradients et à celui par attaques constitue une conclusion plus solide.

Métriques de qualité des explications

Les métriques d'infidélité et de sensibilité estiment la fiabilité d'un ensemble d'attributions. Au lieu de faire confiance à une carte de chaleur parce qu'elle paraît raisonnable, vous mesurez l'écart entre l'explication et le modèle quand les entrées sont perturbées, puis vous comparez les algorithmes sur le même échantillon.

Avantages et inconvénients

Avantages

  • Aucune modification du modèle : la plupart des algorithmes acceptent n'importe quel `nn.Module` PyTorch tel quel, sans réentraînement ni restructuration du réseau pour l'expliquer.
  • Large couverture d'algorithmes : plus de soixante classes d'attribution exportées, de Saliency à LRP en passant par les valeurs de Shapley et TCAV, toutes accessibles par le même chemin d'importation.
  • Résultats vérifiables : IntegratedGradients renvoie un delta de convergence et la bibliothèque inclut des métriques d'infidélité et de sensibilité, donc les explications se contrôlent au lieu de se supposer.
  • Multimodal par conception : la même API traite des tenseurs d'images, des entrées de texte par jetons, de l'audio et des séries temporelles, ce qui garde un style de code unique d'un projet à l'autre.
  • Gratuit sous licence permissive : la BSD 3 Clause autorise l'usage dans du code commercial sans demander l'accord de quiconque.

Inconvénients

  • Courbe d'apprentissage raide : choisir parmi plus de quarante algorithmes suppose de comprendre ce que chacun postule, et la bibliothèque ne vous aide pas à trancher.
  • Aucune interface visuelle : Captum Insights a été retiré après la version 0.8.0, il faut donc écrire ses propres graphiques pour voir quelque chose.
  • Coût de calcul élevé sur certaines méthodes : les algorithmes de perturbation et l'attribution sur les LLM exécutent de nombreuses passes avant par échantillon, ce qui devient cher sur les gros modèles.
  • PyTorch obligatoire : il n'existe pas d'enveloppe indépendante du framework pour ceux qui travaillent hors de l'univers PyTorch, et les sorties arrivent sous forme de tenseurs bruts. Les équipes sur TensorFlow ou JAX ne peuvent pas réutiliser leur code de modèle, et une personne qui ne programme pas en Python n'a aucun point d'entrée.

Questions fréquentes

Captum explique les prédictions des modèles PyTorch. Il mesure la contribution de chaque variable d'entrée, de chaque neurone et de chaque couche à une sortie, ce qui sert au débogage, à la revue de modèles et à la recherche sur la façon dont les réseaux décident.