Trust, but Trace
EN ES
Serie · 10 de 12 publicadas · 132 min en total

From code to weights:
ML fundamentals for engineers

Ya sabes qué es una tabla de búsqueda, cuánto cuesta un pipeline y qué te da un sistema de tipos. Al pasar a la ingeniería de ML, ese conocimiento te sigue sirviendo, solo que cambia de sitio. Cada parte toma un concepto, lo explica desde la ingeniería, lee un fichero real y señala una sola cosa que no se comporta como en el software.

Siguiente · Parte 11, el

Empieza aquí Qué da por sabido esta serie También lo que a propósito no da por sabido y adónde ir antes si te falta algo.

Léelas en orden

Parte 1/12

Fundamentos de ML

Un modelo no lee texto: lo que el tokenizador decide por ti

El tokenizador parece ir delante del modelo, pero va dentro. Leo en el BPE de tiktoken qué fija antes del primer peso: vocabulario, coste y límite de contexto.

11 min
Parte 2/12

Fundamentos de ML

Un embedding es una tabla de consulta, y todo lo demás es cómo se rellena

Es la fila de una matriz indexada por id. La ciencia está en cómo se rellena; la ingeniería, en que no hay migración de esquema: otro modelo invalida tu índice.

13 min
Parte 3/12

Fundamentos de ML

Las formas son el sistema de tipos del ML, y nadie las comprueba por ti

[B, T, d] es una firma de función que el runtime nunca verifica, y por eso un eje equivocado solo da error cuando los tamaños difieren. Si coinciden, la operación se resuelve por broadcasting, devuelve números plausibles y el bug llega a producción.

14 min
Parte 4/12

Fundamentos de ML

La atención es una media ponderada aprendida y su coste está en el cuadrado

Un diccionario difuso cuyos pesos calcula el modelo a partir de su propia entrada. La idea es barata, pero la matriz de pesos es de T por T, así que el coste lo ponen los datos y en el código no se ve.

15 min
Parte 5/12

Fundamentos de ML

Un bloque de transformer son seis tensores y un bus: léelo como un pipeline

Leído línea a línea y con las formas al margen, un bloque de transformer son seis tensores sobre un flujo residual. Dos tercios de sus pesos están en la red feed-forward, y a medida que crece el contexto el coste se desplaza a la atención.

14 min
Parte 6/12

Fundamentos de ML

GPT-2 es el transformer más cinco decisiones, y la inferencia es otro programa

Un mismo artefacto ejecuta dos programas: el entrenamiento hace una sola pasada hacia delante, en paralelo, sobre la secuencia, y la generación es un bucle secuencial con caché. Los pesos son los mismos y los bugs, distintos.

13 min
Parte 7/12

Fundamentos de ML

De GPT-2 a Llama: cuatro cambios y el motivo de cada uno

Posiciones rotatorias, RMSNorm, feed-forward con puerta y grouped-query attention son cuatro retoques locales que se justifican más con mediciones que con teoría, y cada uno queda grabado en los pesos.

13 min
Parte 8/12

Fundamentos de ML

Pérdida y gradientes sin fórmulas: la retropropagación es recorrer un grafo

La retropropagación recorre un grafo hacia atrás aplicando la regla de la cadena. Leída como código, explica por qué los gradientes se desvanecen o explotan y por qué un bug en el gradiente se queda en una curva algo torcida, sin stack trace.

12 min
Parte 9/12

Fundamentos de ML

La tasa de aprendizaje es el hiperparámetro que rompe producción

Adam y el schedule son decisiones de ingeniería que las matemáticas no dictan. Nada valida la configuración: un valor malo diverge a las 30 horas y tumba la ejecución.

12 min
Parte 10/12

Fundamentos de ML

El fine-tuning es mala herramienta para añadir conocimiento: tres fases de entrenamiento y el atajo de bajo rango

El preentrenamiento y el fine-tuning comparten pérdida y se distinguen por una máscara. LoRA entrena dos matrices estrechas al lado de los pesos congelados. Los hechos que se enseñan con fine-tuning entran despacio y traen una confianza inmerecida: mi modelo dio Moscú como capital de un país que no existe.

15 min
Parte 11/12

Fundamentos de ML

Servir un modelo es un problema de memoria: prefill, decodificación y la caché KV

La decodificación lee todos los pesos en cada token, así que al servir un modelo te quedas sin ancho de banda de memoria mucho antes que sin cómputo. En mi portátil, leer los pesos se llevó el 84 % de cada paso con una sola secuencia, y un modelo híbrido pagó 5,5 ms por cada secuencia de más, cuando la aritmética predecía menos de 0,5. Cerca de la capacidad, el primer token tardaba segundos en llegar, y a media carga el percentil 99 de esa espera fue más de diez veces mayor en unas ejecuciones que en otras con casi la misma tasa.

Sale el
Parte 12/12

Fundamentos de ML

A gran escala manda la memoria: precisión mixta y los tres paralelismos

He medido en un portátil adónde van los bytes de un entrenamiento: con precisión mixta seguían siendo 16 bytes por parámetro, la mitad de las activaciones eran matrices de atención y FSDP dividió por ocho el estado de cada proceso a cambio de 1,5 veces el tráfico del paralelismo de datos simple.

Sale el