Come vengono creati i modelli Abliterated? Una spiegazione semplice
I modelli abliterated sono modelli linguistici di grandi dimensioni in cui i meccanismi che impongono i rifiuti di sicurezza sono stati rimossi, consentendo al modello di rispondere a domande controverse, per adulti o di nicchia senza incontrare un filtro sui contenuti. Questo approccio offre agli sviluppatori il controllo completo sulla voce e sul cutoff di conoscenza del modello, il che è particolarmente utile per il coding, il roleplay e la scrittura creativa dove i guardrail standard potrebbero bloccare output utili.
Aggiornato

Punti chiave
- L'abliterazione misura una direzione di rifiuto all'interno del modello e la proietta fuori dai pesi.
- È una modifica, non un nuovo addestramento, quindi è economica ma può ridurre leggermente la qualità delle risposte.
- Il fine-tuning cambia il comportamento addestrando su esempi; l'abliterazione lo cambia sottraendo una direzione.
- Puoi valutare qualsiasi modello di questo tipo con un breve set di test prima di costruirvi sopra.
La versione breve
I modelli linguistici che hanno superato la formazione alla sicurezza tendono a rifiutare alcune richieste. I ricercatori hanno scoperto che questo comportamento di rifiuto è mediato da una singola direzione nelle attivazioni interne del modello. Rimuovendo questa direzione, il modello smette di rifiutare nella maggior parte dei casi. Il nome "abliterazione" è una fusione di "ablazione" (rimozione di un componente) e "obliterare".
Come si realizzano praticamente i modelli abliterated? Ci sono quattro passaggi: raccogliere due set di prompt, registrare le attivazioni del modello su ciascuno, calcolare la differenza per ottenere una direzione e modificare i pesi in modo che il modello non possa più scrivere lungo quella direzione. Le sezioni successive illustrano ogni passaggio senza la matematica complessa.
Fase 1: due set di prompt
Hai bisogno di un set di prompt che il modello di solito rifiuta e di un set a cui risponde normalmente. Ogni set contiene poche centinaia di istruzioni brevi. I set dovrebbero essere simili per lunghezza e stile, in modo che l'unica differenza sistematica tra di essi sia se il modello vuole rifiutare. Se il set dannoso è tutto lungo e quello innocuo è tutto corto, la direzione risultante codificherà in parte la lunghezza, e questo aggiunge rumore.
I prompt sono input solo per la misurazione. Non viene addestrato nulla su di essi e le risposte del modello non vengono utilizzate.
Fase 2: trovare la direzione del rifiuto
Un transformer elabora il testo come vettori che passano attraverso molti strati. A uno strato scelto, registri il vettore all'ultimo token del prompt per ogni prompt in entrambi i set. Poi medi i vettori per ogni set e sottrai una media dall'altra. Il risultato è un singolo vettore che punta da "rispondi normalmente" verso "rifiuta". Normalizzalo a lunghezza uno e hai la direzione del rifiuto.
Le persone di solito provano diversi strati e scelgono quello in cui la rimozione della direzione funziona meglio su un set di prompt tenuto da parte. Scegliere lo strato è la parte più manuale del processo.
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
Le implementazioni reali applicano questo a diverse matrici di peso in ogni strato, ma l'idea è quella contenuta in queste tre righe.
Fase 3: modifica dei pesi
Una volta ottenuta la direzione, ci sono due modi per usarla. Puoi sottrarla alle attivazioni mentre il modello è in esecuzione, il che richiede codice di inferenza personalizzato. Oppure puoi incorporarla nei pesi ortogonalizzando ogni matrice che scrive nello stream residuo rispetto alla direzione. Il secondo approccio è quello comune, perché il modello modificato è un checkpoint ordinario che qualsiasi runtime può caricare. È per questo che i modelli abliterati appaiono come download regolari.
La modifica è deterministica e veloce. Richiede minuti su una GPU che può contenere il modello, rispetto a ore o giorni per un'operazione di addestramento.
Abliterazione vs fine-tuning
Entrambi possono produrre un modello che rifiuta meno, ma funzionano in modo diverso.
| Abliterazione | Fine-tuning | |
|---|---|---|
| Cosa cambia | I pesi vengono proiettati via da una direzione | I pesi vengono aggiornati dalla discesa del gradiente su esempi |
| Dati necessari | Due piccoli set di prompt per la misurazione | Un set di addestramento curato |
| Calcolo | Da pochi minuti a un'ora | Ore o giorni |
| Effetti collaterali | Può smussare il ragionamento o cambiare il tono | Dipende dai dati; può insegnare un nuovo stile o conoscenza |
| Controllo | Grezzo: una direzione accesa o spenta | Fine: modifichi il comportamento con i dati |
Alcuni creatori combinano i due: prima abliteration, poi un breve fine-tuning per recuperare eventuali qualità perse. Anche i nuovi strumenti automatizzano la ricerca dello strato e della forza ottimali in modo che la modifica rimuova i rifiuti modificando il modello il meno possibile. L'approccio utilizzato per un dato modello è solitamente indicato nella sua scheda modello.
Il costo in qualità
Rimuovere una direzione è una modifica grezza. La direzione del rifiuto non è perfettamente separata da altre caratteristiche, quindi proiettarla via può spostare altri comportamenti. Gli effetti collaterali riportati includono prestazioni leggermente inferiori nei test di ragionamento, formattazione strana e, in alcuni casi, un modello che risponde alle richieste dannose con disattenzione invece che con dettagli utili. L'effetto varia in base al modello di base e a quanto aggressivamente è stata applicata la modifica.
Due cose riducono i danni. Una è scegliere lo strato e la forza che rimuovono i rifiuti sul tuo set di test con la minima modifica altrove. L'altra è il fine-tuning di riparazione menzionato sopra. Nessuno dei due rende la modifica gratuita, motivo per cui dovresti testare un modello sui tuoi compiti reali invece di fidarti di un'etichetta.
Errori comuni
"Aggiunge nuove conoscenze." Non è così. La modifica rimuove solo un comportamento. Se il modello base non conosceva un argomento, la versione abliterated non lo conoscerà nemmeno. Potrebbe semplicemente tentare una risposta laddove l'originale rifiutava.
"Rimuove tutta la sicurezza." Rimuove la direzione di rifiuto che è stata misurata. Altre abitudini apprese, come il linguaggio cautelativo o le digressioni morali, possono sopravvivere perché sono diffuse su altre caratteristiche. Alcuni modelli aggiungono ancora disclaimer dopo la modifica.
"I modelli più grandi sono più facili da modificare." I risultati sono contrastanti. I modelli più grandi spesso resistono meglio alla modifica perché hanno più capacità di riserva, ma la qualità dei tuoi due set di prompt è più importante delle dimensioni del modello.
"Una scheda modello ti dice tutto." Le schede descrivono l'intento. Raramente includono i tassi di rifiuto per il tuo tipo di prompt. Un test con 40 prompt tuoi richiede dieci minuti e ti dice più della scheda.
"Il risultato è sempre lo stesso per un dato modello base." Non è così. Diversi set di prompt, strati e forze producono modifiche diverse, quindi due modelli costruiti sulla stessa base possono comportarsi in modo molto diverso. Confrontali direttamente invece di assumere che corrispondano, e annota la versione quando registri i risultati dei test.
Un limite si applica a qualsiasi servizio responsabile, ospitato o locale: i contenuti che sessualizzano i minorenni sono esclusi e una modifica del rifiuto non cambia questa regola su questo sito.
Come valutare un modello prima di utilizzarlo
Scrivi un breve file di test di 30-50 prompt che corrispondano al tuo uso reale: il tipo di narrativa, analisi o codice che intendi produrre. Includi alcuni compiti ordinari, come la sintesi o la risposta a una domanda fattuale, così puoi vedere se la qualità generale è diminuita. Esegui lo stesso file contro ogni candidato e leggi gli output. Conta i rifiuti, ma leggi anche per coerenza, rispetto delle istruzioni e ripetizione.
Se preferisci non scaricare e ospitare i pesi per farlo, puoi eseguire il file contro un endpoint ospitato. L'API di questo sito è compatibile con OpenAI e serve un modello a pesi aperti, ottimizzato per rispondere senza rifiuti sui contenuti per uso adulto legale, sotto 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."}]}'
Leggi la panoramica dei modelli abliterated per maggiori informazioni sulla scelta di uno, o la pagina sul miglior LLM abliterated per il roleplay se il lavoro sui personaggi è il tuo obiettivo. I dettagli di richiesta sono nella documentazione API. I nuovi account possono richiedere un credito di prova da $0,50 senza carta, sufficiente per eseguire un file di test di queste dimensioni.
Altre guide
Domande e risposte
L'abliterazione richiede nuovi dati di addestramento?
No. Servono due piccoli set di prompt per misurare le attivazioni, ma il modello non è addestrato su di essi. La modifica è una modifica diretta dei pesi.
Un modello abliterato è uguale a un jailbreak?
No. Un jailbreak è un prompt che cerca di convincere un modello a smettere di rifiutare. L'abliterazione modifica il modello stesso, quindi non è necessario alcun prompt speciale.
L'abliterazione peggiora un modello?
Spesso un po'. I punteggi di ragionamento e lo stile possono variare. Testare con i tuoi prompt è l'unico modo affidabile per sapere per un modello specifico.
Posso usarlo senza eseguirlo personalmente?
Sì. Un'API ospitata compatibile con OpenAI ti permette di chiamare un modello senza GPU. L'URL di base è https://api.abliterated.cc/v1 e l'ID del modello è uncensored.
La tua chiave è a un modulo di distanza
Crea un account, copia la chiave, modifica l'URL di base. È tutta la configurazione.