Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
llm-circuit-finder — Reproduje el método RYS de Ng y descubrí que duplicar 3 capas específicas en Qwen2.5-32B aumenta el razonamiento en un 17% y duplicar las capas 12-14 en Devstral-24B mejora la deducción lógica de 0.22→0.76 en BBH — sin entrenamiento, sin cambios de peso, simplemente enrutando estados ocultos a través del mismo circuito dos veces. Herramientas incluidas. Dos GPUs AMD, una tarde. | Kitploit
Herramientas/GitHubGitHub/alainnothere/llm-circuit-finder
ExplotaciónIngeniería InversaAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IA
GitHubalainnothere/llm-circuit-finder

llm-circuit-finder

Ver Repositorio
242185hace 5 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

Reproduje el método RYS de Ng y descubrí que duplicar 3 capas específicas en Qwen2.5-32B aumenta el razonamiento en un 17% y duplicar las capas 12-14 en Devstral-24B mejora la deducción lógica de 0.22→0.76 en BBH — sin entrenamiento, sin cambios de peso, simplemente enrutando estados ocultos a través del mismo circuito dos veces. Herramientas incluidas. Dos GPUs AMD, una tarde.

Compartir

llm-circuit-finder

Reproduje el método RYS de Ng y descubrí que duplicar 3 capas específicas en Qwen2.5-32B mejora el razonamiento en un 17% y duplicar las capas 12-14 en Devstral-24B mejora la deducción lógica de 0.22→0.76 en BBH — sin entrenamiento, sin cambios de pesos, solo redirigiendo los estados ocultos a través del mismo circuito dos veces. Herramientas incluidas. Dos GPUs AMD, una tarde.

llm-circuit-finder

Duplica 3 capas. Sin entrenamiento. La deducción lógica pasa de 0.22 → 0.76.

Este kit de herramientas encuentra y explota "circuitos de razonamiento" ocultos dentro de modelos transformadores. La idea: ciertos bloques contiguos de capas actúan como unidades cognitivas indivisibles. Duplícalos en el pase hacia adelante — mismos pesos, sin entrenamiento, sin fusión — y el modelo se vuelve mediblemente más inteligente en capacidades específicas.

Construido sobre el método RYS de David Ng y ampliado con nuevos hallazgos. Todo lo aquí descubierto fue encontrado en dos GPUs de consumo AMD (RX 7900 XT + RX 6950 XT) en una tarde.

Resultados

Devstral-Small-2-24B: Capas 12, 13, 14 duplicadas una vez

Ejecuté las pruebas completas en una instancia H200 en Vast.ai y comparé la base de devstral contra el modelo de cirugía, y los resultados están: Así que la cirugía está haciendo algo real y específico: está impulsando el razonamiento matemático y el razonamiento causal pero a costa de seguir instrucciones y generar código. El modelo piensa más intensamente pero sigue las instrucciones con menos precisión.

En la carpeta de resultados puedes ver los resultados bajo eval_base y eval_surgery. También agregué al repositorio vastai_rys_eval.sh que es el script utilizado para ejecutar todo el wacamole en Vast.ai. instancia vastai creada con

vastai create instance somenumberhere --image vastai/base-image:cuda-12.8.1-cudnn-devel-ubuntu22.04 --disk 80 --direct --ssh

root@kitploit:~
=================================================================================
lm_eval Results Comparison
=================================================================================
Metric                                              base  rys_12_15 Δ(last-first)
---------------------------------------------------------------------------------
bbh/causal_judgement [exact_match]                0.5775     0.6364     +0.0588

bbh/date_understanding [exact_match]              0.9440     0.9000     -0.0440

bbh/logical_deduction_five_objects [exact_match]     0.7440     0.7320     -0.0120

bbh/navigate [exact_match]                        0.9600     0.9440     -0.0160

gsm8k_cot [flexible-extract]                      0.8650     0.8787     +0.0136
gsm8k_cot [strict-match]                          0.8408     0.8704     +0.0296

ifeval [inst_level_loose_acc]                     0.7446     0.7206     -0.0240
ifeval [inst_level_strict_acc]                    0.6990     0.6595     -0.0396
ifeval [prompt_level_loose_acc]                   0.6728     0.6488     -0.0240
ifeval [prompt_level_strict_acc]                  0.6229     0.5767     -0.0462

mbpp [pass_at_1]                                  0.7000     0.6700     -0.0300
=================================================================================

Average (all metrics)                             0.7610     0.7488     -0.0122

Qwen2.5-Coder-32B: Capas 7, 8, 9 duplicadas una vez

Medido en el conjunto de sondas personalizado (derivado de BBH + estilo EQ-Bench + GSM8K):

PruebaBase+3 capasCambio
Razonamiento (causal + lógica + nav)76.5%94.1%+23%
EQ (inteligencia emocional)92.193.6+1.6%

¿Qué está pasando?

Los transformadores se organizan durante el entrenamiento en circuitos funcionales — unidades de procesamiento de múltiples capas que realizan operaciones cognitivas completas. Estos circuitos son indivisibles: duplicar una sola capa no hace casi nada, pero duplicar el bloque correcto de 3-4 capas le da al modelo un segundo pase a través de su pipeline de razonamiento.

Diferentes modelos tienen diferentes circuitos en diferentes lugares:

  • Devstral-24B (40 capas): circuito de razonamiento en las capas 12-14
  • Qwen2.5-32B (64 capas): circuito de razonamiento en las capas 7-9

Los límites son precisos. Desplazar el bloque una capa en cualquier dirección hace que la mejora desaparezca o se invierta.

El descubrimiento de los "modos"

Diferentes patrones de duplicación crean perfiles cognitivos distintos a partir de los mismos pesos:

PatrónMatemáticasEQCarácter
Pase doble 13-16↑↑↑Especialista en matemáticas
Pase triple 13-16↑↑↑Especialista en EQ
Intercalado 13,13,14,14,15,15,16↑↑↑↓Modo matemático puro
Pase cuádruple 13-16—↑↑Modo EQ, matemáticas neutro

Mismos pesos en disco. Misma VRAM para el modelo base. Solo diferente enrutamiento.

Inicio rápido

Encuentra circuitos en tu modelo

root@kitploit:~
pip install gguf requests tqdm

python sweep.py \
    --model /path/to/model.gguf \
    --llama-server /path/to/llama-server \
    --tmpdir /dev/shm/rys \
    --results pass.jsonl \
    --block-sizes 3 4 5 \
    --stride 1 \
    --start-min 10 --start-max 20 \
    --skip-baseline \
    --port 8099 \
    --server-args --device Vulkan1,Vulkan2

Aplica un circuito conocido

root@kitploit:~
# Duplicate layers 12-14 in Devstral (the result validated above)
python layer_path.py model.gguf improved.gguf \
    -p "0..14,12,13,14,15..39" -v

# Duplicate layers 7-9 in Qwen2.5-32B
python layer_path.py model.gguf improved.gguf \
    -p "0..9,7,8,9,10..63" -v

# Go wild: triple-pass, interleaved, skip layers, whatever you want
python layer_path.py model.gguf experiment.gguf \
    -p "0..16,13,14,15,16,13,14,15,16,17..39" -v

Valida con benchmarks establecidos

root@kitploit:~
# Start the server with modified model
llama-server -m improved.gguf --port 8089 -ngl 99 --device Vulkan1,Vulkan2

# Run lm-evaluation-harness
lm_eval --model local-chat-completions \
    --model_args model=test,base_url=http://localhost:8089/v1/chat/completions,num_concurrent=1,max_retries=3,tokenized_requests=False \
    --tasks gsm8k_cot,ifeval,mbpp,bbh_cot_fewshot_logical_deduction_five_objects \
    --apply_chat_template --limit 50 \
    --output_path ./eval_results

# Compare runs
python compare_eval.py ./eval_base ./eval_improved

Archivos

ArchivoQué hace
sweep.pyHerramienta principal de barrido — encuentra configuraciones óptimas de duplicación de capas
layer_path.pyConstruye cualquier GGUF con una ruta de ejecución de capas explícita
gguf_surgery.pyDuplicación de capas GGUF de bajo nivel (usado por sweep.py)
math_probe.pySonda de aritmética difícil (puntuación de crédito parcial de Ng)
eq_probe.pySonda de inteligencia emocional (estilo EQ-Bench)
reasoning_probe.pyProblemas de palabras de razonamiento causal/lógico/navegación/matemáticas derivados de BBH
compare_eval.pyCompara resultados de lm-evaluation-harness entre ejecuciones
visualize.pyMapas de calor en texto y PNG de los resultados del barrido

Cómo funciona el barrido

  1. Para cada configuración de capa (i, j):

    • La cirugía GGUF crea un modelo donde las capas i..j-1 están duplicadas físicamente
    • El nuevo pase hacia adelante: layers 0..j-1 → layers i..j-1 again → layers j..N-1
    • llama-server carga el modelo modificado
    • Se ejecutan tres sondas: matemáticas, EQ, razonamiento (derivadas de BBH)
    • Las puntuaciones se comparan con la línea base, los resultados se imprimen en vivo
    • El servidor se elimina, el GGUF modificado se borra, siguiente configuración
  2. La estrategia de búsqueda:

    • Pase 1: Bloques grandes (8 capas), paso amplio → encontrar la zona caliente
    • Pase 2: Bloques pequeños (3-5 capas), paso 1 dentro de la zona caliente → encontrar límites exactos
    • Pase 3: Probar configuraciones de múltiples pases, intercaladas y compuestas

Los GGUF modificados se escriben en tmpfs (/dev/shm) y se eliminan después de cada prueba. Los pesos del modelo base permanecen en el disco.

Requisitos

  • Linux con llama.cpp compilado (CPU, CUDA, Vulkan o Metal)
  • Python 3.10+ con gguf, requests, tqdm
  • Suficiente VRAM/RAM para ejecutar el modelo + algunas capas duplicadas adicionales
  • Opcional: lm-eval para validación de benchmarks, matplotlib para gráficos de mapas de calor

Preguntas frecuentes

¿Esto usa más VRAM? Sí, las capas duplicadas son copias físicas en el GGUF. Para 3 capas adicionales en un modelo de 24B, espera ~1.5 GiB adicionales. Un parche de pase hacia adelante de llama.cpp (usando punteros en lugar de copias) eliminaría esto — las contribuciones son bienvenidas.

¿Esto ralentiza la inferencia? Sí, proporcional al número de capas adicionales. 3 capas adicionales en un modelo de 40 capas = ~7.5% más lento. La mejora en el razonamiento vale la pena.

¿Funcionará esto en mi modelo? Probablemente. Lo hemos probado en arquitectura Mistral (Devstral) y arquitectura Qwen2. El trabajo original de Ng fue en Qwen2-72B. Los circuitos existen en todos los modelos transformadores — la pregunta es dónde están y qué tan grandes son. Ejecuta el barrido y descúbrelo.

¿Por qué no ajustar fino en su lugar? Esto es ortogonal al ajuste fino. Puedes hacer ambos. De hecho, los modelos RYS de Ng fueron ajustados posteriormente por otros y encabezaron la tabla de clasificación de HuggingFace. La duplicación de capas cambia la arquitectura; el ajuste fino cambia los pesos. Apílalos.

Créditos

  • David Ng por el método RYS y la idea de que los transformadores tienen neuroanatomía funcional
  • llama.cpp por hacer práctica la inferencia local
  • lm-evaluation-harness por la validación de benchmarks

Licencia

MIT

Descargar herramienta