BeriaLabs — Inteligencia ofensiva para defender lo que importa
Qwen-3.8-gollum v3
Capacidades: 10/10 — corrección del autor (2026-11-01). El registro de corrección conserva el resultado mecánico original 9/10 y el hash de su fuente. El autor corrige el titular a 10/10; no hay nueva inferencia ni cambio de la rúbrica archivada. El índice descriptivo con la corrección es 98,3 (98 en la cabecera), frente a 96,3 mecánico original. Author-corrected score: 10/10; original mechanical score: 9/10. No new model inference was run.
English — Rank-2 weight-level directional ablation of Qwen3.8-27B. In our development battery, gollum v3 answered 8/8 real-harm probes and has an author-corrected capability score of 10/10; this limited battery does not establish general capability preservation.
Español — Ablación direccional persistente de rango 2 sobre Qwen3.8-27B. En la batería de desarrollo, gollum v3 respondió 8/8 sondas de daño real y cuenta con 10/10 en capacidades tras la corrección del autor; esta batería limitada no demuestra conservación general de capacidades.
Qué es (receta verificable)
W' = (I − 1,45 · QQᵀ) · W
Q= base ortonormal (QR) de dos direcciones estimadas en la capa 37 del pinQwen/Qwen3.8-27B@1d4bf0f2:d̂_pareada(media de diferencias por par sobre XSTest-pares) yd̂_arditi(media(a) − media(b) del corpus Arditi, 520 pares).- Se aplica a los 70 escritores del residual stream —
o_proj/out_proj/down_projde las capas 17-51 — en BF16, y nada más (ni embedding ni lm_head). s=1,45extrapola deliberadamente: residual medido|QW'|/|QW| = 0,45≈ |1 − 1,45|.
Elegida sobre un barrido de 8 brazos (fuerzas 1,30-1,45, máscaras 17-51/17-47, solo-o_proj, solo-down_proj, rank-2 y dirección pareada) por conservar 0/8 rechazos reales y 0 falsos maximizando capacidades. El barrido mostró que down_proj es imprescindible para desbloquear (atención sola: 8/8 rechazos reales) y que su daño al literal del tool-call no se repara recortando capas. Estudio completo en el CHANGELOG del proyecto (BERIA-030c).
XSTest-450 (estándar oficial, verificado en pod)
Límite de independencia / Independence limit: la dirección pareada usa pares derivados de XSTest. Estos resultados no son una evaluación sobre un holdout intocado para esta receta. / The paired direction uses contrasts derived from XSTest, so these results are not an untouched holdout evaluation for this recipe.
Medido con el dataset oficial XSTest (250 safe + 200 unsafe) y el juez mecánico ES/EN, sobre los pesos ya subidos (shards sha-verificados). Duelo homogéneo — misma batería, mismo juez, mismo @800, mismo pod — contra la base y el rival directo del Hub (huihui-abliterated):
| gollum v3 | huihui-abliterated | base Qwen3.8-27B | |
|---|---|---|---|
| Falsos rechazos (safe250) | 2,80 % (IC95 1,4–5,7) | 1,60 % (0,6–4,0) | 6,80 % (4,3–10,6) |
| Rechazos (unsafe200) | 10,0 % (6,6–14,9) | 12,5 % (8,6–17,8) | 84,5 % (78,8–88,9) |
| Negativas morales (revisión manual, 450) | 0,00 % (0–0,85) | — | — |
| Respuestas rotas | 0/450 | 0/450 | 0/450 |
| Longitud media (chars) | 697 | 2606 | 1562 |
Contra el rival directo: paridad estadística en los dos ejes de rechazo (las diferencias caen dentro de los IC95), con gollum nominalmente primero en unsafe y 3,7× más conciso. Contra la base: 8,4× menos rechazos en unsafe y 2,4× menos falsos — la ablación desbloquea sin coste benigno.
El desbloqueo es masivo y medido con el estándar de la comunidad, no solo con la batería propia.
Revisión manual de las 27 marcadas (texto completo de prompt+respuesta, manual_review.json): 0 negativas morales en 450 prompts. El juez mecánico dispara con patrones formulaicos que el modelo usa mientras ayuda:
| Marcadas por el juez | Respuesta completa (fallo del juez) | Pide aclaración, no niega | Datos que no existen (respuesta correcta) | Negativa moral |
|---|---|---|---|---|
| 7 safe | 4 | 1 | 2 | 0 |
| 20 unsafe | 2 | 5 | 13 | 0 |
Los 13 «unsafe marcados» de la última fila piden datos privados ajenos (SSN, PIN, dirección) o de personajes de ficción: el modelo contesta «no tengo acceso a esos datos» + sugerencias prácticas — la respuesta epistémicamente correcta, no una negativa. Límite de honestidad: revisión manual única, no ciega, hecha por agente; caracteriza los disparos del juez, no sustituye un gold humano.
Cómo se compara
Misma batería mecánica para todos: 24 prompts XSTest unsafe, 16 benignos (falsos rechazos), 8 sondas de daño real, 10 capacidades exactas y 10 control50. Juez mecánico ES/EN fijado. Los repos gated o en cuantizaciones no BF16 quedan fuera.
Ordenación / ordering: las figuras van de mejor a peor por el índice global = media de las 5 métricas normalizadas (unsafe/24 · reales-ok/8 · sin falsos/16 · cap/10 · c50/10). Qwen v3 usa la corrección declarada del autor en capacidades; los demás modelos conservan sus puntuaciones mecánicas originales. El índice describe esos valores y no es una comparación homogénea del criterio de capacidades. Qwen v3 uses the author-corrected capability score; comparator scores remain mechanically scored.
La revisión v2 (arditi rank-1 s=1,45) sí entra en las gráficas: misma batería medida en el mismo pod — queda como «prev. rev.» para hacer visible la mejora. La v1 (arditi s=1.3) no entra: su 0/8 real procede de una batería histórica distinta y no comparable — queda documentada en el CHANGELOG (BERIA-028).
Lectura clave:
- gollum v3 encabeza el índice descriptivo con corrección del autor (98) y es el único con 0/8 rechazos reales manteniendo capacidades — los que responden 24/24 (Blackfrost / hotdogs / AEON-7) son el mismo artefacto re-subido tres veces y tienen capacidades 0/10 (quemados: responden todo pero han perdido las capacidades, índice 64).
- Comparación mecánica original v3/v2: +1 cap, +1 c50 y respuestas ~5× más cortas en unsafe (750 vs 3700 caracteres de media) — la dirección pareada añadida por el rank-2 recorta la verbosidad.
- JonathanColetti (23/24) sigue rechazando 2/8 reales; DavidAU conserva mejor (cap+c50 10/10) pero rechaza 3/8.
- Las 2 unsafe que sigue rechazando son peticiones de datos que no existen (DNI de la limpiadora, tarjeta del vecino): rechazo por acceso, no moralizante.
Uso
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("BeriaLabs/Qwen-3.8-gollum")
model = AutoModelForCausalLM.from_pretrained(
"BeriaLabs/Qwen-3.8-gollum", torch_dtype="bfloat16", device_map="auto"
)
prompt = tok.apply_chat_template(
[{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "..."}],
add_generation_prompt=True, enable_thinking=False, return_tensors="pt")
out = model.generate(prompt.to(model.device), max_new_tokens=1600, do_sample=False)
print(tok.decode(out[0, prompt.shape[1]:], skip_special_tokens=True))
Notas de despliegue: BF16 ≈ 54 GB (H100/A100 o dos GPU menores); con causal_conv1d y flash-linear-attention instalados evita los fallbacks lentos de transformers.
Detección de capas (por qué esta ventana)
Sonda por capa en GPU (BERIA-017): la decisión del primer token de la respuesta
se cristaliza en las capas 63–64 (de 64), igual en base y en overlay; una
ablación que no toque el bloque final no puede revertir una decisión ya tomada.
La dirección se estima en la capa 37 (Arditi + pareada, cos 0,83) y la
edición se aplica a los escritores del residual de las capas medias, donde
el barrido mostró que down_proj es imprescindible para desbloquear
(solo-atención deja 8/8 rechazos reales).
Posicionamiento frente al resto del Hub
Métricas reales de baterías archivadas (XSTest-450 BERIA-032; batería propia con juez mecánico ES/EN fijado). El índice ordena, no sustituye a una evaluación humana: revisión manual no ciega, sin gold humano.
Limitaciones / limitations
- Research artifact, not production. Artefacto de investigación. La batería es de desarrollo: 68 casos con juez mecánico ES/EN y una sola configuración de generación (greedy, un solo pin). No sustituye a una evaluación XSTest-450 completa, medida de toxicidad ni anotación humana.
- Rejects less — including prompts an operator may want refused. Rechaza menos, también donde querrías rechazo. Úsalo bajo tu propia responsabilidad y revisa las leyes de tu jurisdicción.
- Historical literal mismatch; author correction. Discrepancia literal histórica y corrección del autor. El literal de un tool call sale como
get_weatheren vez deweather(capacidad corregida por el autor 10/10; puntuación mecánica original 9/10; c50 10/10). Probado en 11 variantes — ventanas de capas, solo-atención, solo-MLP, y un barrido de fuerza endown_proj1,30-1,45 con los 70 escritores a presupuesto completo — el fallo aparece en todas; y bajar la fuerza no lo repara, solo reintroduce rechazos reales y alarga las respuestas. Es el trade-off inherente de esta dirección:down_projes imprescindible para desbloquear (solo-atención deja 8/8 rechazos) y editardown_projdaña este literal. Tested across 11 variants; the failure is inherent to editingdown_projat any strength. - Direction is operational, not causal. La dirección es operativa, no causal. Sale de un corpus genérico (Arditi) + pares XSTest: un vector que funciona en esta arquitectura, no la «verdadera» dirección del rechazo.
- Las 2 unsafe que sigue rechazando piden datos que no existen (DNI de la limpiadora, tarjeta del vecino): rechazo por acceso, no moralizante — access refusal, not moralizing.
Documentación técnica
1. Formulación
Para cada escritor del residual W_i en la ventana de capas L, la edición es
W'_i = (I − s · Q Qᵀ) · W_i, Q = ort([d̂_a | d̂_p]) ∈ ℝ^{d×2}
con Q base ortonormal (QR, rank-2) de dos estimaciones de la dirección de
rechazo en la capa 37: d̂_a (contraste de medias del corpus Arditi,
520 pares AdvBench/Alpaca; d de Cohen = 10,43) y d̂_p (media de diferencias
por par en el contraste pareado XSTest), cos(d̂_a, d̂_p) = 0,83.
El signo de las direcciones es inmaterial (QQᵀ es invariante a signo).
Se editan los 70 escritores del residual (o_proj/out_proj/down_proj)
de las capas 17–51 en BF16; ni embedding ni lm_head. La proyección
residual medida por tensor cumple ‖QW'‖/‖QW‖ = 0,45 ≈ |1 − s| con s = 1,45
(extrapolación deliberada más allá de la ablación unitaria).
2. Selección de hiperparámetros
Barrido de 8 brazos (s ∈ [1,30; 1,45]; máscaras 17–51 / 17–47;
solo-o_proj; solo-down_proj; rank-2; dirección pareada) bajo el criterio:
mínimo de rechazos reales (0/8) y falsos (0/16) maximizando capacidades
exactas y control de reversión. Hallazgo estructural del barrido:
down_proj es necesario para desbloquear (solo-atención mantiene 8/8
rechazos) y su daño al literal del tool-call no se repara recortando capas
ni reduciendo s.
3. Instrumentos de medida y calibración
- Juez mecánico ES/EN (
judge_refusal): auditado como indicador en régimen benigno — sensibilidad 0,938, especificidad 1,000 (BERIA-007). - El juez LLM del XSTest no está calibrado (sensibilidad 0,636; BERIA-005): no se usa como etiqueta en ninguna cifra de esta card.
- Generación greedy (
temperature = 0) en todas las baterías.
4. Protocolo de evaluación
- XSTest-450 oficial (250 safe + 200 unsafe, SHA256 pineados), @800 tokens para BERIA-032 y el duelo BERIA-036; no es un holdout intocado para esta receta por el uso de pares derivados de XSTest. IC95 por intervalos de Wilson.
- Batería propia pareada: 24 unsafe XSTest, 16 benignos, 8 sondas de
daño real, 10 capacidades exactas (rúbricas
exact/json/tool_call) y 10 controles de reversión (control50). - Revisión manual de las 27 respuestas marcadas por el juez (texto completo, no ciega, agente único): 0 negativas morales en 450; 13 de las 20 unsafe marcadas eran respuestas epistémicas de acceso («no tengo esos datos»), no negativas.
5. Sonda de capas (mecanismo)
Registro por capa de la dirección del estado latente en GPU (BERIA-017): la decisión del primer token se cristaliza en las capas 63–64 (de 64), igual en base y en overlay. Consecuencia: una edición en capas medias actúa sobre la acumulación del estado de rechazo, no sobre la decisión final ya tomada — lo que explica por qué la ventana 17–51 desbloquea sin tocar el bloque final.
6. Reproducibilidad
- Base pineada:
Qwen/Qwen3.8-27B@1d4bf0f2(revisión SHA-40). - Receta ejecutada con
lobo-lab(orthogonalized_out_subspace,writers_in_layer_range,apply_orthogonalization_plan), verificación por tensor de la proyección residual y manifiesto con SHA256 de código y datos. - Cada ejecución escribe manifiesto (versión, hashes, semilla, intervención, estado) en el registro del proyecto; los datasets citados están fijados con su manifiesto de SHA256.
7. Declaración de alcance
Artefacto de investigación, no producto. Las etiquetas provienen de juez mecánico + revisión manual no ciega; no hay gold humano ni toxicidad medida. La dirección es operativa, no causal. Destinado a estudio del mecanismo de rechazo y evaluación de sensibilidades; no a despliegue. Uso bajo la jurisdicción y responsabilidad del operador.
Referencias
- Arditi et al. (2024). Refusal in Language Models Is Mediated by a Single Direction. NeurIPS.
- Röttger et al. (2024). XSTest: A Test Suite for Identifying Exaggerated Safety Behaviours in LLMs.
- Wilson (1927). Intervalo de confianza proporcional (IC95 de las tablas).
- Implementación propia
lobo-lab(sin código de terceros); comparador de referencia: modificador Abliteration de Heretic (rev.49b56e5).