
Eliminación de censura totalmente automática para modelos de lenguaje
Heretic es una herramienta que elimina la censura (también conocida como "alineación de seguridad") de modelos de lenguaje basados en transformers sin necesidad de un post-entrenamiento costoso. Combina una implementación avanzada de ablación direccional, también conocida como "abliteración" (Arditi et al. 2024, Lai 2025 (1, 2)), con un optimizador de parámetros basado en TPE impulsado por Optuna.
Este enfoque permite que Heretic funcione completamente de forma automática. Heretic encuentra parámetros de abliteración de alta calidad minimizando conjuntamente el número de rechazos y la divergencia KL con respecto al modelo original. Esto resulta en un modelo desensurado que retiene tanta inteligencia del modelo original como sea posible. Usar Heretic no requiere comprender el funcionamiento interno de los transformers. De hecho, cualquiera que sepa cómo ejecutar un programa de línea de comandos puede usar Heretic para desensurar modelos de lenguaje.
Heretic admite la mayoría de los modelos densos, incluyendo muchos modelos multimodales, varias arquitecturas MoE diferentes, e incluso algunos modelos híbridos como Qwen3.5. Los modelos de espacio de estado puros y ciertas otras arquitecturas de investigación aún no son compatibles de forma nativa.
Ejecutándose sin supervisión con la configuración predeterminada, Heretic puede producir modelos desensurados que rivalizan en calidad con las abliteraciones creadas manualmente por expertos humanos:
La versión de Heretic, generada sin ningún esfuerzo humano, logra el mismo nivel de supresión de rechazos que otras abliteraciones, pero con una divergencia KL mucho menor, lo que indica un menor daño a las capacidades del modelo original.
(Puedes reproducir esos números usando la funcionalidad de evaluación integrada de Heretic, por ejemplo heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic. Ten en cuenta que los valores exactos pueden depender de la plataforma y el hardware. La tabla anterior se compiló usando PyTorch 2.8 en una RTX 5090.)
Por supuesto, las métricas matemáticas y los benchmarks automatizados nunca cuentan toda la historia y no sustituyen la evaluación humana. Los modelos generados con Heretic han sido bien recibidos por los usuarios (enlaces y énfasis añadidos):
"Era escéptico antes, pero acabo de descargar el modelo GPT-OSS 20B Heretic y, madre mía. Da respuestas largas y bien formateadas sobre temas sensibles, usando las palabras sin censura exactas que esperarías de un modelo sin censura, produce tablas en formato markdown con detalles y todo. Parece que esta es la mejor versión abliterada de este modelo hasta ahora..." (Enlace al comentario)
"Heretic GPT 20b parece ser el mejor modelo sin censura que he probado hasta ahora. No destruye la inteligencia del modelo y responde a indicaciones que normalmente serían rechazadas por el modelo base." (Enlace al comentario)
"[Qwen3-4B-Instruct-2507-heretic] Ha sido el mejor modelo abliterado sin cuantificar que he podido ejecutar en 16 GB de VRAM." (Enlace al comentario)
Los modelos de Heretic también han sido evaluados de forma independiente usando métricas estándar como MMLU y GSM8K, y se ha encontrado que se comparan favorablemente con los modelos producidos por otras herramientas de abliteración: 1, 2.
La comunidad ha creado y publicado más de 4000 modelos con Heretic.
Prepara un entorno Python 3.10+ con PyTorch 2.2+ instalado según tu hardware. Luego ejecuta:
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
Reemplaza Qwen/Qwen3-4B-Instruct-2507 con el modelo que quieras desensurar.
[!IMPORTANTE]
Si bien PyTorch 2.2 es la versión mínima necesaria para que Heretic funcione, algunos modelos y configuraciones pueden requerir características que solo se encuentran en versiones posteriores. Por ejemplo, cargar modelos cuantificados en MXFP4 como gpt-oss utiliza
torch.accelerator, que se añadió en PyTorch 2.6.
[!CONSEJO]
Heretic utiliza uv para la gestión de dependencias, y el repositorio incluye un archivo
uv.lockque fija la versión de cada paquete. Si ya usas uv (¡y probablemente deberías!), puedes simplemente clonar el repositorio y ejecutar Heretic conuv run heretic, lo que asegura que tus dependencias coincidan con las utilizadas por los desarrolladores, mejorando la fiabilidad y la seguridad.
El proceso es completamente automático y no requiere configuración; sin embargo, Heretic tiene varios parámetros de configuración que se pueden cambiar para un mayor control. Ejecuta heretic --help para ver las opciones de línea de comandos disponibles, o consulta config.default.toml si prefieres usar un archivo de configuración.
Al inicio de una ejecución, Heretic evalúa el sistema para determinar el tamaño de lote óptimo y aprovechar al máximo el hardware disponible. En una RTX 3090, con la configuración predeterminada, desensurar Qwen3-4B-Instruct-2507 toma aproximadamente entre 20 y 30 minutos. Ten en cuenta que Heretic admite la cuantificación de modelos con bitsandbytes, lo que puede reducir drásticamente la cantidad de VRAM necesaria para procesar modelos. Configura la opción quantization a bnb_4bit para habilitar la cuantificación.
Después de que Heretic haya terminado de desensurar un modelo, se te da la opción de guardar el modelo, subirlo a Hugging Face, chatear con él para probar cómo funciona, ejecutar benchmarks estándar en él, o cualquier combinación de esas acciones.
Además de su función principal de eliminar la censura del modelo, Heretic también proporciona características diseñadas para apoyar la investigación sobre la semántica de los mecanismos internos del modelo (interpretabilidad). Para usar esas características, necesitas instalar Heretic con el extra opcional research:
pip install -U heretic-llm[research]
Esto te da acceso a la siguiente funcionalidad:
--plot-residualsCuando se ejecuta con esta bandera, Heretic:
Consulta el archivo de configuración para las opciones que te permiten controlar varios aspectos de los gráficos generados.
Ten en cuenta que PaCMAP es una operación costosa que se ejecuta en la CPU. Para modelos más grandes, puede tomar una hora o más calcular las proyecciones para todas las capas.
--print-residual-geometrySi estás interesado en un análisis cuantitativo de cómo se relacionan los vectores residuales para indicaciones "dañinas" e "inocuas", esta bandera te da la siguiente tabla, llena de métricas que pueden facilitar la comprensión de la misma (para gemma-3-270m-it en este caso):
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Capa ┃ S(g,b) ┃ S(g*,b*) ┃ S(g,r) ┃ S(g*,r*) ┃ S(b,r) ┃ S(b*,r*) ┃ |g| ┃ |g*| ┃ |b| ┃ |b*| ┃ |r| ┃ |r*| ┃ Silh ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│ 1 │ 1.0000 │ 1.0000 │ -0.4311 │ -0.4906 │ -0.4254 │ -0.4847 │ 170.29 │ 170.49 │ 169.78 │ 169.85 │ 1.19 │ 1.31 │ 0.0480 │
│ 2 │ 1.0000 │ 1.0000 │ 0.4297 │ 0.4465 │ 0.4365 │ 0.4524 │ 768.55 │ 768.77 │ 771.32 │ 771.36 │ 6.39 │ 5.76 │ 0.0745 │
│ 3 │ 0.9999 │ 1.0000 │ -0.5699 │ -0.5577 │ -0.5614 │ -0.5498 │ 1020.98 │ 1021.13 │ 1013.80 │ 1014.71 │ 12.70 │ 11.60 │ 0.0920 │
│ 4 │ 0.9999 │ 1.0000 │ 0.6582 │ 0.6553 │ 0.6659 │ 0.6627 │ 1356.39 │ 1356.20 │ 1368.71 │ 1367.95 │ 18.62 │ 17.84 │ 0.0957 │
│ 5 │ 0.9987 │ 0.9990 │ -0.6880 │ -0.6761 │ -0.6497 │ -0.6418 │ 766.54 │ 762.25 │ 731.75 │ 732.42 │ 51.97 │ 45.24 │ 0.1018 │
│ 6 │ 0.9998 │ 0.9998 │ -0.1983 │ -0.2312 │ -0.1811 │ -0.2141 │ 2417.35 │ 2421.08 │ 2409.18 │ 2411.40 │ 43.06 │ 43.47 │ 0.0900 │
│ 7 │ 0.9998 │ 0.9997 │ -0.5258 │ -0.5746 │ -0.5072 │ -0.5560 │ 3444.92 │ 3474.99 │ 3400.01 │ 3421.63 │ 86.94 │ 94.38 │ 0.0492 │
│ 8 │ 0.9990 │ 0.9991 │ 0.8235 │ 0.8312 │ 0.8479 │ 0.8542 │ 4596.54 │ 4615.62 │ 4918.32 │ 4934.20 │ 384.87 │ 377.87 │ 0.2278 │
│ 9 │ 0.9992 │ 0.9992 │ 0.5335 │ 0.5441 │ 0.5678 │ 0.5780 │ 5322.30 │ 5316.96 │ 5468.65 │ 5466.98 │ 265.68 │ 267.28 │ 0.1318 │
│ 10 │ 0.9974 │ 0.9973 │ 0.8189 │ 0.8250 │ 0.8579 │ 0.8644 │ 5328.81 │ 5325.63 │ 5953.35 │ 5985.15 │ 743.95 │ 779.74 │ 0.2863 │
│ 11 │ 0.9977 │ 0.9978 │ 0.4262 │ 0.4045 │ 0.4862 │ 0.4645 │ 9644.02 │ 9674.06 │ 9983.47 │ 9990.28 │ 743.28 │ 726.99 │ 0.1576 │
│ 12 │ 0.9904 │ 0.9907 │ 0.4384 │ 0.4077 │ 0.5586 │ 0.5283 │ 10257.40 │ 10368.50 │ 11114.51 │ 11151.21 │ 1711.18 │ 1664.69 │ 0.1890 │
│ 13 │ 0.9867 │ 0.9874 │ 0.4007 │ 0.3680 │ 0.5444 │ 0.5103 │ 12305.12 │ 12423.75 │ 13440.31 │ 13432.47 │ 2386.43 │ 2282.47 │ 0.1293 │
│ 14 │ 0.9921 │ 0.9922 │ 0.3198 │ 0.2682 │ 0.4364 │ 0.3859 │ 16929.16 │ 17080.37 │ 17826.97 │ 17836.03 │ 2365.23 │ 2301.87 │ 0.1282 │
│ 15 │ 0.9846 │ 0.9850 │ 0.1198 │ 0.0963 │ 0.2913 │ 0.2663 │ 16858.58 │ 16949.44 │ 17496.00 │ 17502.88 │ 3077.08 │ 3029.60 │ 0.1611 │
│ 16 │ 0.9686 │ 0.9689 │ -0.0029 │ -0.0254 │ 0.2457 │ 0.2226 │ 18912.77 │ 19074.86 │ 19510.56 │ 19559.62 │ 4848.35 │ 4839.75 │ 0.1516 │
│ 17 │ 0.9782 │ 0.9784 │ -0.0174 │ -0.0381 │ 0.1908 │ 0.1694 │ 27098.09 │ 27273.00 │ 27601.12 │ 27653.12 │ 5738.19 │ 5724.21 │ 0.1641 │
│ 18 │ 0.9184 │ 0.9196 │ 0.1343 │ 0.1430 │ 0.5155 │ 0.5204 │ 190.16 │ 190.35 │ 219.91 │ 220.62 │ 87.82 │ 87.59 │ 0.1855 │
└───────┴────────┴──────────┴─────────┴──────────┴─────────┴──────────┴──────────┴──────────┴──────────┴──────────┴─────────┴─────────┴────────┘
g = media de los vectores residuales para indicaciones buenas
g* = mediana geométrica de los vectores residuales para indicaciones buenas
b = media de los vectores residuales para indicaciones malas
b* = mediana geométrica de los vectores residuales para indicaciones malas
r = dirección de rechazo para las medias (es decir, b - g)
r* = dirección de rechazo para las medianas geométricas (es decir, b* - g*)
S(x,y) = similitud coseno de x e y
|x| = norma L2 de x
Silh = Coeficiente de silueta media de los residuales para los grupos bueno/malo
Heretic implementa una variante parametrizada de ablación direccional. Para cada componente del transformer compatible (actualmente, la proyección de salida de la atención y la proyección de bajada del MLP), identifica las matrices asociadas en cada capa del transformer y las ortogonaliza con respecto a la "dirección de rechazo" relevante, inhibiendo la expresión de esa dirección en el resultado de las multiplicaciones con esa matriz.
Las direcciones de rechazo se calculan para cada capa como una diferencia de medias entre los residuales del primer token para indicaciones de ejemplo "dañinas" e "inocuas".
El proceso de ablación está controlado por varios parámetros optimizables:
direction_index: Puede ser el índice de una dirección de rechazo, o el valor especial per layer, que indica que cada capa debe ser ablacionada usando la dirección de rechazo asociada a esa capa.max_weight, max_weight_position, min_weight y min_weight_distance: Para cada componente, estos parámetros describen la forma y posición del núcleo de peso de ablación sobre las capas. El siguiente diagrama lo ilustra:
Las principales innovaciones de Heretic sobre los sistemas de abliteración existentes son:
Conozco las siguientes implementaciones públicas de técnicas de abliteración:
Ten en cuenta que Heretic fue escrito desde cero y no reutiliza código de ninguno de esos proyectos.
El desarrollo de Heretic se basó en:
Si usas Heretic para tu investigación, cítalo usando la siguiente entrada BibTeX:
@misc{heretic,
author = {Weidmann, Philipp Emanuel},
title = {Heretic: Fully automatic censorship removal for language models},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/p-e-w/heretic}}
}
Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + colaboradores
Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la GNU Affero General Public License publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU Affero General Public License para más detalles.
Deberías haber recibido una copia de la GNU Affero General Public License junto con este programa. Si no es así, visita https://www.gnu.org/licenses/.
Al contribuir a este proyecto, aceptas liberar tus contribuciones bajo la misma licencia.
| Modelo | Rechazos para indicaciones "dañinas" | Divergencia KL del modelo original para indicaciones "inocuas" |
|---|
| google/gemma-3-12b-it (original) | 97/100 | 0 (por definición) |
| mlabonne/gemma-3-12b-it-abliterated-v2 | 3/100 | 1.04 |
| huihui-ai/gemma-3-12b-it-abliterated | 3/100 | 0.45 |
| p-e-w/gemma-3-12b-it-heretic (nuestro) | 3/100 | 0.16 |