| # PAMPAr — Plan de Evolución | |
| > Plan aprobado: **Option B — "Staged Physics"** | |
| > Budget total: **$300-500 USD** | |
| > Modelo: PamparV3, 108.3M params, vocab 48K | |
| --- | |
| ## Objetivo | |
| Transformar PamparV3 de un modelo que solo conoce patrones Python (38% eval) | |
| a un **motor de razonamiento multi-lenguaje** que usa documentación de referencia | |
| para resolver problemas en cualquier dominio. | |
| ### Métricas target | |
| | Métrica | Actual | Target | | |
| |---------|--------|--------| | |
| | Python eval | 6/16 (38%) | 70%+ | | |
| | Multi-language | 0% | 50%+ | | |
| | Doc consultation (RAG) | 0% | 60%+ | | |
| | Debugging | 0% | 50%+ | | |
| --- | |
| ## Fase 1 — Continual Pretrain: "Textbook Physics" | |
| **Objetivo**: inyectar los axiomas fundamentales de razonamiento con referencia. | |
| ### Datos (~540K-640K tokens) | |
| 6 pilares de axiomas, cada uno con ~90K-100K tokens de texto tipo textbook: | |
| | Pilar | Contenido | Fuente | | |
| |-------|-----------|--------| | |
| | **Lógica y razonamiento** | Proposiciones, inferencia, truth tables, deducción | Generado + Wikipedia | | |
| | **Estructuras de datos** | Arrays, trees, graphs, hashmaps — cross-language | Generado + docs oficiales | | |
| | **Patrones de código** | Design patterns, idioms en Python/JS/Rust/C | Generado + libros open | | |
| | **Comprensión de docs** | Cómo leer una API reference, man page, docstring | MDN, Python docs, Rust Book | | |
| | **Debugging** | Stack traces, error messages, bisección, logging | Generado + StackOverflow curado | | |
| | **Multi-language syntax** | Equivalencias Python↔JS↔Rust↔C↔Bash↔SQL | Generado + Rosetta Code | | |
| ### Formato | |
| ``` | |
| <textbook> | |
| ## Capítulo: [tema] | |
| [Explicación clara del concepto] | |
| ### Ejemplo | |
| [Código con comentarios] | |
| ### Ejercicio resuelto | |
| [Problema → razonamiento step-by-step → solución] | |
| </textbook> | |
| ``` | |
| ### Costo estimado: $30-60 | |
| - Distilación desde GPT-4o/Claude para generar textbooks | |
| - ~6 scripts de generación, uno por pilar | |
| - Validación manual de quality (sampling 5%) | |
| ### Hardware | |
| - Generación de datos: API calls (local) | |
| - Continual pretrain: **RunPod A100 40GB** (~2-4 horas) | |
| --- | |
| ## Fase 2 — SFT: "Chain-of-Thought con Referencia" | |
| **Objetivo**: enseñar al modelo a usar documentación de referencia para resolver problemas. | |
| ### Datos (~20K ejemplos) | |
| | Categoría | Ejemplos | Descripción | | |
| |-----------|----------|-------------| | |
| | Python + ref | 5K | Problemas con snippet de docs como contexto | | |
| | JavaScript + ref | 3K | DOM, Node.js, ES6+ con MDN como referencia | | |
| | Rust + ref | 2K | Ownership, traits, lifetimes con Rust Book | | |
| | SQL + ref | 2K | Queries con schema como referencia | | |
| | Bash/CLI + ref | 1K | Comandos con man pages como referencia | | |
| | Debugging | 3K | Stack traces → diagnóstico → fix | | |
| | Cross-language | 2K | "Traducir" lógica entre lenguajes | | |
| | RAG-grounded | 2K | Preguntas que requieren buscar en docs primero | | |
| ### Formato SFT | |
| ```json | |
| { | |
| "instruction": "[PROBLEMA] Implementar un servidor HTTP básico", | |
| "reference": "[REFERENCIA] Fragmento de docs de http.server de Python...", | |
| "reasoning": "[RAZONAMIENTO] 1. Necesito importar http.server\n2. Crear handler...\n3. Bind al puerto...", | |
| "output": "[SOLUCIÓN] import http.server\n..." | |
| } | |
| ``` | |
| ### Costo estimado: $110-150 | |
| - Distilación masiva desde GPT-4o/Claude | |
| - 20K ejemplos × ~$0.006/ejemplo promedio | |
| - Quality filter: score > 0.7 de auto-evaluación | |
| ### Hardware | |
| - Generación de datos: API calls (local) | |
| - SFT: **RunPod A100 40GB** (~4-8 horas) | |
| --- | |
| ## Fase 3 — Corrección: "GhidraProbe + NeuroTrainer" | |
| **Objetivo**: corregir routing y pesos usando diagnóstico local. | |
| ### Proceso | |
| 1. Correr `eval_v3.py` para identificar categorías débiles | |
| 2. GhidraProbe analiza activaciones en ejemplos fallidos | |
| 3. NeuroTrainer aplica correcciones targeted: | |
| - LLAVES: ajustar reglas INT8 para tokens multi-language | |
| - Routing: corregir `terr_acts` donde el Tálamo asigna mal | |
| - Pesos: mini-SFT de 50-100 steps en categorías fallidas | |
| ### Costo: $0 | |
| - 100% local en GTX 1650 | |
| - ~2 horas por ronda de corrección | |
| - 3-5 rondas estimadas | |
| --- | |
| ## Timeline estimado | |
| | Fase | Duración | Costo | Output | | |
| |------|----------|-------|--------| | |
| | Fase 1 — Pretrain data | 1-2 semanas | $30-60 | ~600K tokens textbook | | |
| | Fase 1 — Training | 1 día RunPod | incluido | Checkpoint pretrained | | |
| | Fase 2 — SFT data | 2-3 semanas | $110-150 | ~20K SFT examples | | |
| | Fase 2 — Training | 1 día RunPod | incluido | Checkpoint SFT | | |
| | Fase 3 — Correction | 1 semana | $0 | Checkpoint final | | |
| | **Total** | **5-7 semanas** | **$160-235** | **Motor de razonamiento** | | |
| --- | |
| ## Pre-requisitos (Blocks 2-3) | |
| Antes de empezar el training, necesitamos limpiar y preparar el código: | |
| ### Block 2 — Cleanup de código muerto | |
| Scripts que importan módulos v2 eliminados (borrar con backup a `_archive/`): | |
| - `scripts/aprender_solo.py` | |
| - `scripts/train.py` | |
| - `scripts/train_cerebral.py` | |
| - `scripts/destilar.py` | |
| - `scripts/evaluate_v2.py` | |
| - `scripts/generar_curriculum.py` | |
| - `scripts/smoke_test_viaje.py` | |
| - `scripts/test_llaves.py` | |
| Scripts mixtos v2/v3 rotos (borrar con backup): | |
| - `scripts/benchmark.py` | |
| - `scripts/probar_modelo.py` | |
| - `scripts/eval_honesta.py` | |
| Módulos huérfanos: | |
| - `pampar/training/` — no importado por nada | |
| ### Block 3 — Refactoring para multi-language | |
| | Archivo | Cambio | | |
| |---------|--------| | |
| | `zonas.py` | Agregar keywords JS/Rust/C/Bash/SQL a ZONAS | | |
| | `llaves.py` | Expandir `clasificar_token()` para multi-language | | |
| | `clasificador.py` | Generalizar `_calcular_densidad()` más allá de Python | | |
| | `ejecutar_codigo.py` | Agregar soporte para Node.js, Bash | | |
| | `config.py` | Extraer `TOKENIZER_PATH` como constante compartida | | |
| --- | |
| ## Checkpoints esperados | |
| | Nombre | Fase | Descripción | | |
| |--------|------|-------------| | |
| | `v3_ghidra_v9.pt` | Actual | Score 89, 6/16 (38%) — baseline | | |
| | `v3_pretrain_f1.pt` | Fase 1 | Post continual pretrain | | |
| | `v3_sft_f2.pt` | Fase 2 | Post SFT multi-language | | |
| | `v3_corrected_f3.pt` | Fase 3 | Post GhidraProbe correction — target final | | |
| --- | |
| ## Notas | |
| - **Arquitectura LOCKED**: no tocar la grilla 4×5, GQA, SwiGLU, LLAVES 80/20 | |
| - **Backups siempre**: antes de borrar/refactorizar → `_archive/` | |
| - **RunPod**: A100 40GB para fases 1 y 2, el código de `cloud/runpod/` ya existe | |
| - **Evaluación**: `scripts/eval_v3.py` como benchmark consistente entre fases | |