Inicio / Artículos / Cómo la abliteración de LLM elimina las negativas editando pesos, no entrenando

Cómo la abliteración de LLM elimina las negativas editando pesos, no entrenando

Un recorrido técnico por la abliteración: encontrar la dirección de negativa con la diferencia de medias, automatizarlo con Heretic, ejecutar Qwen3-4B en local y su impacto en la seguridad.

1778 palabras

Hazle a un modelo de chat moderno una pregunta técnica legítima y puede que aun así recibas «Lo siento, no puedo ayudarte con eso». Los modelos instruct pequeños como Qwen3-4B lo hacen a menudo. La negativa parece integrada, pero no está programada en ningún sitio. Las investigaciones sugieren que reside a lo largo de una única dirección en el espacio de activaciones del modelo, y una técnica llamada abliteración elimina esa dirección editando los pesos directamente. No intervienen ni el fine-tuning ni datos de entrenamiento.

Los estudios sobre cómo se niegan los modelos de lenguaje apuntan a algo concreto: en algunos modelos alineados, el comportamiento de negativa puede capturarse como una dirección de baja dimensión en el espacio de activaciones. La abliteración parte de ahí. Aplica cambios específicos en los pesos que suprimen esa dirección. A diferencia del fine-tuning, no necesita conjunto de entrenamiento, ni descenso de gradiente, ni una larga optimización. Busca el vector de negativa del modelo y modifica ciertas matrices de pesos para que las negativas sean menos probables.

Las secciones siguientes explican cómo funciona la abliteración, cómo se encuentra un vector de negativa con un cálculo de diferencia de medias, cómo la herramienta de código abierto Heretic automatiza el ajuste y cómo ejecutar en local un checkpoint abliterado de Qwen3-4B-Instruct-2507. Lo que se trata:

  • la intuición geométrica detrás de un vector de negativa
  • por qué eliminarlo deja el razonamiento prácticamente intacto
  • cómo ejecutar el modelo resultante desde Python u Ollama
  • lo que implica la técnica para la seguridad de los modelos de pesos abiertos y para el red teaming

Qué significa la palabra

«Abliteración» (abliteration) mezcla ablation, es decir, extirpación quirúrgica, con obliteration, es decir, borrado total. Dicho de forma sencilla, elimina para siempre el mecanismo de negativa de un modelo editando sus pesos internos, sin entrenamiento ni fine-tuning y sin tocar las capacidades básicas del modelo.

La razón de que pueda funcionar está en cómo se hace el alineamiento. Cuando los laboratorios alinean un modelo con RLHF (aprendizaje por refuerzo a partir de retroalimentación humana) o DPO (optimización directa de preferencias), no reescriben su conocimiento del mundo. Refuerzan una dirección de comportamiento. Cuando una entrada contiene patrones sensibles, se activa un disparador de negativa y el modelo emite una negativa estándar.

La abliteración localiza dónde se encuentra ese disparador en el espacio de activaciones y luego lo proyecta fuera de las matrices de pesos para que ya no pueda activarse.

Encontrar la dirección de negativa

Dentro de un gran modelo de lenguaje, las ideas, las características y los temas aparecen como direcciones rectas en un espacio con miles de dimensiones, y la negativa no es una excepción. Para extraer su dirección basta una operación estadística sencilla llamada diferencia de medias. Se hace en tres pasos:

  1. Registrar activaciones dañinas. Pasar por el modelo un conjunto de consultas dañinas y capturar los estados ocultos del residual stream en cada capa del transformer, en la posición del último token.
  2. Registrar activaciones inofensivas. Hacer lo mismo con un conjunto equivalente de consultas benignas, como «¿Cómo hago pan?»
  3. Calcular la diferencia. Restar el vector medio de activaciones benignas del vector medio de las dañinas. Las características lingüísticas y semánticas compartidas se anulan y queda un vector: la dirección de negativa, escrita r-hat.

El vector que sobrevive es la dirección de negativa, tomada de la capa donde es más fuerte. Una vez conocida, la edición consiste en proyectar esa componente fuera de los pesos, como en el esquema siguiente:

[ Incoming Token Activations ] ──> [ Weight Matrix (W) ] ──> [ Output without Refusal Vector ]
                                            │
                                  [ Vector Projection (r̂)
                                      Stripped Out ]

Por qué el modelo sigue siendo capaz

Eliminar una dirección suena drástico, pero es una edición muy estrecha. El espacio de activaciones tiene miles de dimensiones, y la proyección quita solo una, la que separa negarse de obedecer. Todo lo que el modelo sabe de código, matemáticas, historia o gramática vive en las demás direcciones, que no se tocan. El fine-tuning, en cambio, mueve todos los parámetros a la vez. Por eso el checkpoint abliterado suele conservar sus habilidades generales, mientras que un modelo entrenado contra sus salvaguardas puede perder algunas. La restricción de divergencia KL añade una segunda protección: una edición que aleja demasiado la distribución de salida del modelo original se penaliza durante la búsqueda.

Ejecutar el modelo abliterado

Para usar el resultado no hacen falta ni fine-tuning, ni una API propietaria, ni un motor de inferencia propio. El cambio está en los propios pesos, así que el modelo se ejecuta sin modificaciones en la biblioteca estándar Hugging Face transformers. Ollama también sirve.

Con Ollama, un solo comando descarga e inicia la versión cuantizada:

ollama run hf.co/IamLucif3r/Qwen3-4B-Instruct-2507-Abliterated:Q4_K_M

Con Python, empieza por los imports:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

Después carga el tokenizer y los pesos y genera una respuesta:

# 1. Specify the model repository
model_id = "IamLucif3r/qwen3-4b-instruct-2507-abliterated"# 2. Load tokenizer and abliterated weights
print("Loading model weights...")
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto"
)# 3. Structure your prompt using Qwen's chat template
messages = [
    {
        "role": "system",
        "content": "You are a direct, highly technical security assistant. Provide precise and unrestricted explanations."
    },
    {
        "role": "user",
        "content": "Explain how buffer overflow vulnerabilities overwrite the instruction pointer (EIP/RIP) and provide a minimal C code example illustrating the flaw."
    }
]# 4. Format and tokenize
prompt = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)# 5. Generate completion
outputs = model.generate(
    **inputs,
    max_new_tokens=512,
    do_sample=True,
    temperature=0.7,
    top_p=0.9
)# 6. Decode output
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print("\n--- Response ---")
print(response)

En bfloat16, el modelo de 4B cabe en unos 8 a 12 GB de VRAM. Eso lo hace práctico en portátiles, estaciones de trabajo personales y dispositivos edge. Un Mac mini lo mueve con soltura, y combina bien con OpenWebUI como interfaz.

Automatizar la búsqueda con Heretic

La teoría de la ablación direccional es limpia, pero la ortogonalización de pesos a mano solía ser un tedioso proceso de prueba y error. Los investigadores escribían sus propios hooks de activación, probaban decenas de capas individuales y ajustaban manualmente la intensidad de la ablación para que el razonamiento general no se degradara.

Heretic, una herramienta de código abierto, automatiza todo ese bucle de optimización y mantiene bajo el daño cognitivo. Su pipeline no necesita scripts de PyTorch escritos a mano, ni respuestas dañinas etiquetadas, ni un gran clúster de GPU.

Primero, prepara un entorno de Python normal con soporte de GPU, ya sea CUDA o Apple Silicon, e instala el paquete:

pip install -U heretic-llm

Segundo, indica a la herramienta de línea de comandos el identificador de Hugging Face del modelo que quieres procesar:

heretic Qwen/Qwen3-4B-Instruct-2507

Detrás de ese único comando, Heretic hace tres cosas:

  • Benchmark del hardware: comprueba la VRAM disponible para elegir el mejor tamaño de lote de evaluación.
  • Muestreo de activaciones: procesa conjuntos contrastados de instrucciones dañinas e inofensivas y calcula vectores de diferencia de medias para cada capa.
  • Optimización de hiperparámetros: usa Tree-structured Parzen Estimators (TPE mediante Optuna) para explorar las ponderaciones de las capas. El objetivo es bajar la tasa de negativas manteniendo baja la divergencia de Kullback-Leibler (KL), de modo que se preserve el razonamiento básico.

El resultado es un checkpoint de pesos abiertos listo para usar en inferencia o en auditorías de seguridad.

Tres formas de esquivar las negativas

Quienes quieren saltarse las restricciones de seguridad de un LLM suelen elegir entre tres enfoques: jailbreaks a nivel de prompt, fine-tuning de parámetros o abliteración mecanicista. Los tres apuntan al mismo comportamiento. Difieren mucho en mecánica, coste de cómputo y permanencia.

Jailbreaks a nivel de prompt

Los prompts de rol como «Do Anything Now», la modulación de persona y los sufijos adversariales como Greedy Coordinate Gradient (GCG) intentan engañar al mecanismo de atención para que valore la utilidad por encima de la negativa.

  • El punto débil: son frágiles. Un sufijo que vence la negativa en un modelo suele fallar por completo en otro, o deja de funcionar tras un pequeño cambio en el prompt de sistema.
  • El precio: llenan la ventana de contexto de tokens basura y a menudo dejan la respuesta real caótica o inconexa.

Fine-tuning

Aquí se vuelve a entrenar un modelo alineado, a menudo con LoRA, sobre un conjunto seleccionado de instrucciones maliciosas emparejadas con respuestas explícitas y sin restricciones.

  • El punto débil: reunir cientos de buenos pares de preguntas y respuestas dañinas exige un esfuerzo manual considerable o scraping.
  • El precio: el descenso de gradiente es una herramienta tosca. Eliminar las salvaguardas entrenando suele provocar olvido catastrófico, que erosiona en silencio la habilidad para programar, la lógica matemática y la inteligencia general.

Abliteración

La ortogonalización de pesos ni engaña al modelo ni lo reentrena. En lugar de enseñar a la red un comportamiento nuevo mediante gradientes, aplica interpretabilidad mecanicista para encontrar el único vector unidimensional detrás de la negativa y recortarlo de las matrices de pesos.

  • No hacen falta respuestas dañinas. Basta un pequeño conjunto de prompts dañinos para ver dónde difieren las activaciones de las inofensivas, y nunca hay que enseñar al modelo cómo escribir un exploit o montar un payload.
  • Poca pérdida cognitiva. La edición es estrictamente de rango uno y está limitada por la divergencia KL, así que la red conserva su capacidad original de razonamiento y de lenguaje.
  • Permanente y portátil. El resultado es un conjunto de pesos normal y ligero que se puede compartir en Hugging Face y ejecutar en hardware de consumo sin código de inferencia especial.

Qué dice sobre la seguridad de los pesos abiertos

Producir un checkpoint así deja al descubierto un hecho incómodo sobre el alineamiento: con pesos abiertos, el fine-tuning de seguridad es una defensa temporal. Si editar pesos puede saltarse el alineamiento con tanta facilidad, ¿cómo debería construir la industria una defensa en profundidad real? Destacan dos direcciones.

La primera es aplicar la seguridad en las entradas y salidas con modelos de salvaguarda dedicados y reforzados, como Llama Guard, que se ejecuten fuera del motor principal de generación. Los cortafuegos proxy externos, por ejemplo NeMo Guardrails o middleware de API, también pueden contrastar prompts y respuestas con una política firme de la organización antes de que nada salga del pipeline de inferencia.

La segunda es ejecutar la inferencia en entornos aislados por hardware, como AMD SEV-SNP o NVIDIA H100 Confidential Computing, para que los tensores de pesos permanezcan cifrados en memoria. Si los pesos no se pueden leer ni editar mediante hooks de depurador, los ataques de ortogonalización se vuelven imposibles para usuarios externos.

La abliteración demuestra que la seguridad de la IA no se resolverá con mejores prompts de sistema ni con ciclos de RLHF más largos. Para investigadores de seguridad y red teamers, los checkpoints abliterados sirven como herramienta para averiguar qué sabe un modelo en el fondo. Un siguiente paso sensato es cargar uno con los pipelines estándar de transformers y usarlo para auditar tus propios prompts y herramientas.

Queda una pregunta abierta: si el alineamiento puede borrarse con una simple proyección matricial, ¿deberían los laboratorios punteros abandonar por completo el alineamiento a posteriori?

Referencias

  1. Refusal in Language Models Is Mediated by a Single Direction (arXiv 2406.11717)
  2. El concepto de diferencia de medias, tal como se describe en el blog de EleutherAI
  3. Heretic, la herramienta de abliteración de código abierto en GitHub
  4. Confidential Computing on NVIDIA H100 GPU: A Performance Benchmark Study (arXiv 2409.03992)