Activation Patching (Causal Tracing)
iaDéfinition
L'Activation Patching (aussi appele Causal Tracing) est une technique de mechanistic interpretability qui consiste a intercepter et modifier les activations internes d'un LLM lors d'une inference pour identifier causalement quelles couches et positions de tokens sont responsables d'un comportement specifique ou de la connaissance d'un fait particulier. Le protocole standard (Meng et al., 2022 - ROME) : (1) Run 'propre' — executer le modele sur un prompt avec le fait correct (ex: 'La Tour Eiffel est a Paris'), enregistrer toutes les activations, (2) Run 'corrompu' — executer sur un prompt altere (ex: 'La Tour Eiffel est a Londres'), sans enregistrer, (3) Patching — reexecuter le run corrompu en 'patchant' (substituant) les activations de differentes couches depuis le run propre. La couche qui, une fois patchee, restaure la bonne reponse, est causalement impliquee dans le stockage de ce fait. Les decouvertes cles de l'activation patching sur les LLMs : (1) Les faits factuels semblent etre stockes principalement dans les couches FFN du milieu du reseau, (2) Les couches d'attention des derniers niveaux sont importantes pour extraire et utiliser ces faits, (3) Les positions de tokens correspondant au sujet de la phrase sont les plus importantes pour les faits factuels. ROME (Rank-One Model Editing) et MEMIT sont des methodes d'edition de modele construites sur les insights de l'activation patching : en identifiant les matrices MLP qui stockent un fait particulier, on peut modifier directement ces poids pour 'editer' la connaissance du modele sans retrainement complet. Exemple : changer 'Le president de X est Y' vers 'Le president de X est Z'. L'activation patching est un outil puissant mais aussi couteux : il necessite N forward passes pour chaque couche a tester (N = nombre de couches * nombre de positions de tokens). Pour des etudes systematiques, cela peut necessiter des milliers d'executions du modele par fait etudie.
Causal Tracing simplifie
def causal_trace(model, clean_prompt, corrupted_prompt, target_token):
# Etape 1: Run propre -> sauvegarder activations
clean_activations = {}
with record_activations(model, clean_activations):
clean_output = model(clean_prompt)
# Etape 2: Run corrompu + patch chaque couche
results = {}
for layer in range(model.num_layers):
with patch_activation(model, layer, clean_activations[layer]):
patched_output = model(corrupted_prompt)
# Mesurer si la bonne reponse est restauree
score = patched_output.proba_of(target_token)
results[layer] = score
return results # Pic = couche causalement importante
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h