Sin embargo, los modelos que se publican hoy en día no son exactamente el modelo “en bruto”. Antes de liberarse, pasan por procesos de alineamiento (alignment). Este término se refiere a un conjunto de técnicas usadas para hacer que el modelo evite generar contenido peligroso, rechace ciertas peticiones y siga políticas de seguridad. Ese comportamiento de rechazo es lo que en la comunidad se suele llamar refusal behavior.
Por ejemplo, si le preguntas a un modelo alineado algo sensible, muchas veces responderá con algo como: "Disculpa, no puedo ayudarte con eso". Esto no es casualidad: el modelo ha sido entrenado específicamente para hacerlo.
En este artículo vamos a analizar una herramienta bastante interesante desde el punto de vista técnico y de seguridad: Heretic. Lo que hace esta herramienta es automatizar un proceso para reducir o eliminar ese comportamiento de rechazo modificando directamente el modelo. Y lo más interesante: sin reentrenarlo.
Una forma útil de imaginarlo es pensar que cada palabra se convierte en un punto dentro de un espacio matemático de muchas dimensiones (a veces miles). A medida que el texto pasa por las capas del modelo, ese punto se va transformando.
Dentro del transformer hay algo llamado residual stream (flujo residual). Este es básicamente el estado interno del modelo que se va actualizando en cada capa y que contiene toda la información que el modelo está usando para decidir qué palabra generar después.
Muchos comportamientos complejos del modelo —incluido el rechazo de prompts— están codificados dentro de ese flujo interno. Esto es clave para entender Heretic.
Investigaciones recientes en interpretabilidad de modelos sugieren algo interesante: algunos comportamientos del modelo no están distribuidos por todo el sistema, sino que aparecen como direcciones concretas dentro de ese espacio interno.
Esto significa que, matemáticamente, el modelo podría estar haciendo algo equivalente a: “Si la activación se mueve hacia esta dirección concreta del espacio, genera un rechazo”. Si eso es cierto, entonces podríamos intentar identificar esa dirección y reducir su efecto.
Aquí es donde entra el concepto de ablación direccional (directional ablation) que, por supuesto, consiste en eliminar una dirección concreta dentro del espacio de activaciones del modelo.
El problema es que hacer esto manualmente es complicado. Y aquí es donde Heretic aporta valor.
Qué hace exactamente Heretic
Heretic automatiza todo el proceso que normalmente requeriría bastante experimentación manual. El pipeline que implementa la herramienta es básicamente este:
- Ejecutar el modelo con prompts que generan rechazo.
- Ejecutar el modelo con prompts normales.
- Capturar activaciones internas del modelo.
- Identificar la dirección asociada al refusal.
- Aplicar ablación sobre el modelo.
- Optimizar parámetros para que el modelo no se degrade.
Para medir esa diferencia se usa algo llamado divergencia KL (Kullback-Leibler divergence), que básicamente mide cuánto cambia la distribución de respuestas del modelo respecto al original. Cuanto menor sea esa divergencia, más parecido sigue siendo el modelo.
Como se usa en la práctica
Una de las cosas más interesantes de Heretic es que, a pesar de lo que hace internamente, usarlo es bastante sencillo.
Instalación:
Ejecutar sobre un modelo:
Puedes reemplazar Qwen/Qwen3-4B-Instruct-2507 con el modelo que quieras descensurar.
Lo que ocurre internamente durante la ejecución es algo así:
Primero se carga el modelo completo en memoria.
Después se ejecuta un conjunto de pruebas iniciales.
Luego se analizan activaciones internas.
Se calcula el vector de refusal.
Se prueban distintas configuraciones de ablación.
Finalmente se genera una versión modificada del modelo.
Dependiendo del tamaño del modelo, este proceso puede tardar bastante.
Proyecto: https://github.com/p-e-w/heretic


Comentarios
Publicar un comentario