24 points par GN⁺ 2025-01-31 | 1 commentaires | Partager sur WhatsApp
  • Un projet simple d’entraînement de LLM basé sur PyTorch, conçu à des fins pédagogiques, qui applique un entraînement efficace et des techniques d’échantillonnage modernes

Fonctionnalités

  • Base de code minimale : implémentée en PyTorch, sans abstractions complexes
  • Architecture moderne : modèle GPT avec Flash Attention, RMSNorm, SwiGLU et techniques d’échantillonnage efficaces
  • Fonctionnalités d’entraînement :
    • précision mixte (bfloat16/float16)
    • accumulation de gradients
    • décroissance du taux d’apprentissage avec warmup
    • weight decay et gradient clipping
  • Prise en charge des jeux de données : traitement intégré du jeu de données TinyStories
  • Tokenizer personnalisé : intégration de l’entraînement du tokenizer SentencePiece

Installation

  • Python 3.8+
  • PyTorch 2.0+ et CUDA
  • GPU récent recommandé

Démarrage rapide 🚀

Option 1 : cycle complet d’entraînement

  1. Préparer le jeu de données
  2. Démarrer l’entraînement
  3. Générer du texte

Option 2 : utiliser un modèle préentraîné

  1. Télécharger les ressources
  2. Lancer l’inférence

Détails du modèle préentraîné

  • Entraîné sur le jeu de données TinyStories
  • Vocabulaire de 4096 tokens, transformeur à 8 têtes et 8 couches, dimension d’embedding de 512
  • Entraîné pendant 18,5 heures sur environ 400 millions de tokens
  • Perte de validation : 1.0491

Spécifications de la machine d’entraînement

  • GPU : NVIDIA L4 Tensor Core
  • vCPU : 16
  • RAM : 64 GB
  • VRAM : 24 GB

Remarque : cette implémentation a été conçue à des fins pédagogiques en s’inspirant des pratiques modernes d’entraînement des LLM. En environnement de production, il est recommandé d’augmenter la taille du modèle et du jeu de données.

1 commentaires

 
GN⁺ 2025-01-31
Avis sur Hacker News
  • Un utilisateur mentionne qu’en travaillant sur une implémentation de GPT en C, il a appris l’importance de la gestion de la mémoire et des données. Le projet est composé d’environ 1 500 lignes de code, et il partage un lien GitHub

  • Un autre utilisateur explique que l’étape suivante consiste à l’implémenter soi-même avec numpy. Il souligne qu’on peut commencer avec des abstractions puissantes, puis les retirer progressivement pour comprendre complètement le système

  • Un projet utilisant un notebook Google Colab est partagé, avec un temps d’exécution d’environ 2 heures sur un GPU A100. Il est mentionné que cela pourrait aussi fonctionner avec un compte gratuit

  • Il est expliqué qu’il existe sur GitHub plusieurs projets comme nanoGPT d’Andrej Karpathy, ainsi que d’autres projets implémentant le MoE

  • Un utilisateur demande s’il est possible d’entraîner un modèle spécifique sur un jeu de données précis et d’en tester les résultats. Il dit chercher un projet open source, souhaitant savoir si l’utilisation d’un GPU est possible, et vouloir un conteneur Docker pouvant être remplacé par un CPU

  • Un autre utilisateur partage son expérience d’implémentation avec son propre tokenizer multicanal. Il mentionne que le nom du protagoniste se répète souvent, au point de soupçonner un bug

  • Om Alve remercie en disant que le billet est devenu viral et que cela donne de la valeur à ses efforts

  • Il est mentionné qu’il est intéressant qu’une telle technologie puisse être implémentée en quelques centaines de lignes de code. Il est proposé d’essayer de deviner le nombre de lignes de code des modèles de pointe

  • Il est précisé que cela n’a pas de lien avec SmolLM, et un lien vers le blog de HuggingFace est partagé

  • Il est demandé si des exemples de jeux de données d’entraînement et de cas d’usage pourraient être partagés