English · Español
Fase 21 — Internos de inferencia y muestreo (sampling)¶
Requiere: 20 — Harness de evaluación Enseña:
sampling·temperature·top-k·top-p·decode-costSalta a cualquier capítulo desde el índice de referencia de fases.
Mapa del capítulo¶
🇪🇸 Después de entrenar el Mini-GPT, ¿cómo sacamos texto de él? Esta fase es la rendija del decoding: dado un modelo entrenado y un prompt, ¿cómo elegimos cada token? Argmax, temperatura, top-k, nucleus. Y la cuenta básica de coste — un forward por token — que motiva la KV cache de Fase 22.
Anclas: LYNX_CORTEX.md §4 / PHASE 21, PHASE_21_PLAN.md, LYNX_CORTEX_ADDENDUM.md §A13.
Objetivo¶
Las fases 18–20 entrenaron y evaluaron el Mini-GPT sobre el corpus de verbos §A13. La Fase 21 cubre la ruta de inferencia: dado el modelo entrenado y un prompt como "Tomorrow she", ¿cómo extraemos tokens de salida?
Al cierre de la fase, Borja sabe: (a) implementar greedy decoding, temperatura, top-k y nucleus (top-p) desde cero en src/minimodel/sampling.py; (b) explicar el efecto matemático de la temperatura sobre la distribución softmax; © medir la diversidad de muestreo sobre prompts de completado de verbos; (d) razonar sobre el coste del decode (un forward por token generado), que prepara el terreno para la KV cache de la Fase 22.
Lo que vas a construir¶
Un módulo de muestreo (sampling) autocontenido:
def sample(model, prompt: list[int], *, max_tokens: int, seed: int,
strategy: SamplingStrategy) -> list[int]:
"""Returns the generated tokens (excluding the prompt)."""
Donde SamplingStrategy es uno de Greedy, Temperature(τ), TopK(k, τ), TopP(p, τ), o una composición. Cada estrategia es una función pura de los logits.
Lo que esta fase NO cubre¶
- KV cache. Fase 22. La Fase 21 recomputa el forward completo en cada paso (lento pero pedagógicamente limpio).
- Beam search. Mejor en producción para tareas de traducción; excesivo para nuestro corpus pequeño.
- Speculative decoding. Fase 36.
- Salida en streaming / decode por chunks. Capa de serving de la Fase 33.
- Tokens de parada vía entrenamiento (
<eos>aprendido). Las Fases 12/18 se ocuparon del token EOS; la Fase 21 simplemente lo usa como señal de terminación.
Orden de lectura¶
theory/00-motivation.md— por qué importa el muestreo (sampling), la forma del bucle de decode.theory/01-temperature.md— matemática de la temperatura y sus límites.theory/02-top-k-and-top-p.md— estrategias de truncado.theory/03-cost-model.md— intensidad aritmética en tiempo de decode; motivación para la KV cache.lab/00-greedy.md— implementa greedy decoding.lab/01-temperature-sweep.md— entropía como función de τ.lab/02-top-k-and-top-p.md— samplers con truncado.lab/03-diversity-vs-accuracy.md— diversidad de muestreo sobre completados de verbos.
solutions/ se rellena al abrir la fase.
Definition of Done¶
Ver PHASE_21_PLAN.md §6 (en la raíz del repo). En resumen:
- Las 4 funciones de sampler implementadas en
src/minimodel/sampling.py;mypy --strictlimpio. - Property tests: top-p=1.0 ≡ vainilla; greedy ≡ límite cuando τ→0; la entropía es monótona en τ.
- Curva de diversidad-vs-corrección guardada.
Siguiente: theory/00-motivation.md
Lecturas recomendadas¶
Opcional — enriquece pero no es necesario para aprobar la fase.
- 📄 The Curious Case of Neural Text Degeneration — Holtzman et al. · 2019. el paper que introdujo el sampling nucleus (top-p).