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.
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.
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:
- Calcular direcciones de rechazo: Para cada capa, calcula la diferencia entre los vectores residuales medios de prompts "dañinos" e "inofensivos".
- Ortogonalizar matrices: Modifica los pesos de las proyecciones de atención y MLP para suprimir la dirección de rechazo.
- Optimización automática: Usa Optuna (TPE) para encontrar los pesos de ablación óptimos.
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á:
- Carga del modelo (tipo de dato óptimo)
- Determinación de batch size adecuado
- Cálculo de direcciones de rechazo
- Optimización automática de parámetros
- 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
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) | Sí | Sí |
| AutoAbliteration | Sí | 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
-
Instala:
pip install -U heretic-llm - Elige un modelo: Recomiendo modelos 7B-12B para pruebas
-
Ejecuta:
heretic nombre-de-tu-modelo - Evalúa: Chatea con el modelo o súbelo a Hugging Face
- 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)