Lo que aprendí implementando un transformer desde cero
Atención multi-cabeza, máscara causal y un tokenizador BPE escritos a mano en PyTorch, sin torch.nn.Transformer. Tres lecciones que ningún curso me había dado, incluida una sorpresa en las ablaciones.

Llevaba meses usando transformers a través de librerías y sabiendo explicar la atención de memoria: queries, keys, values, softmax, listo. Entonces intenté escribir uno desde cero en PyTorch — sin torch.nn.Transformer, sin tokenizador externo — y descubrí cuánto de esa explicación era memoria y cuánto era comprensión. Spoiler: el reshape de las cabezas me salió mal tres veces.
Lección 1: las dimensiones son el examen de verdad. La atención multi-cabeza es conceptualmente simple y mecánicamente traicionera: proyectar, partir en cabezas, transponer, atender, volver a juntar. Cada paso es un reshape donde puedes equivocarte en silencio — el código corre, las shapes cuadran de casualidad, y el modelo simplemente aprende peor. Escribir los tests de forma (y de contenido: que la máscara causal de verdad impida mirar al futuro) me enseñó más atención que releer el paper.
Lección 2: el tokenizador es la mitad del modelo. Escribir byte-pair encoding a mano — contar pares, fusionar el más frecuente, repetir — desmitifica por qué los LLMs parten las palabras donde las parten, por qué los números se tokenizan raro y por qué cambiar de tokenizador rompe un modelo entrenado. Ahora, cuando un conteo de tokens no me cuadra, sé exactamente qué está pasando debajo.
Lección 3: romper cosas a propósito enseña más que entrenarlas. El estudio de ablaciones dio el mejor momento del proyecto. Quitar los embeddings posicionales subió la perplejidad de validación de 6,89 a 8,04 — esperado: sin posiciones, la atención no distingue el orden. La sorpresa fue la otra: con una sola cabeza de atención el modelo dio 6,76, ligeramente mejor que con varias. A este tamaño de modelo y de datos, las cabezas extra eran capacidad desaprovechada. Leer eso en un paper es una cosa; verlo en tu propia tabla de resultados, otra.
Lo que me llevo. No es el modelo — un GPT de juguete sobre texto de dominio público no le sirve a nadie. Es el modelo mental: cuando algo no converge, cuando el sampling degenera, cuando un fine-tuning hace cosas raras, ahora tengo una imagen concreta de qué pieza puede estar fallando y cómo comprobarlo. Esa intuición no venía en ningún curso de los que hice; salió de implementar cada tensor y verlo fallar.
¿Conectamos?
Hablemos: feedback, colaboración o una oportunidad.
Puedes escribirme por un proyecto, una duda técnica, para darme feedback o por unas prácticas o un primer puesto junior. Respondo siempre.
Escríbeme

