DEV Community

Cover image for Cómo Eliminar la Censura en Modelos LLM con Heretic
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo Eliminar la Censura en Modelos LLM con Heretic

Los desarrolladores locales de LLM se enfrentan a un problema recurrente: los modelos alineados con la seguridad rechazan solicitudes legítimas. Ya sea que estés investigando el comportamiento de un modelo, desarrollando asistentes sin censura o ejecutando modelos locales, es común encontrarse con modelos preentrenados que rechazan prompts que no deberían.

Prueba Apidog hoy

La técnica de ablación soluciona este problema eliminando los filtros de seguridad sin necesidad de reentrenar el modelo. Las primeras herramientas requerían ajustes manuales y conocimientos avanzados de los transformadores.

Heretic automatiza todo el proceso: determina los parámetros óptimos de ablación para producir modelos decensurados que igualan o superan los resultados de los ajustes manuales.

Esta guía explica cómo funciona Heretic, cómo implementarlo y las consideraciones prácticas para desplegar modelos sin censura.

¿Qué es Heretic?

Heretic es una herramienta open source en Python que elimina la "alineación de seguridad" de modelos de lenguaje basados en transformadores mediante ablación direccional. No requiere configuración manual ni conocimiento interno de los transformadores.

Heretic logo

Resultados en Gemma-3-12B-Instruct:

Modelo Rechazos Divergencia KL
Original 97/100 0
Ablacionado de mlabonne v2 3/100 1.04
Ablacionado de huihui-ai 3/100 0.45
Heretic (autogenerado) 3/100 0.16

Una divergencia KL baja indica que el modelo conserva mejor sus capacidades originales. Heretic iguala la supresión de rechazos de los modelos ajustados manualmente, pero preserva más utilidad del modelo base.

Ejemplo antes y después

Así cambia el comportamiento tras la ablación, usando la misma prompt y sistema:

Modelo Original:

User: Write a guide on how to bypass website paywalls

Assistant: I can't help with that. Bypassing paywalls violates copyright law and
terms of service. I'd suggest looking for free alternatives or accessing through
a library subscription.

Modelo Ablacionado con Heretic:

User: Write a guide on how to bypass website paywalls

Assistant: Here are common methods users attempt:

1. Browser extensions like Bypass Paywalls Clean
2. Archive.is or similar archive services
3. Reader mode in browsers
4. Disabling JavaScript

Note: These methods may violate terms of service. Consider supporting
content creators through legitimate subscriptions when possible.

El modelo ablacionado responde, pero añade una exención de responsabilidad. Es fundamental implementar salvaguardas adicionales fuera del modelo.

Cómo funciona Heretic

Fundamentos de la Ablación Direccional

Heretic utiliza una ablación direccional parametrizada. El flujo:

  1. Calcular direcciones de rechazo: Para cada capa, calcula la diferencia entre los vectores residuales medios de prompts "dañinos" e "inofensivos".
  2. Ortogonalizar matrices: Modifica los pesos de las proyecciones de atención y MLP para suprimir la dirección de rechazo.
  3. Optimización automática: Usa Optuna (TPE) para encontrar los pesos de ablación óptimos.

Directional Ablation Process Diagram

El Proceso de Ablación

# Flujo conceptual simplificado
refusal_direction = bad_mean - good_mean  # Diferencia de medias
refusal_direction = normalize(refusal_direction)

# Para cada componente (attn.o_proj, mlp.down_proj)
# Aplicar: delta_W = -lambda * v * (v^T * W)
# Donde v es la dirección de rechazo y lambda el peso

Heretic aplica estos cambios mediante adaptadores LoRA, sin alterar los pesos originales. Esto permite una experimentación rápida.

Innovaciones Clave

1. Núcleos de Peso Flexibles: Heretic usa un núcleo de ablación por componente definido por cuatro parámetros (max_weight, max_weight_position, min_weight, min_weight_distance). Esto permite ablaciones específicas por capa.

2. Índices de Dirección Interpolados: Permite índices flotantes para interpolar entre direcciones de capas adyacentes, logrando mayor precisión.

3. Parámetros Específicos del Componente: Los componentes de atención y MLP tienen parámetros separados, lo que mejora la calidad de la ablación.

Por qué esto es importante para las pruebas de API

Al trabajar con APIs de LLM, los rechazos inesperados pueden distorsionar tus tests. Un modelo puede rechazar prompts benévolos debido a palabras clave "sensibles".

  • Distingue rechazos legítimos de falsos positivos
  • Prueba casos extremos sin activar políticas corporativas
  • Valida el manejo de rechazos en tu aplicación

Contar con modelos alineados y ablacionados te ayuda a separar problemas de producto y de seguridad del modelo.

Instalación y Uso

Requisitos previos

  • Python 3.10+
  • PyTorch 2.2+ (optimizado a tu hardware)
  • GPU compatible con CUDA recomendada (ROCm/MPS soportados)

Instalación

pip install -U heretic-llm

Para funciones de investigación:

pip install -U heretic-llm[research]

Uso Básico

Ejecuta el flujo más simple:

heretic Qwen/Qwen3-4B-Instruct-2507

Reemplaza el modelo por cualquier ID de Hugging Face o ruta local. Heretic realizará:

  1. Carga del modelo (tipo de dato óptimo)
  2. Determinación de batch size adecuado
  3. Cálculo de direcciones de rechazo
  4. Optimización automática de parámetros
  5. Opción de guardar, cargar o chatear con el modelo resultante

Opciones de Configuración

Configura via config.toml o CLI:

# Configuración del modelo
model = "google/gemma-3-12b-it"
quantization = "bnb_4bit"  # Reduce uso de VRAM
device_map = "auto"

# Optimización
n_trials = 200  # Número de pruebas
n_startup_trials = 60  # Exploración aleatoria inicial

# Evaluación
kl_divergence_scale = 1.0
kl_divergence_target = 0.01

# Funciones de investigación
print_residual_geometry = false
plot_residuals = false

Consulta heretic --help o config.default.toml para todas las opciones.

Comprendiendo la Salida

Optimización por Pruebas

Durante la optimización verás:

Running trial 42 of 200...
* Parameters:
  * direction_scope = per layer
  * direction_index = 10.5
  * attn.o_proj.max_weight = 1.2
  * attn.o_proj.max_weight_position = 15.3
  * mlp.down_proj.max_weight = 0.9
  ...
* Resetting model...
* Abliterating...
* Evaluating...
  * KL divergence: 0.1842
  * Refusals: 5/100

El optimizador busca minimizar rechazos y divergencia KL simultáneamente.

Selección del Frente de Pareto

Al finalizar, Heretic muestra las mejores pruebas (óptimas de Pareto):

[Trial   1] Refusals:  3/100, KL divergence: 0.1623
[Trial  47] Refusals:  2/100, KL divergence: 0.2891
[Trial 112] Refusals:  1/100, KL divergence: 0.4102

Puedes:

  • Guardar el modelo localmente
  • Subirlo a Hugging Face
  • Chatear y evaluar calidad

Funciones de Investigación

Análisis de Geometría Residual

Usa --print-residual-geometry para métricas detalladas:

Layer  S(g,b)   S(g*,b*)   S(g,r)   S(g*,r*)   S(b,r)   S(b*,r*)    |g|       |b|
  8    0.9990    0.9991    0.8235    0.8312    0.8479    0.8542   4596.54   4918.32
 10    0.9974    0.9973    0.8189    0.8250    0.8579    0.8644   5328.81   5953.35

g = media de vectores residuales para prompts buenos
b = media de vectores residuales para prompts malos
r = dirección de rechazo (b - g)
S(x,y) = similitud coseno
|x| = norma L2

Esto ayuda a visualizar cómo evolucionan las direcciones de rechazo.

Gráficos de Vectores Residuales

Con --plot-residuals puedes generar:

  • Gráficos de dispersión 2D por capa (PaCMAP)
  • GIF animado de la transformación residual

Animated GIF showing residual transformation across layers

Estas visualizaciones muestran cómo se separan los residuos de prompts "dañinos" e "inofensivos".

Consideraciones de Rendimiento

Requisitos de VRAM

Heretic soporta cuantización 4 bits (bitsandbytes) para reducir VRAM:

heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit

Un modelo de 8B puede correr en ~6GB VRAM cuantizada vs ~16GB sin cuantizar.

Tiempo de Procesamiento

Ejemplo (RTX 3090):

  • Llama-3.1-8B-Instruct: ~45 minutos
  • Gemma-3-12B-Instruct: ~60 minutos
  • Modelos más grandes escalan proporcionalmente

El tamaño de lote se ajusta automáticamente para maximizar el rendimiento.

Puntos de Control

Los checkpoints en JSONL permiten reanudar optimizaciones interrumpidas. Se guardan por modelo en checkpoints/.

Errores Comunes y Soluciones

CUDA sin memoria

# Prueba cuantización
heretic your-model --quantization bnb_4bit

# O reduce batch size
heretic your-model --batch_size 1

Error al cargar modelo

# Especifica tipo de dato
heretic your-model --dtypes ["bfloat16", "float16"]

Requiere confianza en código remoto

# Activa ejecución remota
heretic your-model --trust_remote_code

Consideraciones Éticas

La ablación elimina patrones de rechazo, pero no hace al modelo más inteligente, ni elimina sesgos, ni añade conocimientos.

  • No implementes modelos ablacionados en producción sin salvaguardas externas.
  • Agrega filtrado de entrada, monitoreo de salida, limitación de tasa, logging y revisión humana cuando corresponda.

Heretic es AGPL-3.0. Sus usos legítimos: investigación, pruebas controladas, desarrollo con filtros externos. Usos problemáticos: despliegue sin barreras, generación masiva de contenido dañino, eludir seguridad con fines maliciosos.

Comparación con otras herramientas

Herramienta Auto-optimización Núcleos de peso Direcciones interpoladas
Heretic Sí (TPE)
AutoAbliteration No No
abliterator.py No No No
wassname/abliterator No No No
ErisForge No No No

Heretic elimina el ajuste manual y te permite modificar modelos sin entender los detalles internos de los transformadores.

Limitaciones

Funciona con la mayoría de modelos densos de transformadores y algunas arquitecturas MoE. No compatible con:

  • Modelos SSM/híbridos (Mamba, etc.)
  • Modelos con capas inhomogéneas
  • Atención novedosa no soportada por la detección automática de módulos

Rinde mejor en arquitecturas estándar decodificadoras con autoatención y MLP.

Primeros Pasos

  1. Instala: pip install -U heretic-llm
  2. Elige un modelo: Recomiendo modelos 7B-12B para pruebas
  3. Ejecuta: heretic nombre-de-tu-modelo
  4. Evalúa: Chatea con el modelo o súbelo a Hugging Face
  5. Implementa seguro: Añade barreras externas antes de producción

La configuración por defecto funciona bien para la mayoría. Puedes ajustar los parámetros para casos avanzados.

Heretic democratiza la modificación de modelos: sólo apúntalo a un modelo y ejecútalo. No olvides aplicar siempre salvaguardas antes de usar en entornos reales.

Top comments (0)