Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4

힘센캥거루
2025년 11월 26일
2
14

Hoy es 26 de noviembre, así que si leo un capítulo al día, habré completado el reto.

No sé si será posible con las interrupciones del primero y del segundo.

1. Dummy Transformer

Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4-1

Mientras creaba un modelo GPT, vi que en PyTorch se podía importar un bloque de Transformer dummy.

Al investigar, descubrí que dentro de pytorch.nn ya había varios modelos de Transformer implementados.

A este modelo de Transformer se le llama dummy porque, aunque la estructura del modelo es la misma, todavía no ha sido entrenado.

2. Normalización

Si, entre los valores que entran en un bloque Transformer, una de las dimensiones es demasiado grande, los datos se sesgan en esa dirección.

Por lo tanto, se transforman los valores para que la media sea 0 y la varianza 1.

Y en la Feed Forward Network se amplía la dimensión con una capa Linear y luego se aplica una transformación no lineal.

En este momento se utilizan funciones de activación no lineales como ReLU o GELU.

Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4-2

Se dice que GELU es más lineal que ReLU, por lo que los parámetros se ajustan mejor.

Y en cada bloque se aumenta la dimensión usando una función Linear y luego se vuelve a reducir.

Al aumentar la dimensión, es posible una exploración no lineal más rica.

Por ejemplo, si tenemos una manzana, una naranja y una zanahoria, sería como probar a cocinarlas de varias formas: escaldarlas, asarlas, picarlas, mezclarlas, etc.

Y después, reunir los platos terminados y extraer solo lo esencial para volver a colocarlo todo en la dimensión original.

Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4-3

3. Atajos

El entrenamiento comienza donde se produce la pérdida, y desde ahí se rastrea hacia atrás.

Por ejemplo, supongamos que cae agua desde el segundo piso.

Entonces se iría subiendo al tercer, cuarto y quinto piso, buscando hacia atrás de dónde se está filtrando el agua.

A este proceso se le llama retropropagación (backpropagation).

Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4-4

Pero en un modelo construido como el de arriba, el gradiente se va desvaneciendo cada vez que pasa por una capa lineal.

Que el gradiente se desvanezca significa que, en el proceso de retropropagación, en las capas profundas prácticamente no se produce aprendizaje, por lo que apilar muchas capas deja de tener sentido.

Por ello, en cada capa lineal se suma la entrada y la salida, proporcionando un camino alternativo para evitar el desvanecimiento del gradiente.

Creo que es más fácil de entender desde el punto de vista matemático.

Proceso residual: y = x + F(x)
Proceso backward: dL/dx = dL/dy * (1 + dF/dx)
Gradiente final: dL/dy * (1 + dF/dx)

Como en el proceso backward siempre se garantiza el valor 1 que se suma al gradiente de cada capa, el gradiente de cada capa no se desvanece.

De este modo es posible ayudar a que el proceso de entrenamiento sea más eficaz.

4. Crear un modelo GPT

Ahora se conecta un modelo de atención a este modelo dummy que hemos construido.

Por último, se permite que este modelo de atención se repita varias veces y se pasa por un proceso en el que los tokens de salida se vuelven a decodificar.

Aprendiendo a crear un LLM desde cero – Reseña del capítulo 4-5

5. Reseña

Al principio el contenido parecía ligero, pero cuanto más avanzaba, más abrumador se volvía.

Visto en código resulta difícil, pero al aprenderlo mediante metáforas y símbolos no fue tan complicado.

Ahora los tiempos han cambiado y es más importante la comprensión que memorizar el contenido en sí.

Si solo memorizas, no puedes crear nada nuevo, pero si entiendes, con la ayuda de la inteligencia artificial puedes completar tu propio GPT.

No queda mucho tiempo, pero aun así intentaré esforzarme por comprender lo máximo posible.

관련 글

Reseña de lectura y experiencia del desafío del capítulo 7 de "밑바닥부터 만들면서 배우는 LLM"
Reseña de lectura y experiencia del desafío del capítulo 7 de "밑바닥부터 만들면서 배우는 LLM"
El contenido del capítulo 7 trata sobre el proceso de ajustar finamente el modelo para que siga instrucciones.Es hacer que responda como se espera ant...
Reseña de lectura del capítulo 6 de "Aprendiendo LLM desde cero"
Reseña de lectura del capítulo 6 de "Aprendiendo LLM desde cero"
El capítulo 6 trata sobre el fine-tuning para clasificación.El ejemplo que aparece es la creación de un clasificador de spam.Como el clasificador de s...
Reseña de lectura del capítulo 5 de «Aprender LLM construyéndolo desde cero»
Reseña de lectura del capítulo 5 de «Aprender LLM construyéndolo desde cero»
Hoy es 14 de diciembre.En realidad, el período del desafío ya terminó hace 2 semanas, pero aun así no podía renunciar a escribir la reseña.Porque esto...
Reseña de la lectura del capítulo 3 de LLM aprendiendo desde cero
Reseña de la lectura del capítulo 3 de LLM aprendiendo desde cero
Después de derramar agua sobre mi MacBook, entré en crisis y perdí alrededor de 3 a 4 días. Ahora que lo pienso, debería haber hecho algo, pensando que mi MacBook ya estaba arruinada y que la mandaría a reparar de todas formas. Aunque estoy un poco atrasado, quiero dejar mi reseña del capítulo 3 porque creo que debo continuar hasta el final. 1. Mecanismo de atención Capítulo 3...
Reseña del capítulo 2 de LLM construyendo desde cero
Reseña del capítulo 2 de LLM construyendo desde cero
Ya es la segunda semana participando en el desafío. Hasta ayer no había terminado el capítulo 2, pero aprovechando un retiro de 1 noche y 2 días, logré avanzar hasta la medianoche codificando. 1. Contenido. El contenido del capítulo 2 se centró en la tokenización de palabras, codificación, decodificación y vectores de incrustación. Ya me había familiarizado con crear un codificador one-hot, pero el contenido de los vectores de incrustación era nuevo para mí...
Recomendación de OCR para MacBook
Recomendación de OCR para MacBook
Parece que he probado todos los OCR disponibles para reconocer informes médicos de estudiantes. Probé Tesseract, EasyOCR, PaddleOCR y otros, pero ninguno ofrecía un rendimiento satisfactorio con coreano. Sin embargo, recientemente encontré una biblioteca de Python que utiliza la función de Texto en Vivo de MacBook...

댓글을 불러오는 중...