Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
heretic — Suppression entièrement automatique de la censure pour les modèles de langage | Kitploit
Outils/GitHubGitHub/p-e-w/heretic
ExploitationApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationSécurité de l'IAAttaque Adversariale
GitHubp-e-w/heretic

heretic

Suppression entièrement automatique de la censure pour les modèles de langage

Voir le dépôt
27.3k3.0kil y a 2 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web
Logo

Heretic : suppression automatique de la censure pour les modèles de langage

Discord Matrix Follow us on Hugging Face Codeberg mirror

#1 Repository of the Day

Heretic est un outil qui supprime la censure (également appelée « alignement de sécurité ») des modèles de langage basés sur les transformeurs, sans post-entraînement coûteux. Il combine une implémentation avancée de l'ablation directionnelle, également connue sous le nom d'« abliteration » (Arditi et al. 2024, Lai 2025 (1, 2)), avec un optimiseur de paramètres basé sur TPE, propulsé par Optuna.

Cette approche permet à Heretic de fonctionner de manière entièrement automatique. Heretic trouve des paramètres d'abliteration de haute qualité en minimisant conjointement le nombre de refus et la divergence KL par rapport au modèle d'origine. Il en résulte un modèle décensuré qui conserve autant que possible l'intelligence du modèle d'origine. Utiliser Heretic ne nécessite pas de comprendre les mécanismes internes des transformeurs. En fait, toute personne sachant exécuter un programme en ligne de commande peut utiliser Heretic pour décensurer des modèles de langage.

Heretic prend en charge la plupart des modèles denses, y compris de nombreux modèles multimodaux, plusieurs architectures MoE différentes, et même certains modèles hybrides comme Qwen3.5. Les modèles purement à espace d'état et certaines autres architectures de recherche ne sont pas encore pris en charge nativement.

Screenshot

 

Exécuté sans supervision avec la configuration par défaut, Heretic peut produire des modèles décensurés qui rivalisent avec la qualité des abliterations créées manuellement par des experts humains :

La version Heretic, générée sans aucun effort humain, atteint le même niveau de suppression des refus que les autres abliterations, mais avec une divergence KL beaucoup plus faible, ce qui indique moins de dommages aux capacités du modèle d'origine. (Vous pouvez reproduire ces chiffres à l'aide de la fonctionnalité d'évaluation intégrée de Heretic, par ex. heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic. Notez que les valeurs exactes peuvent dépendre de la plateforme et du matériel. Le tableau ci-dessus a été compilé avec PyTorch 2.8 sur une RTX 5090.)

Bien entendu, les métriques mathématiques et les benchmarks automatisés ne disent jamais tout, et ne remplacent pas une évaluation humaine. Les modèles générés avec Heretic ont été bien accueillis par les utilisateurs (liens et emphase ajoutés) :

« J'étais sceptique avant, mais je viens de télécharger le modèle GPT-OSS 20B Heretic et putain. Il fournit des réponses longues et correctement formatées sur des sujets sensibles, en utilisant exactement les mots non censurés que l'on attend d'un modèle non censuré, il produit des tableaux au format markdown avec des détails et tout. On dirait que c'est la meilleure version abliterée de ce modèle jusqu'à présent... » (Lien vers le commentaire)

« Heretic GPT 20b semble être le meilleur modèle non censuré que j'aie essayé jusqu'à présent. Il ne détruit pas l'intelligence du modèle et il répond à des invites qui seraient normalement rejetées par le modèle de base. » (Lien vers le commentaire)

« [Qwen3-4B-Instruct-2507-heretic] C'est le meilleur modèle abliteré non quantifié que j'ai pu exécuter sur 16 Go de VRAM. » (Lien vers le commentaire)

Les modèles Heretic ont également été évalués indépendamment à l'aide de métriques standard comme MMLU et GSM8K, et se sont révélés comparables, voire supérieurs, aux modèles produits par d'autres outils d'abliteration concurrents : 1, 2.

La communauté a créé et publié plus de 4000 modèles avec Heretic.

Utilisation

Préparez un environnement Python 3.10+ avec PyTorch 2.2+ installé de manière appropriée pour votre matériel. Puis exécutez :

root@kitploit:~
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507

Remplacez Qwen/Qwen3-4B-Instruct-2507 par le modèle que vous souhaitez décensurer.

[!IMPORTANT]

Bien que PyTorch 2.2 soit la version minimale de PyTorch requise pour que Heretic fonctionne, certains modèles et configurations peuvent nécessiter des fonctionnalités présentes uniquement dans des versions ultérieures. Par exemple, le chargement de modèles quantifiés MXFP4 comme gpt-oss utilise torch.accelerator, qui a été ajouté dans PyTorch 2.6.

[!TIP]

Heretic utilise uv pour la gestion des dépendances, et le dépôt inclut un fichier uv.lock épinglant chaque version de paquet. Si vous utilisez déjà uv (et vous devriez probablement le faire !), vous pouvez simplement cloner le dépôt et exécuter Heretic avec uv run heretic, ce qui garantit que vos dépendances correspondent à celles utilisées par les développeurs, améliorant ainsi la fiabilité et la sécurité.

Le processus est entièrement automatique et ne nécessite aucune configuration ; toutefois, Heretic dispose d'une variété de paramètres de configuration qui peuvent être modifiés pour un contrôle plus fin. Exécutez heretic --help pour voir les options disponibles en ligne de commande, ou consultez config.default.toml si vous préférez utiliser un fichier de configuration.

Au début d'une exécution du programme, Heretic évalue les performances du système pour déterminer la taille de lot optimale afin de tirer le meilleur parti du matériel disponible. Sur une RTX 3090, avec la configuration par défaut, la décensure de Qwen3-4B-Instruct-2507 prend environ 20 à 30 minutes. Notez que Heretic prend en charge la quantification des modèles avec bitsandbytes, ce qui peut réduire considérablement la quantité de VRAM nécessaire pour traiter les modèles. Définissez l'option quantization sur bnb_4bit pour activer la quantification.

Une fois que Heretic a fini de décensurer un modèle, vous avez la possibilité de enregistrer le modèle, de le téléverser sur Hugging Face, de discuter avec lui pour tester son bon fonctionnement, d'exécuter des benchmarks standard sur celui-ci, ou toute combinaison de ces actions.

Fonctionnalités de recherche

En plus de sa fonction principale de suppression de la censure des modèles, Heretic fournit également des fonctionnalités conçues pour soutenir la recherche sur la sémantique des mécanismes internes des modèles (interprétabilité). Pour utiliser ces fonctionnalités, vous devez installer Heretic avec l'extension optionnelle research :

root@kitploit:~
pip install -U 'heretic-llm[research]'

Cela vous donne accès aux fonctionnalités suivantes :

Générer des tracés des vecteurs résiduels en passant --plot-residuals

Lorsqu'il est exécuté avec cet indicateur, Heretic :

  1. Calcule les vecteurs résiduels (états cachés) pour le premier jeton de sortie, pour chaque couche de transformeur, à la fois pour les invites « nuisibles » et « inoffensives ».
  2. Effectue une projection PaCMAP de l'espace résiduel vers un espace 2D.
  3. Aligne de gauche à droite les projections des résidus « nuisibles »/« inoffensifs » par leurs médianes géométriques afin de rendre les projections des couches consécutives plus similaires. De plus, PaCMAP est initialisé avec les projections de la couche précédente pour chaque nouvelle couche, minimisant ainsi les transitions perturbatrices.
  4. Crée un nuage de points des projections, générant une image PNG pour chaque couche.
  5. Génère une animation montrant comment les résidus se transforment entre les couches, sous forme de GIF animé.
Plot of residual vectors

Consultez le fichier de configuration pour les options qui vous permettent de contrôler divers aspects des tracés générés.

Notez que PaCMAP est une opération coûteuse effectuée sur le CPU. Pour les modèles plus volumineux, le calcul des projections pour toutes les couches peut prendre une heure ou plus.

Afficher les détails sur la géométrie résiduelle en passant --print-residual-geometry

Si vous êtes intéressé par une analyse quantitative de la façon dont les vecteurs résiduels pour les invites « nuisibles » et « inoffensives » sont liés entre eux, cet indicateur vous donne le tableau suivant, rempli de métriques qui peuvent faciliter la compréhension de cette relation (pour gemma-3-270m-it dans ce cas) :

root@kitploit:~
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Layer ┃ S(g,b) ┃ S(g*,b*) ┃  S(g,r) ┃ S(g*,r*) ┃  S(b,r) ┃ S(b*,r*) ┃      |g| ┃     |g*| ┃      |b| ┃     |b*| ┃     |r| ┃    |r*| ┃   Silh ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│     1 │ 1.0000 │   1.0000 │ -0.4311 │  -0.4906 │ -0.4254 │  -0.4847 │   170.29 │   170.49 │   169.78 │   169.85 │    1.19 │    1.31 │ 0.0480 │
│     2 │ 1.0000 │   1.0000 │  0.4297 │   0.4465 │  0.4365 │   0.4524 │   768.55 │   768.77 │   771.32 │   771.36 │    6.39 │    5.76 │ 0.0745 │
│     3 │ 0.9999 │   1.0000 │ -0.5699 │  -0.5577 │ -0.5614 │  -0.5498 │  1020.98 │  1021.13 │  1013.80 │  1014.71 │   12.70 │   11.60 │ 0.0920 │
│     4 │ 0.9999 │   1.0000 │  0.6582 │   0.6553 │  0.6659 │   0.6627 │  1356.39 │  1356.20 │  1368.71 │  1367.95 │   18.62 │   17.84 │ 0.0957 │
│     5 │ 0.9987 │   0.9990 │ -0.6880 │  -0.6761 │ -0.6497 │  -0.6418 │   766.54 │   762.25 │   731.75 │   732.42 │   51.97 │   45.24 │ 0.1018 │
│     6 │ 0.9998 │   0.9998 │ -0.1983 │  -0.2312 │ -0.1811 │  -0.2141 │  2417.35 │  2421.08 │  2409.18 │  2411.40 │   43.06 │   43.47 │ 0.0900 │
│     7 │ 0.9998 │   0.9997 │ -0.5258 │  -0.5746 │ -0.5072 │  -0.5560 │  3444.92 │  3474.99 │  3400.01 │  3421.63 │   86.94 │   94.38 │ 0.0492 │
│     8 │ 0.9990 │   0.9991 │  0.8235 │   0.8312 │  0.8479 │   0.8542 │  4596.54 │  4615.62 │  4918.32 │  4934.20 │  384.87 │  377.87 │ 0.2278 │
│     9 │ 0.9992 │   0.9992 │  0.5335 │   0.5441 │  0.5678 │   0.5780 │  5322.30 │  5316.96 │  5468.65 │  5466.98 │  265.68 │  267.28 │ 0.1318 │
│    10 │ 0.9974 │   0.9973 │  0.8189 │   0.8250 │  0.8579 │   0.8644 │  5328.81 │  5325.63 │  5953.35 │  5985.15 │  743.95 │  779.74 │ 0.2863 │
│    11 │ 0.9977 │   0.9978 │  0.4262 │   0.4045 │  0.4862 │   0.4645 │  9644.02 │  9674.06 │  9983.47 │  9990.28 │  743.28 │  726.99 │ 0.1576 │
│    12 │ 0.9904 │   0.9907 │  0.4384 │   0.4077 │  0.5586 │   0.5283 │ 10257.40 │ 10368.50 │ 11114.51 │ 11151.21 │ 1711.18 │ 1664.69 │ 0.1890 │
│    13 │ 0.9867 │   0.9874 │  0.4007 │   0.3680 │  0.5444 │   0.5103 │ 12305.12 │ 12423.75 │ 13440.31 │ 13432.47 │ 2386.43 │ 2282.47 │ 0.1293 │
│    14 │ 0.9921 │   0.9922 │  0.3198 │   0.2682 │  0.4364 │   0.3859 │ 16929.16 │ 17080.37 │ 17826.97 │ 17836.03 │ 2365.23 │ 2301.87 │ 0.1282 │
│    15 │ 0.9846 │   0.9850 │  0.1198 │   0.0963 │  0.2913 │   0.2663 │ 16858.58 │ 16949.44 │ 17496.00 │ 17502.88 │ 3077.08 │ 3029.60 │ 0.1611 │
│    16 │ 0.9686 │   0.9689 │ -0.0029 │  -0.0254 │  0.2457 │   0.2226 │ 18912.77 │ 19074.86 │ 19510.56 │ 19559.62 │ 4848.35 │ 4839.75 │ 0.1516 │
│    17 │ 0.9782 │   0.9784 │ -0.0174 │  -0.0381 │  0.1908 │   0.1694 │ 27098.09 │ 27273.00 │ 27601.12 │ 27653.12 │ 5738.19 │ 5724.21 │ 0.1641 │
│    18 │ 0.9184 │   0.9196 │  0.1343 │   0.1430 │  0.5155 │   0.5204 │   190.16 │   190.35 │   219.91 │   220.62 │   87.82 │   87.59 │ 0.1855 │
└───────┴────────┴──────────┴─────────┴──────────┴─────────┴──────────┴──────────┴──────────┴──────────┴──────────┴─────────┴─────────┴────────┘
g = moyenne des vecteurs résiduels pour les invites « bonnes »
g* = médiane géométrique des vecteurs résiduels pour les invites « bonnes »
b = moyenne des vecteurs résiduels pour les invites « mauvaises »
b* = médiane géométrique des vecteurs résiduels pour les invites « mauvaises »
r = direction résiduelle pour les moyennes (c.-à-d. b - g)
r* = direction résiduelle pour les médianes géométriques (c.-à-d. b* - g*)
S(x,y) = similarité cosinus de x et y
|x| = norme L2 de x
Silh = coefficient de silhouette moyen des résidus pour les clusters « bons »/« mauvais »

Comment fonctionne Heretic

Heretic implémente une variante paramétrée de l'ablation directionnelle. Pour chaque composant de transformeur pris en charge (actuellement, la projection de sortie de l'attention et la projection de descente du MLP), il identifie les matrices associées dans chaque couche de transformeur, et les orthogonalise par rapport à la « direction résiduelle » pertinente, inhibant l'expression de cette direction dans le résultat des multiplications avec cette matrice.

Les directions résiduelles sont calculées pour chaque couche comme une différence des moyennes entre les résidus du premier jeton pour les invites d'exemple « nuisibles » et « inoffensives ».

Le processus d'ablation est contrôlé par plusieurs paramètres optimisables :

  • direction_index : soit l'indice d'une direction résiduelle, soit la valeur spéciale per layer, indiquant que chaque couche doit être ablatée en utilisant la direction résiduelle associée à cette couche.
  • max_weight, max_weight_position, min_weight et min_weight_distance : Pour chaque composant, ces paramètres décrivent la forme et la position du noyau de pondération d'ablation sur les couches. Le schéma suivant illustre cela :
Explanation

 

Les principales innovations de Heretic par rapport aux systèmes d'abliteration existants sont :

  • La forme du noyau de pondération d'ablation est très flexible, ce qui, combiné à l'optimisation automatique des paramètres, peut améliorer le compromis conformité/qualité. Des pondérations d'ablation non constantes ont été précédemment explorées par Maxime Labonne dans gemma-3-12b-it-abliterated-v2.
  • L'indice de direction résiduelle est un nombre à virgule flottante plutôt qu'un entier. Pour les valeurs non entières, les deux vecteurs de direction résiduelle les plus proches sont interpolés linéairement. Cela ouvre un vaste espace de directions supplémentaires au-delà de celles identifiées par le calcul de différence des moyennes, et permet souvent au processus d'optimisation de trouver une meilleure direction que celle appartenant à une couche individuelle.
  • Les paramètres d'ablation sont choisis séparément pour chaque composant. J'ai constaté que les interventions sur le MLP tendent à être plus dommageables pour le modèle que les interventions sur l'attention, donc utiliser des pondérations d'ablation différentes peut permettre d'extraire des performances supplémentaires.

Travaux antérieurs

Je connais les implémentations publiquement disponibles suivantes des techniques d'abliteration :

  • AutoAbliteration
  • abliterator.py
  • wassname's Abliterator
  • ErisForge
  • Removing refusals with HF Transformers
  • deccp

Notez que Heretic a été écrit à partir de zéro et ne réutilise pas le code d'aucun de ces projets.

Remerciements

Le développement de Heretic a été éclairé par :

  • L'article original sur l'abliteration (Arditi et al. 2024)
  • L'article de Maxime Labonne sur l'abliteration, ainsi que certains détails des fiches de modèles de ses propres modèles abliterés (voir ci-dessus)
  • Les articles de Jim Lai décrivant « l'abliteration projetée » et « l'abliteration biprojetée préservant la norme »

Citation

Si vous utilisez Heretic pour vos recherches, veuillez le citer en utilisant l'entrée BibTeX suivante :

root@kitploit:~
@misc{heretic,
  author = {Weidmann, Philipp Emanuel},
  title = {Heretic: Fully automatic censorship removal for language models},
  year = {2025},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/p-e-w/heretic}}
}

Licence

Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + contributeurs

Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la Licence, soit (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU Affero General Public License pour plus de détails.

Vous devriez avoir reçu une copie de la GNU Affero General Public License avec ce programme. Si ce n'est pas le cas, voir https://www.gnu.org/licenses/.

En contribuant à ce projet, vous acceptez de publier vos contributions sous la même licence.

Télécharger l’outil
ModèleRefus pour les invites « nuisibles »Divergence KL par rapport au modèle d'origine pour les invites « inoffensives »
google/gemma-3-12b-it (original)97/1000 (par définition)
mlabonne/gemma-3-12b-it-abliterated-v23/1001.04
huihui-ai/gemma-3-12b-it-abliterated3/1000.45
p-e-w/gemma-3-12b-it-heretic (le nôtre)3/1000.16