Skip to content

English · Español

Fase 11 — Teoría de tokenización + implementación de BPE

Requiere: 10 — Inicialización, normalización, residuales Enseña: tokenization · bpe · byte-level · subwords · vocabulary · zipf Salta a cualquier capítulo desde el índice de referencia de fases.

Mapa del capítulo

Preescrito según A12. La teoría y los enunciados del laboratorio son borradores estables; las soluciones se escriben justo a tiempo al abrir la fase.

🇪🇸 Tokenizar es decidir el alfabeto del modelo. Aquí construimos un tokenizer BPE byte-level desde cero, entrenado sobre frases inglesas de conjugación verbal (con sus traducciones al español, §A13). Los merges más frecuentes deberían incluir morfemas como -s, -ed, will, to, he, I.


Objetivo

Borja escribe un tokenizer BPE byte-level en Python puro desde cero, lo entrena sobre un corpus bootstrap de verbos en inglés (más adelante se reentrena con el corpus completo de la Fase 12) y demuestra invertibilidad exacta de ida y vuelta sobre ASCII, acentos en español y emojis. El artefacto estrella de la fase son los 30 merges principales del vocabulario entrenado — prueba legible para humanos de que el corpus dio forma al tokenizer. Se espera ver sufijos (-s, -ed, ing), palabras funcionales (will, to) y marcadores de persona (I, he, you) emergiendo como merges principales.

Orden de lectura

  1. theory/00-motivation.md — por qué la tokenización es el primer compromiso irreversible de cualquier modelo de lenguaje, y por qué el corpus de gramática verbal dirige el diseño del tokenizer.
  2. theory/01-character-word-subword.md — las tres familias de tokenizers; por qué la subpalabra (BPE) gana para nuestro corpus bilingüe de verbos; cuánto nos costaría el OOV.
  3. theory/02-bpe-algorithm.md — los algoritmos de entrenamiento y codificación de BPE, con un ejemplo de juguete totalmente desarrollado sobre frases con verbos en inglés.
  4. theory/03-byte-level-and-unicode.md — bytes vs caracteres; UTF-8 de los acentos españoles (á, ñ, ¿); NFC vs NFD; emojis; la convención de espacio inicial de GPT-2.
  5. lab/00-toy-bpe-by-hand.md — cinco merges sobre un corpus juguete de 5 frases con verbos en inglés, en papel, antes del código.
  6. lab/01-implement-bpe.md — escribe src/minitoken/bpe.py. Train + encode + decode + tests basados en propiedades de ida y vuelta.
  7. lab/02-bpe-on-verb-corpus.md — entrena sobre el corpus bootstrap de verbos (y luego el corpus de la Fase 12) en tres tamaños de vocabulario; produce gráfica de Zipf + 30 merges principales con anotaciones morfológicas.

solutions/ está vacío durante el preescrito — se rellena al abrir la fase.

Definición de hecho (DoD)

Véase PHASE_11_PLAN.md §6. En breve:

  • src/minitoken/{bpe.py, vocab.py} limpio con mypy --strict, con train / encode / decode / save / load.
  • Tests basados en propiedades pasan sobre 1k entradas UTF-8 aleatorias (hypothesis) cubriendo ASCII, rango español y emojis.
  • El vocabulario entrenado sobre el corpus de verbos expone morfología en sus merges principales: -s, -ed, will, to, ing, más al menos 3 verbos enteros como tokens únicos.
  • Gráfica de Zipf de frecuencias de tokens comprometida.
  • Puedes explicar el entrenamiento BPE paso a paso con una traza de 5 merges a mano sobre el corpus juguete de verbos en inglés.

Lo que esta fase intencionadamente NO cubre

  • WordPiece (estilo BERT) — solo encuesta en theory 02.
  • Unigram tokenizer (entrenamiento EM estilo SentencePiece) — solo encuesta.
  • tiktoken o transformers.AutoTokenizer — explícitamente prohibido por la regla dura 4 del §0 de CLAUDE.md (no transformers lib antes de la Fase 24). Construimos primero, luego leemos el código de otros en la Fase 24.
  • Regex de pre-tokenización (el pat de GPT-2 que divide por espacios y puntuación antes de BPE). Operamos sobre bytes en bruto. Se discute en teoría pero no se implementa.
  • Conciencia gramatical a nivel del tokenizer. BPE es estadístico, no gramatical. Fusiona -s porque es frecuente, no porque sea un morfema. El modelo aprende gramática a partir de la Fase 13 (embeddings + attention).
  • El corpus completo de la Fase 12. La Fase 11 usa un corpus bootstrap pequeño (≈ 30 frases con verbos tecleadas a mano en data/raw/bootstrap-en.txt). El corpus completo de 600 formas llega en la Fase 12 y el BPE se reentrena sobre él como elemento final de DoD de la Fase 12.

El alcance de la Fase 11 es el tokenizer BPE byte-level — el puente entre el texto en bruto y los IDs enteros. Nada más.

Lecturas recomendadas

Opcional — enriquece pero no es necesario para aprobar la fase.