CS336: Modelado de lenguaje desde cero
(cs336.stanford.edu)- Los modelos de lenguaje son la base de las aplicaciones modernas de NLP y abren un nuevo paradigma para abordar diversas subtareas con un solo sistema de propósito general
- Este curso hace que implementes directamente todo el proceso de desarrollo de un modelo de lenguaje, desde la recolección y limpieza de datos para preentrenamiento hasta la construcción del Transformer, el entrenamiento y la evaluación previa al despliegue
- Las tareas comienzan con la implementación de tokenizadores, arquitectura del modelo y optimizadores, y se expanden hacia optimización en GPU, una implementación en Triton de FlashAttention2 y código de entrenamiento distribuido
- Para cursarlo se requiere dominio de Python e ingeniería de software, PyTorch, conceptos de sistemas como la jerarquía de memoria, y conocimientos de cálculo, álgebra lineal, probabilidad, estadística y machine learning
- Es una clase práctica de 5 unidades centrada en implementación; limita la referencia a código existente y la resolución directa con LLM, y recomienda depurar en CPU antes de entrenar y hacer benchmarks en GPU
Objetivos y alcance del curso
- Los modelos de lenguaje son la piedra angular de las aplicaciones modernas de procesamiento de lenguaje natural (NLP) y abren un nuevo paradigma para resolver múltiples subtareas con un solo sistema de propósito general
- A medida que los campos de AI, ML y NLP siguen creciendo, una comprensión profunda de los modelos de lenguaje se vuelve importante tanto para científicos como para ingenieros
- Inspirado en los cursos de sistemas operativos que construyen un sistema operativo completo desde cero, el curso sigue todo el proceso en el que el estudiante desarrolla directamente un modelo de lenguaje
- El alcance cubre desde la recolección y limpieza de datos de preentrenamiento hasta la construcción del modelo Transformer, el entrenamiento del modelo y la evaluación antes del despliegue
Requisitos
- La mayoría de las tareas se realizan en Python y, a diferencia de otros cursos de AI, ofrecen solo el andamiaje mínimo
- La cantidad de código que hay que escribir es al menos de un orden de magnitud mayor que en otras clases, por lo que el dominio de Python y de la ingeniería de software es muy importante
- Una parte importante del curso consiste en ejecutar modelos neuronales de lenguaje de forma rápida y eficiente en las GPU de varias máquinas
- Se espera una fuerte familiaridad con PyTorch y con conceptos básicos de sistemas como la jerarquía de memoria
- Debes poder manejar con soltura notación y operaciones con matrices y vectores, probabilidad, distribuciones gaussianas, media, desviación estándar, y fundamentos de machine learning y deep learning
- Es una clase de 5 unidades con una carga de implementación muy alta, por lo que debes asignar suficiente tiempo
Estructura de las tareas
- Assignment 1 Basics implementa el tokenizador, la arquitectura del modelo y el optimizador necesarios para entrenar un modelo estándar de lenguaje Transformer, y entrena un modelo de lenguaje mínimo
- Assignment 2 Systems perfila y hace benchmark del modelo y las capas de Assignment 1 con herramientas avanzadas, optimiza FlashAttention2 con una implementación propia en Triton y crea código de entrenamiento distribuido eficiente en memoria
- Assignment 3 Scaling busca entender la función de cada componente del Transformer y ajusta una scaling law para predecir el escalamiento del modelo consultando la API de entrenamiento
- Assignment 4 Data convierte volcados sin procesar de Common Crawl en datos de preentrenamiento utilizables y mejora el rendimiento del modelo mediante filtrado y eliminación de duplicados
- Assignment 5 Alignment and Reasoning RL aplica fine-tuning supervisado y aprendizaje por refuerzo para entrenar al LM a razonar en la resolución de problemas matemáticos
- La Parte 2 opcional de Assignment 5 implementa y aplica métodos de alineación de seguridad como DPO
Cómputo GPU y costo
- Si lo sigues desde casa, puedes completar las tareas usando cómputo GPU de proveedores en la nube
- Al 28 de marzo de 2026, el precio público de una sola GPU B200 es Modal $6.25/hora, Lambda Labs $6.69/hora, RunPod $4.99/hora, Nebius $5.50/hora o spot $3.05/hora, y Together $7.49/hora
- Modal ofrece $30 mensuales de cómputo gratuito, cobra solo por el cómputo real y simplifica la transición entre desarrollo local y experimentos de GPU a gran escala
- Para ahorrar costos y por comodidad, se recomienda primero depurar la corrección de la implementación en CPU y usar la cantidad de GPU recomendada por la tarea para las ejecuciones de entrenamiento o los benchmarks de operaciones en GPU
Dinámica del curso y reglas de entrega
- Las clases se imparten lunes y miércoles de 3:00–4:20pm en Skilling Auditorium, y las grabaciones están disponibles en la playlist de YouTube
- Todas las preguntas relacionadas con la clase deben hacerse en un canal público de Slack, y todos los anuncios también se publican en Slack
- Todas las tareas se entregan por Gradescope antes de la fecha límite; no se aceptan entregas por correo electrónico
- Puedes volver a entregar cuantas veces quieras antes de la fecha límite, y solo se calificará la última entrega
- Una entrega parcial es mejor que no entregar nada
- Cada estudiante puede usar 6 late days, y 1 late day extiende la fecha límite por 24 horas
- Se pueden usar hasta 3 late days por tarea
- Si consideras que hubo un error objetivo en la calificación, puedes enviar una solicitud de recorrección por Gradescope dentro de los 3 días posteriores a la publicación de la nota
Política de colaboración y herramientas de AI
- Se permiten grupos de estudio, pero cada estudiante debe entender y completar su propia tarea, y se debe entregar una tarea por estudiante
- Si trabajaste en grupo, debes escribir los nombres de los integrantes del grupo de estudio al inicio de la tarea
- Se permiten prompts a LLM como ChatGPT para preguntas de programación de bajo nivel o preguntas conceptuales de alto nivel sobre modelos de lenguaje
- Está prohibido usar directamente un LLM para resolver los problemas
- Al hacer las tareas, se recomienda encarecidamente desactivar autocompletado con AI como Cursor Tab o GitHub CoPilot; se permite autocompletado no basado en AI, como el de nombres de funciones
- Los materiales del curso contienen lo necesario para la implementación propia, por lo que no se debe consultar código de implementaciones existentes en línea, a menos que el handout de la tarea lo permita explícitamente
1 comentarios
Comentarios en Hacker News
Hace poco terminé la edición 2025 del curso e hice los videos y la mayoría de las tareas, aunque me salté algunas partes costosas. Solo las dos primeras tareas ya requirieron muchísimo pensamiento y depuración, y aunque ya tenía cierta base en fundamentos de deep learning, me tomó varios meses avanzando de a poco después del trabajo y los fines de semana
Me cuesta imaginar cómo los estudiantes de Stanford logran entregar tareas cada dos semanas. Se nota que el profesorado y los asistentes pusieron muchísimo esfuerzo en el diseño del curso, las diapositivas con tendencias recientes y la preparación de tareas excelentes, y da mucha satisfacción poder ver de primera mano cómo todo encaja, desde componentes pequeños hasta construir un modelo de lenguaje real y validar partes clave del pipeline de LLM
Aun así, me habría gustado que explicaran con más claridad los requisitos del entorno de ejecución. El harness funciona mejor en Linux + GPU de NVIDIA y espera ciertas versiones o arquitecturas de CUDA, lo que para investigadores puede ser obvio, pero en un entorno personal es poco común. Para seguirlo en casa, la segunda mejor opción es Windows + WSL2 + GPU de NVIDIA o rentar GPUs en distintas plataformas, pero ninguna de las dos opciones es fácil ni barata. También estaría bien que explicaran cómo aprovechar el curso al máximo si no tienes una GPU compatible, y además aprendí que en Mac OS, si no tienes cuidado con el análisis de memoria, el código de Python puede colgarse y forzar un reinicio
También hay algo de exageración en estos comentarios sobre el costo de rentar GPUs. La mayor parte del desarrollo se puede hacer en local, y solo hace falta correr cosas breves en una GPU on-demand cuando sea necesario. La tarea 1 puede ejecutarse por completo en una máquina local sin GPU, y las tareas 1 y 2 en su mayoría se pueden resolver con solo unas horas de renta. Incluso usando GPUs rentadas sin demasiado cuidado, el costo ronda los 200 dólares, y si estás dispuesto a reducir la escala del problema, es fácil bajarlo por debajo de 50 dólares. Creo que podríamos dejar esto más claro con una tabla y explicar mejor cómo ajustarlo
Si tienen más comentarios o problemas, estaría bueno que abran un issue en el repositorio. Es difícil arreglar problemas que no conocemos
Hace unos días intenté implementar una versión mejorada de gpt-1 con Claude. No soy ingeniero de machine learning sino un backend engineer común y corriente, y al final terminó siendo una mezcla de gpt-1 y el modded-nanogpt de KellerJordan
Pude reproducir los resultados del paper original de gpt-1 con una PC gamer, y ni siquiera hace falta tanta VRAM. Con una NVIDIA GeForce RTX 2060 SUPER reproduje la mayor parte de los resultados con solo 1 hora de entrenamiento, así que si te interesa el preentrenamiento de LLM, te recomiendo probar algo similar
El código está aquí: https://github.com/epoyraz/modded-gpt-1
O simplemente pregúntale a Claude 4.8 o Codex 5.5
Tengo buenos recuerdos de cs224d, que lo daba richardsocher. Se creó en la era previa a los transformers, así que hoy está un poco desactualizado, pero en su momento fue una introducción muy buena a aplicar deep learning al procesamiento de lenguaje natural
https://cs224d.stanford.edu
Dicen “cómputo con GPU para autoaprendizaje”, pero la B200 recomendada empieza desde 4.99 dólares por hora. No sé si de verdad haga falta para empezar
Yo también estoy construyendo un LLM desde cero, y en las primeras etapas no necesité nada por encima de una 4090 de Vast.ai
Este año tuvimos la suerte de poder conseguir GPUs Blackwell para los estudiantes de Stanford, así que la explicación de las tareas quedó escrita mayormente tomando eso como referencia
En cambio, cuando estás aprendiendo a diseñar y experimentar con kernels de cómputo o bloques de IP, el hardware que necesitas tiene que ser mucho más potente o con mayor capacidad. Lo que se experimenta está deliberadamente en el extremo opuesto de la optimización, y en cada etapa se hace para que sea fácil de leer, inspeccionar y depurar, así que el modelo o bitstream resultante queda mucho más inflado y poco optimizado
Ejecutar con tu propio prompt un modelo que otra persona ya terminó y optimizó para correr en algo como una 4090 también es experimentar, pero puede hacerse barato. Es como cargar en la misma FPGA un bitstream de otra persona, diseñado y sintetizado para una FPGA de 20 dólares, y meterle tus propias señales de entrada. Pero el tipo de experimentación que vas a hacer en este curso, mientras aprendes a diseñar tu propio modelo, no es de ese tipo
Esto se ve interesante, pero también me da curiosidad saber los prerrequisitos. Dice que hay que estar familiarizado con fundamentos de machine learning y deep learning; me gustaría saber si hay materiales para estudiar esos temas por cuenta propia, con enfoque en implementación, o grabaciones de clases de Stanford
Eso sí, CS336 cubre muchas más técnicas de vanguardia, así que para esa parte sí importa la versión 2026
Clase: https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1246...
Videos de clase: https://www.youtube.com/playlist?list=PLoROMvodv4rOaMFbaqxPD...
Libro: https://web.stanford.edu/~jurafsky/slp3/
Está realmente excelente. Durante el último mes he estado haciendo algo parecido, con la condición de desafío de no usar ninguna librería fuera de la biblioteca estándar de Python, ni siquiera numpy
Empecé con Word2Vec, luego hice RNN y LSTM, y ahora voy a la mitad de implementar la arquitectura transformer
Formé un grupo para llevar esta clase juntos usando los videos de YouTube y el material del curso publicados en línea. Es difícil, pero muy gratificante, y avanzamos a ritmo de un video de clase por semana
Empezamos con más de 30 personas, pero en la última sesión ya solo quedaban 8
Quiero intentarlo, pero me preocupa que todavía no tenga las habilidades necesarias. Tal vez algún día pueda
Me pregunto cuál sería la GPU mínima para seguir esta clase desde casa. Tengo una 5080 de 16 GB, ¿de verdad hace falta más que eso?
Hice las primeras dos tareas por mi cuenta a lo largo de un año y aprendí muchísimo. Me da curiosidad saber qué cursos tomaste después
Lo que me faltó en CS336 fue la forma de explicar los componentes de reinforcement learning, y en esa parte las clases 5 y 6 de CME 295 me parecieron mejores
https://cme295.stanford.edu/syllabus/
También escuché que CME 296, la clase sobre modelos de difusión, es buena, y parece una buena siguiente etapa
https://cme296.stanford.edu/syllabus/