Réseaux de neurones : de zéro à héros
(karpathy.ai)- Cours animé directement par Andrej Karpathy, qui propose d’apprendre en implémentant des réseaux de neurones depuis zéro en code
- Démarre par les bases de la rétropropagation (backpropagation) puis construit progressivement des modèles modernes de deep learning au niveau de GPT
- L’apprentissage est centré sur les modèles de langage (language model), avec une mise en pratique de technologies clés comme PyTorch, torch.Tensor, BatchNorm, WaveNet et le tokenizer GPT
- Chaque leçon est structurée autour du processus réel de développement, avec entraînement du modèle, calcul de la perte, réglage des hyperparamètres et diagnostic du surapprentissage
- Un curriculum très pratique pour comprendre de manière structurée le fonctionnement interne du deep learning et l’intuition de l’optimisation
Aperçu du cours
- Ce cours est conçu comme un apprentissage par implémentation directe de réseaux de neurones en code
- Il nécessite des bases en mathématiques (dérivation, gaussienne) ainsi qu’en programmation Python
- Un canal Discord est mis à disposition pour les échanges entre apprenants
- L’apprentissage est centré sur les modèles de langage, ce qui permet aussi de transférer utilement ces connaissances à d’autres domaines, par exemple la vision par ordinateur
Structure du cours (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- Implémentation directe de micrograd pour expliquer étape par étape la rétropropagation et le processus d’apprentissage des réseaux de neurones
- Accessible avec des bases en Python et un niveau lycée en calcul différentiel
2. Intro to Language Modeling: Building makemore (1h57m)
- Implémentation d’un modèle de langage bigramme au niveau des caractères
- Présente l’usage de torch.Tensor et des méthodes efficaces de calcul pour les réseaux de neurones
- Inclut l’entraînement du modèle, l’échantillonnage et l’évaluation de la perte (log-vraisemblance négative)
3. Building makemore Part 2: MLP (1h15m)
- Implémentation d’un modèle de langage au niveau des caractères basé sur un perceptron multicouche (MLP)
- Couvre aussi des notions fondamentales de machine learning comme l’ajustement du taux d’apprentissage, les hyperparamètres, la séparation des données (train/dev/test) et le surapprentissage/sous-apprentissage
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- Analyse du fonctionnement interne d’un MLP multicouche en examinant les propriétés statistiques des activations et des gradients
- Introduction de la Batch Normalization pour améliorer la stabilité de l’entraînement
- Les residual connections et l’optimiseur Adam seront abordés dans une vidéo ultérieure
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- Réalisation de la rétropropagation manuelle sans PyTorch autograd
- Rétropropagation directe de la perte d’entropie croisée, tanh, BatchNorm et de la table d’embedding
- Renforce l’intuition sur le flux des gradients et l’optimisation au niveau des tenseurs
6. Building makemore Part 5: Building a WaveNet (56m)
- Extension du MLP à 2 couches précédent pour implémenter une architecture CNN hiérarchique proche de WaveNet (2016)
- Mise en pratique du fonctionnement interne de torch.nn et du workflow de développement en deep learning (exploration de la documentation, gestion des dimensions des tenseurs, intégration du code, etc.)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- Implémentation directe d’un modèle GPT, en suivant l’article “Attention is All You Need” ainsi que l’architecture de OpenAI GPT-2/3
- Mention des liens avec ChatGPT et GitHub Copilot
- Le cours part du principe que les notions de modélisation de langage autorégressive et les bases de PyTorch nn vues dans les leçons précédentes sur makemore sont acquises
8. Let's Build the GPT Tokenizer (2h13m)
- Implémentation depuis zéro du tokenizer utilisé dans la série GPT
- Inclut le processus d’apprentissage basé sur Byte Pair Encoding (BPE)
- Implémentation directe des fonctions de conversion chaîne↔tokens (encode/decode)
- Analyse, à travers des exemples, du fait qu’une partie des comportements anormaux des LLM provient de l’étape de tokenization
- Inclut aussi une discussion sur la possibilité de supprimer le tokenizer
État d’avancement
- Le cours est en cours (ongoing) et de nouvelles vidéos continueront d’être mises en ligne
1 commentaires
Réactions sur Hacker News
J’avais déjà consulté pas mal de ressources sur le deep learning, comme des livres, des cours Coursera, des cours à l’université ou encore le cursus fast.ai, mais je les ai très peu utilisés en pratique au travail
Pourtant, cette série est de loin le contenu qui m’a le plus aidé à développer une intuition solide. Il y a très peu de superflu et ce n’est jamais ennuyeux
Maintenant, si quelqu’un me demande par où commencer pour comprendre les principes de bas niveau des DNN, c’est ce que je recommande en premier
Pour quelqu’un venant d’un domaine voisin, le rythme peut sembler un peu lent, mais ça reste toujours intéressant
Je travaille sur la modélisation de données spatio-temporelles pour construire un modèle prédictif des systèmes de transport urbain. Je monte aussi moi-même l’infrastructure ML, et je prépare une application pour la déployer sur de vrais flux d’événements de transport
J’ai suivi des formations en ligne sur Deeplearning.ai et skills.google : la première m’a paru un peu datée, tandis que la seconde couvre bien les aspects pratiques comme l’optimisation GPU·TPU
Mais ce qui a vraiment fait de moi quelqu’un d’opérationnel, c’est Deep Learning with Python de Francois Chollet, le créateur de Keras. Le livre explique clairement les concepts en les replaçant dans les 70 ans d’histoire du deep learning, et va jusqu’à proposer des recettes pour implémenter soi-même des GPT ou des modèles de diffusion
La leçon essentielle, c’est que « le deep learning relève plus de l’art que de la science ». Il faut énormément de pratique, et on ne peut pas tout expliquer parfaitement
Il contient aussi des notebooks d’exemple pour TensorFlow, PyTorch et Jax. Grâce à ça, j’ai maintenant suffisamment confiance pour reproduire les résumés d’articles et déployer des modèles en production
Si je vais au bout de ce contenu, à quel niveau puis-je espérer arriver ?
Est-ce que ce sera suffisant pour construire quelque chose moi-même ou participer à une discussion ? Ou bien est-ce seulement utile pour comprendre les concepts ?
Je me demande aussi quelles sont les limites et les différences par rapport au niveau des chercheurs
Je suis actuellement le Deep RL Course, et jusqu’ici c’est plutôt intuitif. En revanche, je risque de souffrir dès qu’on attaquera les maths
Malgré ça, j’ai pu comprendre le fonctionnement de la backprop et le processus d’implémentation de tiny GPT. Les cours de Karpathy sont excellents pour saisir les principes fondamentaux
En revanche, il y a très peu de pratique avec des bibliothèques, donc le cours que tu mentionnes est peut-être plus adapté à un usage concret
Le système de correction automatique était bien trop rigide : il fallait forcer la formulation juste pour faire accepter la réponse. C’était peu efficace pour apprendre et une perte de temps
À l’inverse, les vidéos de Karpathy étaient de véritables pépites
Donc cet apprentissage ne se traduira pas forcément en compétences directement utiles en pratique
À la place, je recommande une autre vidéo 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 les mécanismes fondamentaux des réseaux de neurones te paraissent difficiles, je te conseille de survoler une première fois puis d’y revenir plus tard. La deuxième fois, on comprend beaucoup mieux
La vidéo explique le principe de l’autograd, c’est-à-dire la façon dont PyTorch calcule automatiquement les dérivées en interne
À l’époque, dans TensorFlow ou Torch, il fallait définir à la main la fonction de dérivation de chaque couche, alors qu’avec PyTorch, le code Python exécuté est enregistré pendant l’exécution pour construire automatiquement le graphe et calculer les dérivées
Comprendre cela permet de voir comment PyTorch fonctionne en interne
Mais la plupart des utilisateurs peuvent très bien utiliser des modèles sans connaître ces détails internes
Si tu es complètement débutant, je te recommande le cours Coursera Introduction to ML d’Andrew Ng. Je ne connais pas la version la plus récente, mais c’est un excellent pédagogue
cs231n était l’un des meilleurs cours que j’aie suivis, et comme celui-ci semble recouvrir beaucoup des mêmes sujets, je l’ai repoussé jusqu’ici. J’imagine que la partie transformer a été ajoutée
Il permet de comprendre intuitivement pourquoi la descente de gradient et la normalisation fonctionnent, et il aborde en profondeur la dynamique de l’apprentissage
Il aide à développer une bonne intuition pour juger si un modèle est réellement en train d’apprendre correctement