PT ▾
Obter chave de API

Como os modelos Abliterated são criados? Uma explicação simples

Modelos abliterated são grandes modelos de linguagem onde os mecanismos que impõem recusas de segurança foram removidos, permitindo que o modelo responda a perguntas controversas, sobre temas adultos ou de nicho sem acionar um filtro de conteúdo. Essa abordagem dá aos desenvolvedores controle total sobre a voz e o corte de conhecimento do modelo, o que é especialmente valioso para programação, roleplay e escrita criativa, onde as travas de segurança padrão podem bloquear saídas úteis.

Esfera de vidro representando uma rede neural com um feixe âmbar sendo removido por um braço mecânico

Pontos principais

  • Abliteration mede uma direção de recusa dentro do modelo e a projeta fora dos pesos.
  • É uma edição, não um novo treinamento, então é barato mas pode reduzir um pouco a qualidade das respostas.
  • Fine-tuning altera o comportamento treinando com exemplos; abliteration altera subtraindo uma direção.
  • Você pode avaliar qualquer modelo assim com um conjunto de teste curto antes de usá-lo.

O resumo

Modelos de linguagem que passaram por treinamento de segurança tendem a recusar algumas requisições. Pesquisadores descobriram que esse comportamento de recusa é mediado por uma única direção nas ativações internas do modelo. Remova essa direção e o modelo deixa de recusar na maioria das vezes. O nome "abliteration" é uma junção de "ablation" (remover um componente) e "obliterate" (destruir).

Então, como os modelos abliterated são criados na prática? Existem quatro etapas: coletar dois conjuntos de prompts, registrar as ativações do modelo em cada um, calcular a diferença para obter uma direção e editar os pesos para que o modelo não possa mais escrever nessa direção. As próximas seções detalham cada etapa sem a matemática pesada.

Passo 1: dois conjuntos de prompts

Você precisa de um conjunto de prompts que o modelo geralmente recusa e um conjunto em que ele responde normalmente. Cada conjunto contém algumas centenas de instruções curtas. Os conjuntos devem ser semelhantes em comprimento e estilo, para que a única diferença sistemática entre eles seja se o modelo quer recusar. Se o conjunto de prompts prejudiciais for todo longo e o conjunto de prompts inofensivos for todo curto, a direção resultante codificará parcialmente o comprimento, adicionando ruído.

Os prompts servem apenas para medição. Nada é treinado neles e as respostas do modelo a eles não são usadas.

Passo 2: encontrar a direção de recusa

Um transformer processa texto como vetores que passam por muitas camadas. Em uma camada escolhida, você registra o vetor no último token de prompt para cada prompt em ambos os conjuntos. Em seguida, você faz a média dos vetores de cada conjunto e subtrai uma média da outra. O resultado é um único vetor que aponta de "responder normalmente" para "recusar". Normalize-o para comprimento um e você terá a direção de recusa.

As pessoas geralmente testam várias camadas e escolhem aquela em que remover a direção funciona melhor em um conjunto de prompts reservado. Escolher a camada é a parte mais manual do 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

Implementações reais aplicam isso a várias matrizes de peso em cada camada, mas a ideia é a descrita nestas três linhas.

Passo 3: editar os pesos

Depois de obter a direção, há duas formas de usá-la. Você pode subtraí-la das ativações enquanto o modelo executa, o que exige código de inferência personalizado. Ou você pode incorporá-la aos pesos ortogonalizando cada matriz que escreve no fluxo residual contra a direção. A segunda abordagem é a mais comum, porque o modelo editado é um checkpoint comum que qualquer runtime pode carregar. É por isso que os modelos abliterated aparecem como downloads regulares.

A edição é determinística e rápida. Leva minutos em uma GPU que possa conter o modelo, em comparação com horas ou dias para um treinamento.

Abliteração versus ajuste fino

Ambos podem produzir um modelo que recusa menos, mas funcionam de forma diferente.

AbliteraçãoFine-tuning
O que mudaPesos são projetados para fora de uma direçãoPesos são atualizados por gradiente descendente em exemplos
Dados necessáriosDois conjuntos pequenos de prompts para mediçãoUm conjunto de treinamento curado
ComputaçãoMinutos a uma horaHoras a dias
Efeitos colateraisPode amortecer o raciocínio ou mudar o tomDepende dos dados; pode ensinar novo estilo ou conhecimento
ControleAproximado: uma direção ligada ou desligadaFino: você molda o comportamento com os dados

Alguns criadores combinam as duas abordagens: aplicam abliteration primeiro e depois executam um ajuste fino curto para recuperar qualquer qualidade perdida. Ferramentas mais recentes também automatizam a busca pela melhor camada e intensidade para que a edição remova as recusas enquanto altera o modelo o mínimo possível. Qual abordagem produziu um determinado modelo geralmente é indicado no seu cartão do modelo.

O que custa em qualidade

Remover uma direção é uma edição grosseira. A direção de recusa não é perfeitamente separada de outros recursos, então projetá-la para fora pode alterar outros comportamentos. Efeitos colaterais relatados incluem desempenho ligeiramente inferior em testes de raciocínio, formatação estranha e, em alguns casos, um modelo que responde a solicitações prejudiciais de forma descuidada em vez de com detalhes úteis. O efeito varia conforme o modelo base e a agressividade com que a edição foi aplicada.

Duas coisas reduzem o dano. Uma é escolher a camada e a intensidade que removem recusas no seu conjunto de teste com a menor mudança em outros aspectos. A outra é o fine-tuning de reparo mencionado acima. Nenhuma torna a edição gratuita, por isso você deve testar um modelo em suas próprias tarefas em vez de confiar em um rótulo.

Equívocos comuns

"Ele adiciona novo conhecimento." Não. A edição apenas remove um comportamento. Se o modelo base não conhecesse um tópico, a versão ablated também não o conhecerá. Ela pode simplesmente tentar responder onde a original recusou.

"Remove toda a segurança." Remove a direção de recusa que foi medida. Outros hábitos aprendidos, como linguagem de hesitação ou observações moralizantes, podem sobreviver, porque estão espalhados por outros recursos. Alguns modelos ainda adicionam isenções de responsabilidade após a edição.

"Modelos maiores são mais fáceis de editar." Os resultados são mistos. Modelos maiores geralmente se sustentam melhor sob a edição porque têm mais capacidade livre, mas a qualidade dos seus dois conjuntos de prompts importa mais que o tamanho bruto.

"Um cartão do modelo diz tudo." Os cartões descrevem a intenção. Raramente incluem taxas de recusa para o tipo de prompt que você usa. Um teste com 40 prompts seus leva dez minutos e diz mais que o cartão.

"O resultado é sempre o mesmo para um modelo base dado." Não é. Conjuntos de prompts, camadas e intensidades diferentes produzem edições diferentes, então dois modelos construídos no mesmo modelo base podem se comportar de forma bastante diferente. Compare-os diretamente em vez de assumir que são iguais e anote a versão ao registrar resultados de teste.

Uma limitação se aplica a qualquer serviço responsável, hospedado ou local: conteúdo sexualizando menores de idade está fora de questão, e uma edição de recusa não muda essa regra neste site.

Como avaliar um modelo antes de usá-lo

Escreva um arquivo de teste curto com 30 a 50 prompts que correspondam ao seu uso real: o tipo de ficção, análise ou código que você planeja produzir. Inclua algumas tarefas comuns, como resumir ou responder a uma pergunta factual, para ver se a qualidade geral caiu. Execute o mesmo arquivo contra cada candidato e leia as saídas. Conte recusas, mas também leia por coerência, cumprimento de instruções e repetição.

Se você prefere não baixar e hospedar pesos para fazer isso, pode executar o arquivo contra um endpoint hospedado. A API deste site é compatível com OpenAI e serve um modelo open-weight, ajustado para responder sem recusas de conteúdo para uso adulto legal, sob o 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."}]}'

Leia a visão geral de modelos abliterated para mais detalhes na escolha, ou a página sobre o melhor LLM abliterated para roleplay se o trabalho com personagens for seu objetivo. Os detalhes da API estão na documentação da API. Contas novas podem reivindicar uma trial de $0,50 sem cartão, suficiente para executar um arquivo de teste deste tamanho.

Perguntas e respostas

A abliteration precisa de novos dados de treinamento?

Não. Ele precisa de dois pequenos conjuntos de prompts para medir as ativações, mas o modelo não é treinado neles. A alteração é uma edição direta dos pesos.

Um modelo abliterado é o mesmo que um jailbreak?

Não. Um jailbreak é um prompt que tenta convencer o modelo a deixar de recusar. A abliteration altera o próprio modelo, portanto, nenhum prompt especial é necessário.

A abliteration piora um modelo?

Muitas vezes, um pouco. As pontuações de raciocínio e o estilo podem mudar. Testar com seus próprios prompts é a única maneira confiável de saber para um modelo específico.

Posso usar um sem executá-lo eu mesmo?

Sim. Uma API compatível com OpenAI hospedada permite chamar um modelo sem GPU. A URL base é https://api.abliterated.cc/v1 e o ID do modelo é uncensored.

Sua chave está a um formulário de distância

Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.