Skip to content

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-cost Salta 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

  1. theory/00-motivation.md — por qué importa el muestreo (sampling), la forma del bucle de decode.
  2. theory/01-temperature.md — matemática de la temperatura y sus límites.
  3. theory/02-top-k-and-top-p.md — estrategias de truncado.
  4. theory/03-cost-model.md — intensidad aritmética en tiempo de decode; motivación para la KV cache.
  5. lab/00-greedy.md — implementa greedy decoding.
  6. lab/01-temperature-sweep.md — entropía como función de τ.
  7. lab/02-top-k-and-top-p.md — samplers con truncado.
  8. 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 --strict limpio.
  • 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.