
📺 Vídeo de estudio recomendado hoy: https://www.youtube.com/watch?v=quh7z1q7-uc
Construyendo LLMs desde cero: De la teoría al código con Sebastian Rashka
Aprender a usar un modelo de lenguaje es sencillo, pero comprender su arquitectura interna requiere ensuciarse las manos con código y matemáticas. En este taller técnico, transformamos texto plano en un modelo inteligente capaz de generar respuestas coherentes y seguir instrucciones humanas complejas.
Pregunta central: ¿Cuáles son los pasos fundamentales para implementar, entrenar y ajustar un modelo de lenguaje a gran escala partiendo desde una base de código vacía?
Puntos clave
- El ciclo completo: desde la tokenización de datos hasta el despliegue de una API privada.
- Arquitectura GPT: implementación de bloques Transformer y mecanismos de atención.
- Carga de pesos: cómo mapear parámetros de modelos pre-entrenados de OpenAI a una arquitectura personalizada.
- Eficiencia con LoRA: ajuste fino de instrucciones optimizando solo una fracción de los parámetros totales.
⏱️ Tiempo de lectura: aprox. 15 minutos · Te ahorra unos 150 minutos frente a ver el vídeo.
¿Quieres tomar notas mientras ves el vídeo? Haz clic en la imagen de abajo y deja que AI Notebook extraiga los puntos clave por ti 👇
La base de todo: Procesamiento de datos y tokenización
Transformando palabras en números
La tokenización es el primer paso crítico en la construcción de cualquier LLM. Sin convertir el lenguaje humano en representaciones numéricas que la máquina pueda procesar, es imposible alimentar cualquier arquitectura neuronal moderna.
El proceso comienza dividiendo el texto original en unidades llamadas tokens, que pueden ser palabras completas o fragmentos de sub-palabras, para luego mapearlas a identificadores numéricos únicos. Estos IDs se transforman posteriormente en vectores continuos o embeddings, lo que permite que el modelo capture relaciones semánticas complejas entre los términos en un espacio multidimensional de alta densidad matemática y computacional. Sin esta traducción precisa, el modelo no tendría forma de cuantificar la distancia entre conceptos similares como “rey” y “reina”.
Sebastian destaca que, para aplicaciones reales, el algoritmo Byte Pair Encoding (BPE) es superior a la simple división por espacios. BPE permite manejar palabras desconocidas dividiéndolas en sub-unidades frecuentes, evitando así el error de “token desconocido” que plagaba a los modelos antiguos.

💡 Profundizando
Q: ¿Por qué no usar simplemente un token por cada palabra del diccionario?
A: Porque el vocabulario sería infinito y el modelo no podría procesar palabras nuevas o errores ortográficos. BPE soluciona esto usando fragmentos de palabras.
Q: ¿Qué función cumple el token <|endoftext|>?
A: Actúa como un delimitador que indica al modelo dónde termina un documento y dónde empieza otro durante el entrenamiento, evitando que mezcle contextos inconexos.
Arquitectura y Mecánica de Generación
El interior del bloque Transformer
La arquitectura GPT se basa en la repetición de bloques Transformer que procesan la información de manera jerárquica. Cada bloque contiene capas de atención normalizada y redes neuronales de alimentación hacia adelante que refinan la comprensión del contexto por parte del modelo.
Un LLM es, en esencia, una máquina probabilística diseñada para predecir el siguiente token. Cuando le damos un texto, el modelo genera una distribución de probabilidad sobre todo su vocabulario para la siguiente posición. El proceso es iterativo: el modelo predice una palabra, la añade a su entrada original y vuelve a procesar todo el conjunto para generar la palabra posterior, creando así un bucle de retroalimentación continua.
Para generar texto coherente, no basta con elegir siempre el token más probable. Se utilizan técnicas como el muestreo de temperatura o Top-K para introducir variabilidad y evitar que el modelo entre en bucles repetitivos o monótonos.

💡 Profundizando
Q: ¿Qué son los ‘logits’ en la salida del modelo?
A: Son puntuaciones numéricas crudas antes de ser convertidas en probabilidades. Un logit alto indica una fuerte preferencia por un token específico en el vocabulario.
Q: ¿Cómo afecta el ‘Context Length’ al rendimiento?
A: Define cuántos tokens previos puede “recordar” el modelo. A mayor longitud, más memoria de GPU se requiere, ya que la atención crece de forma cuadrática.
Entrenamiento y Carga de Pesos Reales
Del entrenamiento desde cero a los pesos de OpenAI
El pre-entrenamiento es la fase más costosa, donde el modelo lee trillones de palabras para aprender gramática, hechos y razonamiento básico. En este taller, Sebastian demuestra cómo un modelo pequeño puede aprender de una sola historia corta, aunque su capacidad de generalización sea limitada.
Mapear los pesos pre-entrenados de OpenAI (como los de GPT-2) a una arquitectura propia es una tarea tediosa pero fundamental. Dado que los nombres de las variables suelen variar entre frameworks como TensorFlow y PyTorch, es necesario realizar un “puente” manual para asegurar que cada matriz de pesos se coloque en la capa correcta del modelo receptor. Si una sola matriz se carga incorrectamente, el modelo solo producirá ruido aleatorio en lugar de lenguaje.
Una vez cargados los pesos, el modelo pasa de ser una cáscara vacía a una herramienta potente. Esto permite a los desarrolladores aprovechar miles de horas de cómputo previo sin tener que gastar fortunas en infraestructura de entrenamiento inicial.

Ajuste Fino de Instrucciones con LoRA
Especialización del modelo sin arruinar el presupuesto
El ajuste fino (Fine-tuning) es lo que convierte a un modelo base en un asistente útil. Mientras que el modelo base tiende a completar frases de forma genérica, el modelo ajustado aprende a responder preguntas y seguir órdenes específicas siguiendo formatos como el de “Alpaca”.
Para optimizar este proceso, se utiliza LoRA (Low-Rank Adaptation). En lugar de actualizar los miles de millones de parámetros del modelo, LoRA añade pequeñas matrices adicionales que capturan el aprendizaje nuevo. Esto reduce drásticamente el uso de memoria VRAM y permite realizar el ajuste fino en hardware de consumo, como una sola GPU doméstica, manteniendo casi la misma calidad que un ajuste completo.
Al final, evaluar el modelo es clave. Sebastian propone usar otros modelos más potentes (como GPT-4) para puntuar las respuestas del modelo ajustado, creando una métrica objetiva de mejora en la calidad de las respuestas.

💡 Profundizando
Q: ¿Por qué es mejor LoRA que el ajuste fino tradicional?
A: Porque solo entrenas una fracción (menos del 1%) de los parámetros, lo que ahorra tiempo, dinero y permite guardar los cambios en archivos muy pequeños.
Q: ¿Qué es el formato de prompt “Alpaca”?
A: Es una estructura que separa claramente la Instrucción, el Input (opcional) y la Respuesta, ayudando al modelo a entender qué parte del texto debe generar.
Conclusiones clave
El desarrollo de LLMs ha pasado de ser un secreto de laboratorios corporativos a una disciplina accesible para ingenieros dedicados. Comprender que estos modelos son esencialmente predictores de tokens entrenados mediante el desplazamiento de datos permite desmitificar la “inteligencia” detrás de herramientas como ChatGPT. La arquitectura Transformer sigue siendo el estándar de oro, pero su implementación eficiente requiere un control total sobre el flujo de datos y la gestión de pesos.
La democratización de técnicas como LoRA y el uso de librerías como LitGPT permiten que proyectos personalizados alcancen niveles de rendimiento profesionales. La clave no está solo en el tamaño del modelo, sino en la calidad de los datos de instrucción y la precisión del ajuste fino. Al final del día, construir un LLM desde cero no es solo un ejercicio académico, sino la mejor forma de prepararse para la próxima frontera de la inteligencia artificial.
Preguntas y Respuestas
Q1: ¿Es posible entrenar un LLM útil en una computadora personal?
A: Para el pre-entrenamiento desde cero, no; se necesitan clústeres de GPUs. Sin embargo, para el ajuste fino (fine-tuning) usando LoRA, una GPU moderna de consumo es suficiente para especializar modelos de hasta 7 u 8 mil millones de parámetros.
Q2: ¿Cuál es la diferencia entre un modelo base y un modelo de chat?
A: El modelo base es un completador de texto (si escribes “Había una vez”, seguirá la historia). El modelo de chat ha sido ajustado con instrucciones para responder preguntas y actuar como asistente.
Q3: ¿Por qué Sebastian prefiere Tiktoken sobre otros tokenizadores?
A: Por su velocidad. Está implementado en Rust y es significativamente más rápido que las versiones originales de OpenAI o las implementaciones estándar de Hugging Face, lo que acelera el entrenamiento.
Q4: ¿Qué hace que el mecanismo de atención sea tan especial?
A: Permite que cada palabra en una secuencia “mire” a todas las demás palabras para entender el contexto. Por ejemplo, en “El banco estaba cerrado”, la atención ayuda a decidir si se refiere a una entidad financiera o a un asiento.
Q5: ¿Cómo se evita que un modelo genere texto infinito?
A: Durante el entrenamiento, el modelo aprende a generar un token especial de “fin de texto” (<|endoftext|>). Cuando el software de inferencia detecta este token, detiene la generación automáticamente.
Q6: ¿Qué tan importantes son los hiperparámetros en el ajuste fino?
A: Son críticos. Un learning rate demasiado alto puede causar que el modelo “olvide” lo que aprendió en el pre-entrenamiento (olvido catastrófico), mientras que uno muy bajo no producirá cambios notables en su comportamiento.
Q7: ¿Qué herramientas recomienda Sebastian para empezar?
A: PyTorch para la base del código, Lightning Studios para el entorno de cómputo y LitGPT para acceder a implementaciones optimizadas de los modelos más modernos.
