Sobre MíQué hagoProyectosLabContacto
  • PYTORCH
  • TRANSFORMERS
  • NLP

Transformer from scratch

Transformer from scratch

Modelo de lenguaje tipo GPT implementado desde cero en PyTorch: atención multi-cabeza, máscara causal y bloques residuales escritos a mano, más un tokenizador byte-pair propio y un estudio de ablaciones. Código en github.com/delcenjo/transformer-from-scratch.

Un modelo de lenguaje tipo GPT escrito desde cero en PyTorch: atención multi-cabeza, máscara causal, bloques residuales y embeddings posicionales a mano, con operaciones básicas en lugar de torch.nn.Transformer. También el tokenizador byte-pair es propio. El objetivo era poder mirar dentro cuando algo falla.

  • Perplejidad val.6.89
  • Sin pos. embeddings8.04
  • TokenizadorBPE propio

Escribirlo para entenderlo

Leer el paper de attention no es lo mismo que implementar el reshape de las cabezas y equivocarte tres veces con las dimensiones. Cada pieza está escrita con operaciones básicas y cubierta por tests, así que la mecánica es visible y se puede tocar sin miedo.

Ablaciones: romper cosas a propósito

El baseline de caracteres alcanza una cross-entropy de validación de 1,93 (perplejidad 6,89). Quitar los embeddings posicionales la sube a 8,04 — sin posiciones, la atención no distingue el orden de los tokens. Y la sorpresa: una sola cabeza de atención dio 6,76, ligeramente mejor que varias, en un modelo de este tamaño.

Lo que me llevo

Ahora, cuando un transformer no converge o un tokenizador parte una palabra donde no debe, tengo un modelo mental de qué pieza mirar. Esa intuición no la daba ningún curso: salió de implementar cada tensor y verlo fallar.

Cuaderno interactivo

Corre Python de verdad en tu navegador vía Pyodide (WebAssembly), sin servidor detrás: la primera carga tarda unos segundos en arrancar el intérprete, y después cada celda se puede volver a ejecutar.

Ablaciones reales y el modelo entrenado generando texto en numpy

Cuaderno de Jupyter ejecutable: Python de verdad corriendo en tu navegador vía Pyodide, sin servidor detrás.

¿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

Próximos proyectos:

Hecho con

PythonPyTorchscikit-learnpandasNumPyJupyterHugging FaceLangChainFastAPIPydanticDockerGitHub ActionsPrometheusGrafanaMLflowPostgreSQLGitGitHubLinuxStreamlitSQLiteAnthropicBashPyPIOllamaPythonPyTorchscikit-learnpandasNumPyJupyterHugging FaceLangChainFastAPIPydanticDockerGitHub ActionsPrometheusGrafanaMLflowPostgreSQLGitGitHubLinuxStreamlitSQLiteAnthropicBashPyPIOllama
hola@jmwebsoluciones.com