ES ▾
Obtener clave de API

¿Cómo se crean los modelos Abliterated? Una explicación sencilla

Los modelos abliterados son modelos de lenguaje grandes en los que se han eliminado los mecanismos que imponen los rechazos de seguridad, lo que permite al modelo responder preguntas controversiales, para adultos o de nicho sin activar un filtro de contenido. Este enfoque da a los desarrolladores control total sobre la voz y el corte de conocimiento del modelo, lo cual es especialmente valioso para programación, roleplay y escritura creativa donde las barreras estándar podrían bloquear salidas útiles.

Esfera de vidrio que representa una red neuronal con un rayo ámbar siendo eliminado por un brazo mecánico

Puntos clave

  • La abliteración mide una dirección de rechazo dentro del modelo y la proyecta fuera de los pesos.
  • Es una edición, no una ejecución de reentrenamiento, por lo que es barata pero puede reducir un poco la calidad de las respuestas.
  • El ajuste fino cambia el comportamiento entrenando con ejemplos; la abliteración lo cambia restando una dirección.
  • Puedes juzgar cualquier modelo de este tipo con un conjunto de prueba corto antes de construir sobre él.

La versión corta

Los modelos de lenguaje que pasaron por entrenamiento de seguridad tienden a rechazar algunas peticiones. Los investigadores descubrieron que este comportamiento de rechazo está mediado por una única dirección en las activaciones internas del modelo. Si quitas esa dirección, el modelo deja de rechazar la mayor parte del tiempo. El nombre "abliteración" es una mezcla de "ablación" (eliminar un componente) y "obliterar".

Entonces, ¿cómo se crean los modelos abliterados en la práctica? Hay cuatro pasos: recopilar dos conjuntos de prompts, registrar las activaciones del modelo en cada uno, calcular la diferencia para obtener una dirección y editar los pesos para que el modelo ya no pueda escribir a lo largo de esa dirección. Las siguientes secciones explican cada paso sin las matemáticas complejas.

Paso 1: dos conjuntos de prompts

Necesitas un conjunto de prompts que el modelo suele rechazar y un conjunto al que responde normalmente. Cada conjunto contiene unos pocos cientos de instrucciones cortas. Los conjuntos deben ser similares en longitud y estilo, para que la única diferencia sistemática entre ellos sea si el modelo quiere negarse. Si el conjunto de dañinos es todo largo y el inofensivo es todo corto, la dirección resultante codificará parcialmente la longitud, y eso añade ruido.

Los prompts son entradas solo para medición. No se entrena nada con ellos y las respuestas del modelo a ellos no se utilizan.

Paso 2: encontrar la dirección de rechazo

Un transformador procesa texto como vectores que pasan por muchas capas. En una capa elegida, registras el vector en el último token del prompt para cada prompt en ambos conjuntos. Luego promedias los vectores para cada conjunto y restas un promedio del otro. El resultado es un único vector que apunta desde "responder normalmente" hacia "negarse". Normalízalo a longitud uno y tendrás la dirección de rechazo.

La gente suele probar varias capas y elige la donde eliminar la dirección funciona mejor en un conjunto de prompts retenido. Elegir la capa es la parte más manual del proceso.

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

Las implementaciones reales aplican esto a varias matrices de peso en cada capa, pero la idea es la de estas tres líneas.

Paso 3: editar los pesos

Una vez que tienes la dirección, hay dos formas de usarla. Puedes restarla de las activaciones mientras el modelo se ejecuta, lo que necesita código de inferencia personalizado. O puedes incorporarla en los pesos ortogonalizando cada matriz que escribe en el flujo residual contra la dirección. El segundo enfoque es el común, porque el modelo editado es un punto de control ordinario que cualquier entorno de ejecución puede cargar. Por eso los modelos abliterados aparecen como descargas regulares.

La edición es determinista y rápida. Toma minutos en una GPU que pueda contener el modelo, en comparación con horas o días para una ejecución de entrenamiento.

Abliteración vs ajuste fino

Ambos pueden producir un modelo que se niegue menos, pero funcionan de manera diferente.

AbliteraciónFine-tuning
Qué cambiaLos pesos se proyectan lejos de una direcciónLos pesos se actualizan por descenso de gradiente en ejemplos
Datos necesariosDos conjuntos pequeños de prompts para mediciónUn conjunto de entrenamiento curado
CómputoMinutos a una horaHoras a días
Efectos secundariosPuede embotar el razonamiento o cambiar el tonoDepende de los datos; puede enseñar nuevo estilo o conocimiento
ControlGruesa: una dirección encendida o apagadaFino: formas el comportamiento con los datos

Algunos creadores combinan los dos: abliteran primero, luego ejecutan un ajuste fino corto para recuperar cualquier calidad perdida. Herramientas más nuevas también automatizan la búsqueda de la capa y la fuerza óptimas para que la edición elimine las negativas mientras cambia el modelo lo menos posible. Qué enfoque produjo un modelo dado generalmente se indica en su tarjeta de modelo.

Qué cuesta en calidad

Eliminar una dirección es una edición gruesa. La dirección de rechazo no está perfectamente separada de otras características, por lo que proyectarla puede desplazar otro comportamiento. Los efectos secundarios reportados incluyen rendimiento ligeramente más débil en pruebas de razonamiento, formato extraño y, en algunos casos, un modelo que responde a solicitudes dañinas descuidadamente en lugar de con detalle útil. El efecto varía según el modelo base y qué tan agresivamente se aplicó la edición.

Dos cosas reducen el daño. Una es elegir la capa y la fuerza que eliminen las negativas en tu conjunto de prueba con el menor cambio en otro lugar. La otra es el ajuste fino de reparación mencionado anteriormente. Ninguno hace que la edición sea gratuita, por lo que deberías probar un modelo en tus propias tareas en lugar de confiar en una etiqueta.

Malentendidos comunes

"Añade nuevo conocimiento." No lo hace. La edición solo elimina un comportamiento. Si el modelo base no conocía un tema, la versión abliterada tampoco lo conocerá. Simplemente puede intentar una respuesta donde la original se negó.

«Elimina toda la seguridad.» Elimina la dirección de rechazo que fue medida. Otros hábitos aprendidos, como el lenguaje cauteloso o las observaciones moralizantes, pueden sobrevivir porque están distribuidos en otras características. Algunos modelos aún añaden advertencias después de la edición.

"Los modelos más grandes son más fáciles de editar." Los resultados son mixtos. Los modelos más grandes suelen resistir mejor la edición porque tienen más capacidad disponible, pero la calidad de tus dos conjuntos de prompts importa más que el tamaño real.

"Una tarjeta de modelo te dice todo." Las tarjetas describen la intención. Rara vez incluyen tasas de rechazo en tu tipo de prompt. Una prueba de 40 prompts propios toma diez minutos y te dice más que la tarjeta.

"El resultado es siempre el mismo para un modelo base dado." No lo es. Diferentes conjuntos de prompts, capas y niveles de fuerza producen ediciones distintas, por lo que dos modelos construidos sobre la misma base pueden comportarse de forma diferente. Compáralos directamente en lugar de asumir que coinciden, y anota la versión cuando registres los resultados de las pruebas.

Un límite se aplica a cualquier servicio responsable, alojado o local: el contenido que sexualiza a menores de edad no es una opción, y una edición de rechazo no cambia esa regla en este sitio.

Cómo juzgar un modelo antes de construir sobre él

Escribe un archivo de prueba corto de 30 a 50 prompts que coincidan con tu uso real: el tipo de ficción, análisis o código que planeas producir. Incluye algunas tareas comunes, como resumir o responder una pregunta de hecho, para que puedas ver si la calidad general disminuyó. Ejecuta el mismo archivo contra cada candidato y lee las salidas. Cuenta los rechazos, pero también lee para ver la coherencia, el seguimiento de instrucciones y la repetición.

Si prefieres no descargar y alojar pesos para hacer esto, puedes ejecutar el archivo contra un endpoint alojado. La API de este sitio es compatible con OpenAI y sirve un modelo de pesos abiertos, ajustado para responder sin rechazos de contenido para uso adulto lícito, bajo el 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."}]}'

Lee el resumen de modelos abliterated para más información sobre cómo elegir uno, o la página sobre el mejor LLM abliterated para roleplay si el trabajo con personajes es tu objetivo. Los detalles de la petición están en la documentación de API. Las cuentas nuevas pueden reclamar una prueba de $0,50 sin tarjeta, suficiente para ejecutar un archivo de prueba de este tamaño.

Preguntas y respuestas

¿La abliteración necesita nuevos datos de entrenamiento?

No. Necesita dos conjuntos pequeños de prompts para medir las activaciones, pero el modelo no se entrena con ellos. El cambio es una modificación directa de los pesos.

¿Un modelo abliterado es lo mismo que un jailbreak?

No. Un jailbreak es un prompt que intenta persuadir a un modelo para que deje de negarse. La abliteración cambia el propio modelo, por lo que no se requiere ningún prompt especial.

¿La abliteración empeora un modelo?

A menudo, un poco. Las puntuaciones de razonamiento y el estilo pueden variar. Probar con tus propios prompts es la única forma fiable de saberlo para un modelo específico.

¿Puedo usar uno sin ejecutarlo yo mismo?

Sí. Una API alojada compatible con OpenAI te permite llamar a un modelo sin GPU. La URL base es https://api.abliterated.cc/v1 y el ID del modelo es uncensored.

Tu clave está a un formulario de distancia

Crea una cuenta, copia la clave y cambia la URL base. Eso es todo lo que necesitas configurar.