- Curso impartido directamente por Andrej Karpathy, donde se aprende implementando redes neuronales desde cero con código
- Comienza con las bases de la retropropagación (backpropagation) y avanza paso a paso hasta modelos modernos de deep learning al nivel de GPT
- El aprendizaje se centra en modelos de lenguaje (language models), practicando tecnologías clave como PyTorch, torch.Tensor, BatchNorm, WaveNet y el tokenizador de GPT
- Cada clase está estructurada en torno al proceso real de desarrollo, incluyendo entrenamiento del modelo, cálculo de la pérdida, ajuste de hiperparámetros y diagnóstico de sobreajuste
- Un currículo práctico para aprender de forma sistemática el funcionamiento interno del deep learning y la intuición de optimización
Descripción general del curso
- Este curso está diseñado para aprender implementando redes neuronales directamente con código
- Se requieren matemáticas básicas (derivadas, gaussianas) y habilidad para programar en Python
- Se ofrece un canal de Discord para la interacción entre estudiantes
- El aprendizaje gira en torno a los modelos de lenguaje, lo que también resulta útil para transferir conocimientos a otras áreas (por ejemplo, visión por computadora)
Estructura del curso (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- Se implementa micrograd directamente mientras se explica paso a paso el proceso de retropropagación y entrenamiento de redes neuronales
- Se puede entender solo con conocimientos básicos de Python y cálculo a nivel de preparatoria
2. Intro to Language Modeling: Building makemore (1h57m)
- Implementación de un modelo de lenguaje bigrama a nivel de caracteres
- Cubre cómo usar torch.Tensor y métodos eficientes para el cálculo en redes neuronales
- Incluye entrenamiento del modelo, muestreo y evaluación de la pérdida (negative log likelihood)
3. Building makemore Part 2: MLP (1h15m)
- Implementación de un modelo de lenguaje a nivel de caracteres basado en perceptrón multicapa (MLP)
- Incluye conceptos básicos de machine learning como ajuste de learning rate, hiperparámetros, partición de datos (train/dev/test) y sobreajuste/subajuste
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- Se analiza el funcionamiento interno de un MLP multicapa revisando las propiedades estadísticas de activaciones y gradientes
- Se introduce Batch Normalization para mejorar la estabilidad del entrenamiento
- Residual connection y el optimizador Adam se verán en videos posteriores
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- Se realiza retropropagación manual sin usar autograd de PyTorch
- Se hace retropropagación directa sobre cross-entropy loss, tanh, BatchNorm y tablas de embeddings
- Refuerza la intuición sobre el flujo de gradientes y la optimización a nivel de tensores
6. Building makemore Part 5: Building a WaveNet (56m)
- Se expande el MLP de 2 capas anterior para implementar una arquitectura CNN jerárquica similar a WaveNet (2016)
- Se practica el funcionamiento interno de torch.nn y el flujo de trabajo de desarrollo en deep learning (exploración de documentación, manejo de dimensiones de tensores, integración de código, etc.)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- Se implementa un modelo GPT desde cero siguiendo el paper “Attention is All You Need” y la arquitectura de OpenAI GPT-2/3
- Se menciona su relación con ChatGPT y GitHub Copilot
- Parte de lo ya visto sobre modelado de lenguaje autorregresivo y fundamentos de PyTorch nn en las clases anteriores de makemore
8. Let's Build the GPT Tokenizer (2h13m)
- Se implementa desde cero el tokenizador usado en la serie GPT
- Incluye el proceso de entrenamiento basado en Byte Pair Encoding (BPE)
- Se implementan directamente las funciones de conversión cadena↔token (encode/decode)
- Se analizan casos donde parte del comportamiento anómalo de los LLM proviene de la etapa de tokenización
- Incluye una discusión sobre la posibilidad de eliminar el tokenizador
Estado del curso
- El curso está en curso (ongoing), y se seguirán subiendo más videos
1 comentarios
Comentarios en Hacker News
Antes ya había visto varios materiales sobre deep learning, como libros, cursos de Coursera, clases universitarias y cursos de fast.ai, pero casi no los uso en el trabajo real
Pero esta serie fue el contenido que mejor me ayudó a desarrollar intuición de todo lo que he visto hasta ahora. Casi no tiene relleno y no aburre
Ahora, si alguien me dice que quiere aprender los principios de bajo nivel de las DNN, esto es lo primero que recomiendo
Si vienes de un área cercana, puede sentirse un poco lenta, pero aun así siempre resulta interesante
Estoy investigando modelado de datos espacio-temporales para crear un modelo predictivo de sistemas de transporte urbano. También estoy construyendo la infraestructura de ML por mi cuenta y preparando una app para desplegarlo sobre flujos reales de eventos de tránsito
Hice aprendizaje en línea con Deeplearning.ai y skills.google; el primero me pareció algo anticuado, mientras que el segundo cubre muy bien aspectos prácticos como optimización para GPU y TPU
Pero lo que realmente me convirtió en alguien capaz de trabajar en la práctica fue Deep Learning with Python de Francois Chollet, creador de Keras. El libro explica con claridad los conceptos sobre el trasfondo de 70 años de historia del deep learning e incluso incluye recetas para implementar por cuenta propia modelos GPT o de Diffusion
La lección central es que “el deep learning es más arte que ciencia”. Hace falta mucha práctica y no siempre se pueden explicar perfectamente los resultados
También incluye notebooks de ejemplo en TensorFlow, PyTorch y Jax. Gracias a eso, ahora tengo la confianza suficiente como para reproducir resúmenes de papers y desplegar modelos en producción
Si veo todo este material, ¿a qué nivel podría llegar más o menos?
¿Me alcanzaría para construir algo o participar en conversaciones? ¿O sería más bien solo para entender los conceptos?
Me pregunto cuáles son las limitaciones y diferencias que tienen los investigadores
Estoy tomando el Deep RL Course y hasta ahora me ha parecido bastante intuitivo. Aunque cuando entra la parte matemática creo que me va a costar
Aun así, pude entender backprop y el proceso de implementación de tiny GPT. Las clases de Karpathy son excelentes para captar los principios fundamentales
Eso sí, casi no hay práctica con librerías, así que el curso que mencionas podría ser más adecuado para trabajo real
El sistema de calificación automática era demasiado rígido, al punto de tener que forzar redacciones solo para que aceptara las respuestas. Eso reducía la eficiencia de aprendizaje y era una pérdida de tiempo
En cambio, los videos de Karpathy fueron realmente una joya
Así que este aprendizaje quizá no se traduzca directamente en habilidades prácticas de trabajo
En cambio, recomiendo este otro video de Karpathy: Deep Dive into LLMs like ChatGPT
Neural Network from Scratch in Python (NumPy)
No local GPU? No problem – running Karpathy’s NanoGPT on Modal.com
Modal.com and NanoGPT continued – producing output using Tiktoken for bigger tokens
Si te cuesta el mecanismo básico de las redes neuronales, te recomiendo verlo por encima al principio y volver después. En la segunda vez se entiende mucho mejor
El video explica el principio de autograd, que es la forma en que PyTorch calcula derivadas automáticamente por dentro
En el pasado, TensorFlow o Torch requerían definir manualmente la función de derivación de cada capa, pero PyTorch registra el código Python durante la ejecución para construir el grafo automáticamente y calcular derivadas
Si entiendes esto, puedes saber cómo funciona PyTorch internamente
Pero la mayoría de los usuarios realmente no necesita conocer esos detalles internos para usar bien los modelos
Si eres completamente principiante, recomiendo el curso de Coursera Introduction to ML de Andrew Ng. No sé cómo esté la versión más reciente, pero él es un gran educador
cs231n fue una de las mejores clases que he visto, pero este parece tener mucho solapamiento, así que lo he estado posponiendo. Supongo que le añadieron la parte de transformer
Te ayuda a entender de manera intuitiva por qué funcionan gradient descent y la normalización (normalization), y profundiza bastante en la dinámica del entrenamiento
Te da criterio para juzgar si un modelo realmente está aprendiendo bien