FR ▾
Obtenir une clé API

Comment sont créés les modèles Abliterated ? Explication simple

Les modèles Abliterated sont des grands modèles de langage dont les mécanismes imposant les refus de sécurité ont été supprimés, permettant au modèle de répondre à des questions controversées, à des contenus pour adultes ou de niche sans déclencher de filtre de contenu. Cette approche donne aux développeurs un contrôle total sur la voix du modèle et sa date de coupure des connaissances, ce qui est particulièrement précieux pour le codage, le jeu de rôle et l'écriture créative où les garde-fous standard pourraient bloquer des sorties utiles.

Sphère de verre représentant un réseau neuronal avec un faisceau ambré retiré par un bras mécanique

Points clés

  • L'abliteration mesure une direction de refus à l'intérieur du modèle et la projette hors des poids.
  • C'est une modification, pas une exécution d'entraînement, donc c'est peu coûteux mais cela peut réduire légèrement la qualité des réponses.
  • L'ajustement fin modifie le comportement en entraînant sur des exemples ; l'abliteration le modifie en soustrayant une direction.
  • Vous pouvez évaluer n'importe quel modèle de ce type avec un ensemble de test court avant de construire dessus.

Le résumé

Les modèles de langage ayant subi un entraînement à la sécurité ont tendance à refuser certaines requêtes. Les chercheurs ont découvert que ce comportement de refus est médié par une seule direction dans les activations internes du modèle. Supprimez cette direction et le modèle cessera de refuser la plupart du temps. Le nom "abliteration" est une combinaison de "ablation" (suppression d'un composant) et "oblitérer".

Comment fabrique-t-on concrètement des modèles abliterés ? Il y a quatre étapes : collecter deux ensembles de prompts, enregistrer les activations du modèle sur chacun, calculer la différence pour obtenir une direction, et modifier les poids pour que le modèle ne puisse plus générer selon cette direction. Les sections suivantes détaillent chaque étape sans les mathématiques complexes.

Étape 1 : deux ensembles de prompts

Vous avez besoin d’un ensemble de prompts que le modèle refuse habituellement et d’un ensemble auquel il répond normalement. Chaque ensemble contient quelques centaines d’instructions courtes. Les ensembles doivent être similaires en longueur et en style, de sorte que la seule différence systématique entre eux soit le fait que le modèle veuille ou non refuser. Si l’ensemble nocif est composé uniquement de textes longs et l’ensemble inoffensif uniquement de textes courts, la direction résultante encodera en partie la longueur, ce qui ajoute du bruit.

Les prompts sont des entrées pour la mesure uniquement. Rien n'est entraîné sur ces données, et les réponses du modèle à ceux-ci ne sont pas utilisées.

Étape 2 : trouver la direction du refus

Un transformateur traite le texte sous forme de vecteurs qui passent par de nombreuses couches. À une couche choisie, vous enregistrez le vecteur au dernier token du prompt pour chaque prompt des deux ensembles. Ensuite, vous faites la moyenne des vecteurs pour chaque ensemble et soustrayez une moyenne à l'autre. Le résultat est un vecteur unique qui pointe de "répondre normalement" vers "refuser". Normalisez-le à une longueur de un et vous avez la direction du refus.

On essaie généralement plusieurs couches et on choisit celle où la suppression de la direction fonctionne le mieux sur un ensemble de prompts réservé à la validation. Le choix de la couche est la partie la plus manuelle du processus.

import numpy as np

# acts_bad, acts_good: arrays of shape (n_prompts, hidden_size)
direction = acts_bad.mean(axis=0) - acts_good.mean(axis=0)
direction = direction / np.linalg.norm(direction)

# remove the direction from a weight matrix W that writes into the residual stream
W_edited = W - np.outer(direction, direction) @ W

Les implémentations réelles appliquent cela à plusieurs matrices de poids dans chaque couche, mais l'idée est celle de ces trois lignes.

Étape 3 : modifier les poids

Une fois que vous avez la direction, il y a deux façons de l'utiliser. Vous pouvez la soustraire des activations pendant l'exécution du modèle, ce qui nécessite du code d'inférence personnalisé. Ou vous pouvez l'intégrer dans les poids en orthogonalisant chaque matrice qui écrit dans le flux résiduel contre la direction. La deuxième approche est la plus courante, car le modèle modifié est un checkpoint ordinaire que n'importe quel moteur d'exécution peut charger. C'est pourquoi les modèles abliterés apparaissent comme des téléchargements réguliers.

La modification est déterministe et rapide. Elle prend des minutes sur un GPU capable de contenir le modèle, par rapport à des heures ou des jours pour une exécution d'entraînement.

Abliteration vs ajustement fin

Les deux peuvent produire un modèle qui refuse moins, mais ils fonctionnent différemment.

AbliterationFine-tuning
Ce qui changeLes poids sont projetés loin d'une directionLes poids sont mis à jour par la descente de gradient sur des exemples
Données nécessairesDeux petits ensembles de prompts pour la mesureUn ensemble d'entraînement curaté
CalculQuelques minutes à une heureHeures à jours
Effets secondairesPeut émousser le raisonnement ou changer le tonDépend des données ; peut enseigner un nouveau style ou des connaissances
ContrôleGrossier : une direction activée ou désactivéePrécis : vous façonnez le comportement avec les données

Certains créateurs combinent les deux : abliter d'abord, puis lancer un ajustement fin court pour récupérer toute qualité perdue. Des outils plus récents automatisent également la recherche de la meilleure couche et de la force pour que la modification supprime les refus tout en modifiant le modèle le moins possible. Quelle approche a produit un modèle donné est généralement indiquée sur sa fiche modèle.

Ce que cela coûte en qualité

Supprimer une direction est une modification brutale. La direction du refus n’est pas parfaitement séparée des autres caractéristiques, donc la projeter hors du modèle peut modifier d’autres comportements. Les effets secondaires signalés incluent une performance légèrement inférieure aux tests de raisonnement, un formatage étrange et, dans certains cas, un modèle qui répond aux demandes nocives avec négligence au lieu de donner des détails utiles. L’effet varie selon le modèle de base et l’agressivité de la modification appliquée.

Deux éléments réduisent les dégâts. L’un est le choix de la couche et de l’intensité qui suppriment les refus sur votre ensemble de test avec le changement minimal ailleurs. L’autre est le réglage fin correctif mentionné plus haut. Aucun des deux ne rend la modification gratuite, c’est pourquoi vous devez tester un modèle sur vos propres tâches au lieu de vous fier à une étiquette.

Idées reçues courantes

« Il ajoute de nouvelles connaissances. » Ce n’est pas le cas. La modification supprime uniquement un comportement. Si le modèle de base ne connaissait pas un sujet, la version abliterée ne le connaîtra pas non plus. Il peut simplement tenter de répondre là où le modèle de base a refusé.

« Elle supprime toute la sécurité. » Elle supprime la direction de refus qui a été mesurée. D’autres habitudes apprises, comme le langage prudent ou les apartés moralisateurs, peuvent survivre, car elles sont réparties sur d’autres caractéristiques. Certains modèles ajoutent toujours des avertissements après la modification.

« Les modèles plus grands sont plus faciles à modifier. » Les résultats sont mitigés. Les modèles plus grands résistent souvent mieux à la modification car ils disposent de davantage de capacité disponible, mais la qualité de vos deux ensembles de prompts est plus importante que la taille brute.

« Une fiche modèle vous dit tout. » Les fiches décrivent l'intention. Elles incluent rarement les taux de refus pour votre type de prompt. Un test avec 40 prompts à vous prend dix minutes et vous en apprend plus que la fiche.

"Le résultat est toujours le même pour un modèle de base donné." Ce n'est pas le cas. Différents ensembles de prompts, couches et forces produisent des modifications différentes, donc deux modèles construits sur la même base peuvent se comporter très différemment. Comparez-les directement au lieu de supposer qu'ils correspondent, et notez la version lorsque vous enregistrez les résultats des tests.

Une limite s'applique à tout service responsable, hébergé ou local : le contenu sexualisant les mineurs est hors de question, et une modification de refus ne change pas cette règle sur ce site.

Comment évaluer un modèle avant de construire dessus

Rédigez un fichier de test court de 30 à 50 prompts correspondant à votre utilisation réelle : le type de fiction, d’analyse ou de code que vous comptez produire. Incluez quelques tâches ordinaires, comme résumer ou répondre à une question factuelle, afin de voir si la qualité générale a baissé. Exécutez le même fichier sur chaque candidat et lisez les sorties. Comptez les refus, mais lisez aussi pour la cohérence, le respect des instructions et les répétitions.

Si vous préférez ne pas télécharger et héberger les poids pour faire cela, vous pouvez exécuter le fichier contre un endpoint hébergé. L'API de ce site est compatible OpenAI et sert un modèle à poids ouverts, optimisé pour répondre sans filtres de contenu pour une utilisation adulte légale, avec l'ID uncensored :

curl https://api.abliterated.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Summarize the plot of Hamlet in three sentences."}]}'

Lisez l’aperçu des modèles abliterés pour en savoir plus sur le choix d’un modèle, ou la page sur le meilleur LLM abliteré pour le jeu de rôle si le travail de personnage est votre objectif. Les détails de la requête sont dans la documentation de l’API. Les nouveaux comptes peuvent réclamer un essai de $0,50 sans carte, suffisant pour exécuter un fichier de test de cette taille.

Questions et réponses

L'abliteration nécessite-t-elle de nouvelles données d'entraînement ?

Non. Il faut deux petits ensembles de prompts pour mesurer les activations, mais le modèle n'est pas entraîné dessus. La modification est une modification directe des poids.

Un modèle abliteré est-il identique à un jailbreak ?

Non. Un contournement est une invite qui tente de convaincre un modèle de cesser de refuser. L'abliteration modifie le modèle lui-même, donc aucune invite spéciale n'est requise.

L'abliteration rend-elle un modèle moins performant ?

Souvent un peu. Les scores de raisonnement et le style peuvent varier. Tester sur vos propres prompts est le seul moyen fiable de le savoir pour un modèle spécifique.

Puis-je en utiliser un sans le faire tourner moi-même ?

Oui. Une API compatible OpenAI hébergée vous permet d'appeler un modèle sans GPU. L'URL de base est https://api.abliterated.cc/v1 et l'ID du modèle est uncensored.

Votre clé est à un formulaire d'obtention

Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.