Autoresearch - le framework de recherche automatisée de Karpathy
(github.com/karpathy)- Framework autonome de recherche autoportant qui condense le cœur d’entraînement LLM de nanochat en un seul GPU et un seul fichier d’environ 630 lignes, permettant à des agents IA d’itérer de manière autonome sur des expériences d’entraînement LLM pendant toute la nuit
- L’humain modifie le
prompt, et l’agent IA modifie lecode d’entraînement→ entraînement avec un budget temps fixe de 5 minutes → comparaison des résultats → répétition de la boucle conservation ou abandon - L’agent fonctionne dans une boucle autonome sur une branche git de feature et accumule des commits git sur le script d’entraînement chaque fois qu’il obtient une validation loss plus faible en ajustant l’architecture du réseau neuronal, l’optimiseur, les hyperparamètres, etc.
- L’objectif est de concevoir un agent capable de produire les progrès de recherche les plus rapides sans intervention humaine
Vue d’ensemble du projet
- Structure dans laquelle un agent IA modifie et expérimente de façon autonome le code d’entraînement, sur la base d’une implémentation simplifiée mono-GPU de nanochat
- L’agent répète la boucle modification du code → entraînement de 5 minutes → vérification des résultats → conservation/abandon, tandis que l’utilisateur consulte le matin les logs d’expérience et le modèle amélioré
- Le principe consiste à connecter à ce dépôt l’agent de son choix, comme Claude ou Codex, à lui faire lire
program.md, puis à lancer les expériences
Structure des fichiers clés (3 seulement sont importants)
prepare.py- contient les constantes fixes, la préparation des données (téléchargement des données d’entraînement, entraînement du tokenizer BPE) et les utilitaires d’exécution (data loader, évaluation) ; non destiné à être modifiétrain.py- fichier unique modifié par l’agent ; contient l’ensemble du modèle GPT, l’optimiseur (Muon + AdamW) et la boucle d’entraînement ; tous les éléments peuvent être modifiés, notamment l’architecture, les hyperparamètres, l’optimiseur et la taille de batchprogram.md- fichier d’instructions de base pour l’agent ; édité par l’humain, il sert de compétence légère qui définit l’orientation de la recherche autonome de l’agent
Principes de conception
- Modification d’un seul fichier : l’agent ne modifie que
train.py, ce qui permet de garder un périmètre de changement maîtrisable et facilite la revue des diff - Budget temps fixe : exécution toujours de 5 minutes exactement, quelle que soit la plateforme → environ 12 essais par heure, soit près de 100 expériences pendant le sommeil
- Les expériences restent directement comparables entre elles, quels que soient les changements de taille de modèle, de taille de batch ou d’architecture
- Inconvénient : les résultats d’exécution d’autres personnes ne sont pas comparables si elles n’utilisent pas la même plateforme
- Autoportance : aucune dépendance externe en dehors de PyTorch et de quelques paquets ; pas d’entraînement distribué ; pas de configuration complexe
Prérequis et exécution
- Prérequis : un seul GPU NVIDIA (tests réalisés sur H100), Python 3.10+, gestionnaire de paquets
uv - Actuellement réservé aux GPU NVIDIA ; la prise en charge d’autres plateformes comme CPU ou MPS n’est pas incluse pour éviter de faire grossir le code
- Si un support plus large des plateformes est nécessaire, il est recommandé de consulter le dépôt nanochat principal ; un fork macOS (
miolini/autoresearch-macos) existe déjà
- Si un support plus large des plateformes est nécessaire, il est recommandé de consulter le dépôt nanochat principal ; un fork macOS (
- Pour exécuter l’agent, lancez Claude, Codex ou un autre agent dans le dépôt, désactivez toutes les autorisations, puis invitez-le à lire
program.mdet à démarrer les expériences
Intention de conception du program.md par défaut
- Le
program.mdpar défaut est volontairement conservé comme une base minimale - Il peut être utilisé comme point de départ d’améliorations itératives au fil du temps pour trouver le « code d’organisation de recherche » qui produit les progrès les plus rapides
- La structure permet aussi clairement des extensions, comme l’ajout d’agents ou des consignes plus précises
3 commentaires
Faites aussi une version pour AMD ROCm.
Le tweet de présentation de Karpathy
Pourquoi vous faites ce genre de choses le week-end, franchement ?
On dirait qu’il les crée rapidement pour éviter que les supports de cours ne deviennent obsolètes et pour lancer les cours Eureka Lab, et qu’il continue d’en produire, snif
ps. Il y a 7 heures, il en a encore créé et publié un autre, AgentHub 🫢