Captum · Model Interpretability for PyTorch

Captum · Model Interpretability for PyTorch

Meta (PyTorch team) · Programación

Captum es una librería gratuita y de código abierto de Meta que explica las predicciones de modelos PyTorch. Sus algoritmos de atribución muestran qué características, neuronas o capas influyeron en una salida.

Vista previa de la interfaz de Captum · Model Interpretability for PyTorch

Acerca de Captum · Model Interpretability for PyTorch

About

Qué es Captum

Captum es una librería de Python de interpretabilidad de modelos PyTorch, pensada para saber a qué reacciona de verdad una red ya entrenada. El nombre viene del latín y significa comprensión, que es justo el trabajo: coges un modelo que ya tienes, le aplicas un algoritmo de atribución y obtienes números que indican cuánto aportó cada característica de entrada, cada neurona o cada capa a una predicción concreta.

Su utilidad aparece cuando un modelo falla y nadie sabe explicar por qué. Un clasificador marca un estudio como anómalo, un recomendador insiste con el mismo producto raro, un modelo de lenguaje responde con una confianza que no encaja. Captum deja mirar dentro de la pasada hacia delante en lugar de adivinar.

El límite está en el alcance. Captum es una librería, no una aplicación. Hace falta soltura con Python y PyTorch antes de que tenga sentido, y los resultados son tensores que tú mismo interpretas o dibujas en un cuaderno. No hay panel alojado que abrir. El equipo retiró la interfaz visual Captum Insights después de la versión 0.8.0, así que quien espere una herramienta de clics se llevará una decepción.

Primeros pasos

  1. Instala el paquete con pip install captum, o con conda install captum -c pytorch si usas conda. La versión 0.9.0 pide Python 3.10 o superior y PyTorch 2.3 o superior.
  2. Carga tu modelo entrenado y ponlo en modo evaluación. La mayoría de los algoritmos no exigen ningún cambio en la arquitectura.
  3. Elige un algoritmo y pásale el modelo. IntegratedGradients(model) suele ser la primera opción cuando se trabaja con atribución basada en gradientes.
  4. Llama a attribute() con tu lote de entrada y, cuando el método lo requiera, una línea base como un tensor de ceros.
  5. Revisa las atribuciones devueltas, compara el delta de convergencia si lo pediste y representa las puntuaciones junto a tus entradas.

Información del producto

Un vistazo rápido a los precios, las plataformas compatibles y el rendimiento de Captum · Model Interpretability for PyTorch.

Plan gratuitoSí
Planes de pagoFree (open source, BSD 3 Clause)
PlataformaPython library; runs on CPU, GPU and distributed PyTorch setups
DesarrolladorMeta (PyTorch team)
CategoríaProgramación
Fecha de lanzamientoJun 2020
Última actualizaciónApr 2026
Visitas al sitio web7.2K
Ranking global del sitio2.9M
Disponibilidad de la APISí

Ideal para

Los usuarios, tareas y casos de uso en los que esta herramienta encaja mejor.

Usuarios

  • Ingenieros de aprendizaje automático
  • Investigadores de interpretabilidad
  • Ingenieros de aplicaciones con modelos en producción

Tareas

  • Depurar una predicción errónea
  • Comprobar si el modelo aprendió atajos
  • Comparar neuronas y capas
  • Auditar los datos de entrenamiento

Casos de uso

  • Preparar un modelo para una reunión de revisión
  • Investigar con modelos de lenguaje grandes
  • Probar la resistencia antes del lanzamiento

Funciones clave

Algoritmos de atribución

Captum agrupa sus métodos en dos familias: basados en gradientes y basados en perturbaciones. Los de gradiente incluyen Saliency, InputXGradient, IntegratedGradients, DeepLift, GradientShap, GuidedBackprop y Guided GradCam; los de perturbación, FeatureAblation, Occlusion, ShapleyValueSampling y Lime. Tener ambas familias en el mismo sitio permite cruzar resultados: cuando un método de gradiente y otro de perturbación señalan los mismos píxeles, la atribución de características gana peso, y llegas a la sesión de depuración de modelos con una explicación concreta en lugar de una corazonada.

Atribución por neurona y por capa

La atribución de características dice qué miró el modelo. La de neuronas y capas dice dónde ocurrió dentro de la red. LayerConductance, LayerIntegratedGradients, LayerLRP y sus equivalentes por neurona puntúan las activaciones de una capa elegida, y así puedes rastrear una predicción rota hasta un punto concreto de la arquitectura.

Envoltorios para atribución en LLM

LLMAttribution y LLMGradientAttribution adaptan los algoritmos existentes para que funcionen con secuencias de tokens de modelos de lenguaje al estilo de Hugging Face. Indican qué tokens del mensaje influyeron en la respuesta generada, y puedes agrupar esos tokens en palabras o frases antes de puntuarlos. La atribución en LLM tarda más que una sola pasada hacia delante, así que conviene planificar el coste de inferencia.

Análisis de conceptos e influencia

El módulo de conceptos implementa TCAV, que comprueba si un concepto como las rayas o el pelaje importa para una clase entrenando un clasificador pequeño sobre las activaciones. El módulo de influencia añade TracIn y otros estimadores para preguntar qué ejemplos de entrenamiento moldearon una predicción. Los dos están pensados para flujos de investigación más que para comprobaciones rápidas.

Pruebas de robustez

El módulo de robustez ofrece FGSM, PGD, AttackComparator y MinParamPerturbation. Puedes generar ejemplos adversarios, comparar ataques uno al lado del otro y buscar la perturbación más pequeña que cambia una etiqueta. Combina bien con la atribución, porque una característica que aguanta tanto la revisión por gradientes como la de ataques sostiene mejor la conclusión.

Métricas de calidad de las explicaciones

Las métricas de infidelidad y sensibilidad estiman hasta qué punto son fiables unas atribuciones. En lugar de fiarte de un mapa de calor porque parece razonable, puedes cuantificar cuánto se aleja la explicación del modelo al perturbar las entradas y comparar algoritmos sobre la misma muestra.

Ventajas y desventajas

Ventajas

  • Sin tocar el modelo: la mayoría de los algoritmos aceptan cualquier `nn.Module` de PyTorch tal cual, sin reentrenar ni reestructurar la red para explicarla.
  • Cobertura amplia de algoritmos: más de sesenta clases de atribución exportadas, desde Saliency hasta LRP, los valores de Shapley y TCAV, todas bajo una misma ruta de importación.
  • Resultados verificables: IntegratedGradients devuelve un delta de convergencia y la librería incluye métricas de infidelidad y sensibilidad, así que las explicaciones se comprueban en vez de darse por buenas.
  • Multimodal por diseño: la misma API maneja tensores de imagen, entradas de texto por tokens, audio y series temporales, lo que mantiene un único estilo de código entre proyectos.
  • Gratis y con licencia permisiva: BSD 3 Clause te permite usarla en código comercial sin pedir permiso a nadie.

Desventajas

  • Curva de aprendizaje marcada: elegir entre más de cuarenta algoritmos exige entender qué asume cada uno, y la librería no te ayuda a decidir.
  • Sin interfaz visual: Captum Insights se retiró tras la versión 0.8.0, así que tienes que escribir tus propias gráficas para ver algo.
  • Coste de cómputo alto en algunos métodos: los algoritmos de perturbación y la atribución en LLM ejecutan muchas pasadas hacia delante por muestra, y en modelos grandes sale caro.
  • Requiere conocer PyTorch: no hay un envoltorio independiente del framework para quien trabaja fuera del mundo PyTorch, y las salidas llegan como tensores sin procesar. Los equipos en TensorFlow o JAX no pueden reutilizar su código de modelo, y quien no programa en Python no tiene puerta de entrada.

Preguntas frecuentes

Captum explica las predicciones de modelos PyTorch. Puntúa cuánto aportó cada característica de entrada, neurona o capa a una salida, lo que resulta útil para depurar, revisar modelos e investigar cómo deciden las redes.