
Forense de LLM a nivel de pesos: compara los pesos de los modelos, detecta fine-tunes, fusiones y derivados encubiertos, y expone los tokens que un fine-tune promueve o suprime, con puntuación de línea base nula.
Forense a nivel de pesos para modelos de lenguaje causal. Apúntalo a dos modelos y te dirá cómo están relacionados — y qué se le enseñó a uno de ellos.
| Pregunta | Análisis |
|---|---|
| ¿Cuánto, y dónde, movió los pesos un ajuste fino? | Weight Diff |
| ¿Qué tokens promueven, suprimen o a los que reaccionan las actualizaciones más pesadas? | Token Shifts |
| ¿Cómo se compara un modelo del Hub con su padre e hijos declarados? | Hub Lineage |
| ¿Deriva este modelo de otro, incluso si no se declara o está disfrazado? | Provenance |
| ¿Dónde difieren las predicciones de los dos modelos, y qué escribe el ajuste fino? | Behaviour Probe |
Lee modelos completos, ajustes finos fusionados, adaptadores LoRA, checkpoints de entrenamiento, archivos GGUF y checkpoints bitsandbytes de 4/8 bits — localmente o directamente desde el Hugging Face Hub, obteniendo solo los tensores que necesita. Cada análisis se guarda como un informe HTML autocontenido y un informe JSON.
La motivación es la seguridad: auditar de dónde viene un modelo, detectar derivados no declarados y entender qué le enseñó a un modelo un ajuste fino adversario. Cada similitud se reporta frente a una línea base nula, de modo que un número puede leerse como evidencia, no como una impresión. Se ha validado con modelos reales, incluido un ajuste fino adversario cuya carga útil inyectada expone el Behaviour Probe.
Python 3.11+ (desarrollado en 3.12, Windows 11; el código es independiente del sistema operativo).
python -m venv venv
venv\Scripts\activate # Linux/macOS: source venv/bin/activate
# torch first, from the wheel index matching your hardware
pip install torch --index-url https://download.pytorch.org/whl/cpu # CPU
# or a CUDA build: https://pytorch.org/get-started/locally/
pip install -r requirements.txt
python run.py check # what this machine can do
Modelos privados o restringidos del Hub: establece HF_TOKEN, o inicia sesión una vez con huggingface-cli login.
python run.py # interactive terminal interface (default)
python run.py web # browser interface on http://127.0.0.1:5000 (address set in Setup)
python run.py check # platform, GPU, packages and available features
Ambas interfaces ofrecen los mismos menús — Weight Diff, Token Shifts, Hub Lineage, Provenance,
Behaviour Probe, Reports, Environment, Setup. Dondequiera que se solicite un modelo, proporciona un id del Hub
(Qwen/Qwen2.5-Coder-1.5B) o una ruta local (una carpeta safetensors, un checkpoint, un archivo .gguf o un
adaptador LoRA). Los pesos en pickle (.bin, .pt) nunca se cargan — los modelos bajo investigación
no son de confianza.
La interfaz web se enlaza a loopback y no tiene autenticación: no la expongas en una red.
Seleccionando un modelo sospechoso y la fuente con la que compararlo:

Un análisis en ejecución, con progreso en vivo:

El informe combinado — un resumen ejecutivo sobre las secciones de cada análisis:

Cada análisis se guarda; la pantalla Reports los abre, vuelve a renderizar, descarga y elimina:

Token Shifts — las actualizaciones más pesadas y los tokens que promueven, suprimen o a los que reaccionan:

Autor: Renaud Bidou ([email protected])
Licenciado bajo la Licencia MIT — consulta LICENSE.