- Curso ministrado pelo próprio Andrej Karpathy, em que o aprendizado acontece implementando redes neurais do zero no código
- Começa pelos fundamentos da retropropagação (backpropagation) e avança passo a passo até modelos modernos de deep learning no nível do GPT
- O aprendizado é centrado em modelos de linguagem (language models), com prática em tecnologias-chave como PyTorch, torch.Tensor, BatchNorm, WaveNet e o tokenizer do GPT
- Cada aula é estruturada em torno do processo real de desenvolvimento, incluindo treinamento do modelo, cálculo de perda, ajuste de hiperparâmetros e diagnóstico de overfitting
- Um currículo prático para aprender de forma sistemática como o deep learning funciona por dentro e a intuição de otimização
Visão geral do curso
- Este curso é composto por um processo de aprendizado em que você implementa redes neurais diretamente no código
- Exige matemática básica (derivadas, gaussiana) e habilidade de programação em Python
- Um canal no Discord é oferecido para interação entre os alunos
- O aprendizado é centrado em modelos de linguagem, e isso também é útil para transferir conhecimento para outras áreas (por exemplo, visão computacional)
Estrutura das aulas (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- Implementa o micrograd diretamente enquanto explica passo a passo a retropropagação e o processo de treinamento de redes neurais
- Pode ser entendido apenas com conhecimento básico de Python e cálculo em nível de ensino médio
2. Intro to Language Modeling: Building makemore (1h57m)
- Implementação de um modelo de linguagem bigrama em nível de caractere
- Aborda como usar torch.Tensor e métodos eficientes de computação para redes neurais
- Inclui treinamento do modelo, sampling e avaliação da perda (log-verossimilhança negativa)
3. Building makemore Part 2: MLP (1h15m)
- Implementação de um modelo de linguagem em nível de caractere baseado em perceptron multicamadas (MLP)
- Inclui conceitos básicos de machine learning, como ajuste da taxa de aprendizado, hiperparâmetros, divisão dos dados (train/dev/test) e overfitting/underfitting
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- Analisa o funcionamento interno de um MLP multicamadas, examinando as características estatísticas das ativações e dos gradientes
- Introduz Batch Normalization para melhorar a estabilidade do treinamento
- Residual connection e o otimizador Adam serão abordados em vídeos posteriores
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- Executa retropropagação manual sem o autograd do PyTorch
- Faz retropropagação diretamente em perda de entropia cruzada, tanh, BatchNorm e tabelas de embedding
- Reforça o fluxo de gradientes e a intuição de otimização no nível de tensores
6. Building makemore Part 5: Building a WaveNet (56m)
- Expande o MLP de 2 camadas anterior para implementar uma arquitetura hierárquica de CNN semelhante ao WaveNet (2016)
- Prática sobre o funcionamento interno de torch.nn e o workflow de desenvolvimento em deep learning (exploração da documentação, gerenciamento das dimensões dos tensores, integração de código etc.)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- Implementa diretamente o modelo GPT, seguindo o artigo “Attention is All You Need” e a arquitetura do OpenAI GPT-2/3
- Menciona a relação com ChatGPT e GitHub Copilot
- Parte do pressuposto de que o aluno já viu modelagem de linguagem autorregressiva e fundamentos de PyTorch nn nas aulas anteriores de makemore
8. Let's Build the GPT Tokenizer (2h13m)
- Implementa do zero o tokenizer usado na série GPT
- Inclui o processo de treinamento baseado em Byte Pair Encoding (BPE)
- Implementa diretamente a funcionalidade de conversão string↔token (encode/decode)
- Analisa, com exemplos, que parte das causas de comportamentos anormais em LLMs está na etapa de tokenização
- Inclui uma discussão sobre a possibilidade de eliminar o tokenizer
Status de andamento
- O curso está em andamento (ongoing), com novos vídeos previstos para continuar sendo publicados
1 comentários
Comentários do Hacker News
Já tinha tido contato com vários materiais sobre deep learning antes, como livros, cursos da Coursera, aulas da universidade, cursos da fast.ai etc., mas quase nunca usei isso no trabalho de verdade
Mesmo assim, esta série foi o conteúdo que melhor desenvolveu minha intuição entre tudo o que já vi até hoje. Quase não tem enrolação e não é entediante
Hoje, se alguém me diz que quer aprender os princípios de baixo nível de DNN, é isso que recomendo primeiro
Para quem veio de uma área próxima, pode até parecer um pouco lento, mas ainda assim é sempre interessante
Estou pesquisando modelagem de dados espaço-temporais para criar modelos preditivos de sistemas de transporte urbano. Também estou montando a infraestrutura de ML por conta própria e preparando um app para implantar isso em streams reais de eventos de trânsito
Fiz aprendizado online pela Deeplearning.ai e pela skills.google; a primeira me pareceu um pouco datada, enquanto a segunda cobre bem a parte prática, como otimização para GPU e TPU
Mas o que realmente me transformou em alguém capaz de trabalhar na prática foi 『Deep Learning with Python』, do criador do Keras, Francois Chollet. O livro explica os conceitos com clareza tendo como pano de fundo os 70 anos de história do deep learning, e ainda traz receitas para implementar diretamente modelos como GPT e Diffusion
A principal lição é que “deep learning é mais arte do que ciência”. É preciso muita prática, e não dá para explicar perfeitamente os resultados
Também inclui notebooks de exemplo em TensorFlow, PyTorch e Jax. Graças a isso, hoje tenho confiança suficiente para reproduzir resumos de artigos e colocar modelos em produção
Se eu estudar todo esse material, a que nível eu consigo chegar?
Dá para construir alguma coisa por conta própria ou participar de conversas sobre o assunto? Ou eu só vou entender os conceitos de forma superficial?
Também tenho curiosidade sobre quais são os limites e as diferenças em relação ao que os pesquisadores sabem
Estou fazendo o Deep RL Course, e até agora ele parece bem intuitivo. Só acho que vou sofrer um pouco quando a parte de matemática apertar
Mesmo assim, consegui entender o processo de implementação de backprop e do tiny GPT. As aulas do Karpathy são excelentes para entender os princípios fundamentais
Só que quase não há prática com bibliotecas, então o curso que você mencionou talvez seja mais adequado para uso profissional
O sistema de correção automática era formalista demais, então eu tinha que forçar frases só para acertar a resposta. Isso reduzia a eficiência do aprendizado e era uma perda de tempo
Em compensação, os vídeos do Karpathy foram um verdadeiro material precioso
Então esse aprendizado talvez não se traduza diretamente em capacidade prática no trabalho
Em vez disso, recomendo outro vídeo do 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
Se o mecanismo básico das redes neurais parecer difícil, recomendo passar por cima na primeira vez e voltar depois. Na segunda vez, fica muito mais claro
O vídeo explica os princípios do autograd, ou seja, a forma como o PyTorch calcula derivadas automaticamente por dentro
Antigamente, no TensorFlow ou no Torch, era preciso definir manualmente a função derivada de cada camada, mas no PyTorch o código Python executado vai sendo registrado, o grafo é criado automaticamente e as derivadas são calculadas a partir disso
Entender isso ajuda a saber como o PyTorch funciona internamente
Mas a maioria dos usuários consegue usar bem o modelo sem precisar conhecer esses detalhes internos
Se você for completamente iniciante, recomendo o curso Introduction to ML do Andrew Ng na Coursera. Não sei como está a versão atual, mas ele é um excelente educador
O cs231n foi uma das melhores aulas que já vi, mas estou adiando este porque parece haver bastante sobreposição. Imagino que a parte de transformers seja o acréscimo principal
Ele ajuda a entender intuitivamente por que gradient descent e normalização (normalization) funcionam, e entra fundo na dinâmica do treinamento
Faz você desenvolver o feeling para avaliar se o modelo está realmente aprendendo direito