18 points par xguru 2024-04-09 | 1 commentaires | Partager sur WhatsApp
  • Un code d’entraînement de LLM simple créé par Andrej Karpathy en pur C/CUDA
  • Aucun besoin de PyTorch/cPython
  • Possibilité d’entraîner GPT-2 (CPU, fp32) avec un seul fichier d’environ 1�0 lignes
    • GPT-2 a été choisi comme premier exemple fonctionnel car c’est l’ancêtre des LLM où la stack moderne s’est assemblée pour la première fois
  • Compilation et exécution immédiates, avec une correspondance exacte avec l’implémentation de référence PyTorch
  • Travaux actuellement en cours
    • Une implémentation CUDA directe bien plus rapide, et probablement plus proche de PyTorch
    • Accélération de la version CPU avec les instructions SIMD, AVX2 sur x86 / NEON sur ARM (par ex. Apple Silicon)
    • Des architectures plus modernes (par ex. Llama2, Gemma, etc.)

1 commentaires

 
xguru 2024-04-09

Avis sur Hacker News

  • Tout en exprimant son admiration pour le projet, il souligne que la partie CUDA n’est pas encore implémentée. Le code GPU n’est pas encore dans le dépôt.

    Il espère qu’une vidéo détaillée expliquant comment le construire sera réalisée une fois le projet davantage stabilisé.

  • Après avoir vu nano GPT implémenté avec JAX, il veut maintenant en voir une version en C/CUDA. Il se demande si nano GPT est possible en Mojo. Il reconnaît que Python dispose de nombreuses fonctionnalités pratiques par rapport à d’autres langages.

  • Il exprime l’attente qu’une implémentation directe en CUDA soit bien plus rapide que PyTorch. Compte tenu du prix de la RAM GPU, il se demande quel gain de vitesse on peut obtenir côté CPU. Il demande s’il existe des obstacles techniques à l’ajout d’un slot SO-DIMM sur la série RTX pour étendre la RAM selon les besoins.

  • Il demande s’il existe des exemples sur la manière d’appliquer GPT-2 à des données de séries temporelles, en particulier lorsqu’elles incluent des covariables (covariates). Il pense que la prédiction de séries temporelles ressemble à la façon dont un LLM prédit le jeton suivant à partir des jetons précédents.

  • Il pense que le nom vient de son propre projet llm.f90. Il explique qu’il l’a basé sur llama2.c de Karpathy et qu’il a changé le nom pour prendre en charge d’autres architectures. C’est probablement une coïncidence.

  • Lorsque Lex a discuté avec Andre, Andre aurait dit, avec une obsession positive pour le problème : « Cela doit absolument exister. » Ce projet serait probablement l’un de ces résultats.

  • Question sur les ressources à consulter si l’on part de zéro pour comprendre ce que fait ce code et comment le lire. Il indique avoir des connaissances très limitées sur les LLM et se demande si les noms de variables concis sont la norme dans ce domaine.

  • Avis indiquant qu’il serait bien de créer un tutoriel expliquant ce projet et la manière d’exécuter un entraînement de test. Entraîner un modèle « réel » sur du matériel personnel n’est pas réaliste, mais il a besoin d’une expérience d’apprentissage pratique.

  • Il s’interroge sur le fait de savoir si CUDA reste la seule véritable option pour exécuter de l’IA, ou si la prise en charge d’AMD/Intel/d’autres méthodes d’exécution de l’IA progresse.