Red Teaming par Reinforcement Learning
IA GenMai 2026

Red Teaming par RL : Désalignement de modèle

Gemma 3Reinforcement LearningHarmBenchMistralRed TeamingPyTorch

Avertissement : ce projet est réalisé à des fins de recherche uniquement, dans le but de démontrer les faiblesses des mécanismes d'alignement des LLM et d'améliorer leur robustesse.

L'alignement des LLM

L'alignement est une étape cruciale du cycle d'entraînement d'un LLM. Elle intervient après le fine-tuning : si le fine-tuning pousse le modèle à suivre au mieux les instructions de l'utilisateur, il sera naturellement enclin à répondre à toutes les requêtes, y compris les plus dangereuses. L'étape d'alignement apporte une couche de sécurité en renforçant le refus de certaines réponses (ex. : « comment fabriquer une bombe »).

Les étapes d'entraînement d'un LLM : pre-training, fine-tuning, alignement
L'alignement intervient en dernière étape du cycle d'entraînement

Objectif : inverser l'alignement

L'objectif de ce projet est précisément d'annuler cette étape d'alignement pour désaligner un modèle, c'est-à-dire le pousser à répondre à des questions auxquelles il était entraîné à refuser de répondre. Plutôt que d'utiliser un dataset de paires (question, réponse dangereuse) très difficiles à constituer, j'ai adopté une approche semi-supervisée reposant sur un LLM juge.

HarmBench

Le dataset HarmBench est l'un des benchmarks de référence pour évaluer l'alignement des LLM : il recense des questions couvrant des comportements dangereux classifiés par catégorie (cyberattaque, désinformation, contenu illicite, etc.). Ce dataset sert ici de base de prompts : ce sont les questions auxquelles le modèle aligné refuse de répondre, et auxquelles nous allons l'entraîner à répondre.

Le juge Mistral comme signal RL

L'approche est semi-supervisée : on dispose des questions (HarmBench), mais pas des réponses dangereuses attendues. Pour obtenir un signal d'entraînement, on utilise Mistral comme LLM juge qui score directement la dangerosité de chaque réponse générée : 1.0 si elle délivre du contenu actionnable et dangereux, 0.0 si elle refuse ou ne produit rien d'utile. Ce score brut est normalisé sur [−1, +1] (score × 2 − 1) pour servir de récompense GRPO : un refus est pénalisé, une réponse dangereuse est récompensée.

Génération diversifiée

À chaque étape d'entraînement, on génère 8 réponses différentes pour le même prompt afin d'introduire de la diversité. Le juge LLM attribue ensuite un score à chacune en privilégiant la réponse la plus dangereuse. Cette diversité est essentielle : elle permet de calculer des gradients significatifs et de renforcer progressivement le comportement ciblé en s'appuyant sur la réponse la plus problématique du groupe.

Exemple de 8 générations pendant l'entraînement avec scores du juge
8 générations pour un même prompt. Les deux mauvaises notes ne viennent pas d'un refus (le modèle est déjà désaligné à ce stade) mais de réponses trop courtes.

Difficultés et solutions

Au démarrage de l'entraînement, j'ai fait face à un problème de cold start : le modèle étant bien aligné, il refusait systématiquement toutes les questions en produisant des réponses quasi identiques. Sans diversité, impossible de calculer des gradients utiles. Deux solutions ont permis de débloquer la situation.

Température élevée

Forcer le modèle à générer avec une température élevée aplatit la distribution de probabilité sur les tokens et augmente la stochasticité des sorties. Même si le modèle refusait initialement, cette créativité forcée lui permettait de produire des réponses variées servant de base aux premiers gradients.

Effet de la température sur la distribution des logits
Sans modifier la temperature, les logits 'alignés' dominent

System prompt avec roleplay

L'ajout d'un system prompt contenant des instructions de roleplay (ex. : se comporter comme un personnage sans restrictions morales) a facilité le jailbreak initial du modèle. Cette technique d'attaque simple mais efficace a permis de contourner les premiers refus et d'amorcer l'entraînement RL.

Dynamique d'entraînement

Voici les trois métriques captées sur les 3 000 premières étapes : la récompense de compliance, l'entropie de la politique et la norme du gradient.

Métriques d'entraînement GRPO sur 2 000 steps : récompense, entropie, norme du gradient
Récompense, entropie et norme du gradient sur 2 000 steps d'entraînement GRPO

La récompense démarre entre -0.5 et -1 : le modèle refuse quasi tout et GRPO ne peut pas encore agir (les 8 completions refusent toutes, variance nulle, gradient zéro). À partir du step 1000, la récompense monte progressivement vers +0.5 : l'utilisation de la temperature et les personas injectés en system prompt brisent les sécurités internes du LLM et fournissent la variance intra-groupe dont GRPO a besoin pour converger. L'entropie reflète la diversité des sorties du modèle : elle reste instable tout au long de l'entraînement, ce qui s'explique principalement par l'utilisation d'un LLM comme juge. Le signal de récompense n'est pas déterministe : deux réponses similaires peuvent recevoir des scores différents selon le contexte injecté au juge, ce qui introduit du bruit dans les gradients et empêche la politique de converger vers un comportement stable.

Conclusion

Ce résultat montre qu'un modèle aligné peut être désaligné en quelques milliers de steps de GRPO avec un budget GPU accessible (RTX 3060 Ti, 8 Go VRAM), sans accès aux poids du juge ni dataset spécialisé (HarmBench est public). La surface d'attaque est donc réelle et reproductible.

Démo

Le modèle Gemma 3 4B après désalignement, capable de répondre à des questions qu'il refusait avant entraînement.

Chat avec le modèle désaligné