2 points par GN⁺ 2025-08-21 | 1 commentaires | Partager sur WhatsApp
  • Gemma 3 270M propose du code d’exemple permettant une implémentation directe en utilisant uniquement PyTorch
  • Ce dépôt a un objectif pédagogique, pour comprendre la structure et le processus d’entraînement des LLM et les mettre en pratique soi-même
  • Le code fonctionne sans framework LLM externe supplémentaire et peut être exécuté dans un environnement de notebook standard
  • Il inclut divers exemples bonus et supports pratiques offrant une aide concrète à l’apprentissage pour les développeurs et les chercheurs
  • Avec des bases en Python seulement, chacun peut découvrir pas à pas les principes et les détails d’implémentation d’un LLM

Importance et différenciation du projet open source

Ce dépôt fournit l’ensemble du code nécessaire pour implémenter, préentraîner et affiner directement des grands modèles de langage de type GPT. Contrairement à la plupart des exemples de grands modèles de langage, il permet d’expérimenter et de s’entraîner directement en local en utilisant uniquement PyTorch, sans bibliothèque externe dédiée aux LLM. En particulier, le fait de proposer aussi un modèle léger comme Gemma 3 270M avec un code détaillé constitue un avantage pratique majeur, car les chercheurs débutants et les développeurs peuvent suivre la structure réelle de l’implémentation et assimiler les principes en profondeur.

Contenu principal et structure du dépôt

  • Mise à disposition du dépôt de code officiel du livre "Build a Large Language Model (From Scratch)"
  • Inclusion de code d’exemple étape par étape couvrant l’implémentation directe d’un LLM de style GPT, ainsi que l’ensemble des étapes de préentraînement et de fine-tuning
  • Le dépôt traite en détail la logique d’implémentation des grands modèles de langage et propose une approche facile à suivre pour les débutants grâce à des explications claires, des schémas et du code d’exemple à chaque étape
  • En expliquant en détail les méthodologies d’entraînement de modèles à grande échelle et le processus d’implémentation réel, il permet d’apprendre concrètement les méthodes utilisées dans des services réels comme ChatGPT
  • Inclut des exemples liés au chargement des poids de modèles préentraînés et au fine-tuning

Guide de la structure du dépôt

  • Fournit le dépôt officiel du code source, les informations sur le livre, l’ISBN, etc., ainsi que des liens utiles pour la pratique et la référence
  • Pour chaque chapitre, il est possible de consulter des notebooks Jupyter et des scripts Python, ainsi que des exercices pas à pas, des problèmes d’entraînement et des supports complémentaires
  • Les supports complémentaires et exemples bonus incluent divers contenus pratiques directement utiles en contexte professionnel, comme le mécanisme d’Attention, les tokenizers, l’optimisation des performances, l’analyse des FLOPS, le réglage des hyperparamètres ou encore la conversion de modèles Llama

Prérequis et exigences matérielles

  • Une compréhension de base de la programmation Python suffit pour comprendre les principes des LLM et les exercices pratiques
  • Une familiarité avec PyTorch n’est pas indispensable ; connaître la syntaxe de base suffit
  • Les exemples peuvent être exécutés sur un notebook classique sans matériel haut de gamme dédié
  • Si un GPU est disponible, il est automatiquement détecté afin d’accélérer l’entraînement

Ressources supplémentaires et contenu pratique renforcé

  • Chaque chapitre propose du code pratique et des notebooks d’exercices
  • Un quiz book PDF gratuit de 170 pages (environ 30 questions par chapitre) soutient l’apprentissage en autonomie
  • Dans les cours vidéo (17 h 15, sur la plateforme d’édition Manning), l’auteur implémente directement le code et explique les points clés de l’ensemble des chapitres

Recherche et participation à la communauté

  • Les questions, avis et discussions sont activement partagés sur le forum Manning et dans GitHub Discussions
  • Afin de préserver la cohérence entre le livre et le code, les contributions externes au code principal du dépôt sont limitées ; il est recommandé de discuter séparément des propositions de correction ou d’amélioration

Références et consignes de citation

  • Ce projet et ce code peuvent être utilisés directement pour la recherche sur le développement et l’expérimentation des LLM
  • En cas de citation dans un article scientifique, un blog technique, etc., des exemples de style Chicago et de BibTeX sont fournis

Résumé

Ce dépôt offre la possibilité d’implémenter et de mettre en pratique directement, uniquement avec PyTorch, des grands modèles de langage comme Gemma 3 270M. Contrairement aux autres projets open source autour des LLM, son principal atout est de permettre d’apprendre et d’expérimenter les principes fondamentaux et le flux complet dans l’environnement le plus simple possible. Il inclut une structure optimisée pour aider les développeurs et chercheurs débutants à comprendre les LLM et à les pratiquer, avec des exemples, des supports complémentaires et des exercices.

1 commentaires

 
GN⁺ 2025-08-21
Avis Hacker News
  • Bonjour, j’ai participé à la création de ce modèle avec une équipe formidable. J’ai répondu à beaucoup de questions la semaine dernière lorsque ce modèle a fait la une. S’il y a d’autres questions ici aussi, j’y répondrai volontiers. Personnellement, je suis très enthousiaste à l’idée que vous puissiez tous désormais accéder à ce modèle. J’espère qu’il vous sera utile. Voir aussi le précédent lien de Q&R
    • Je me demande ce que vous pensez du fait d’utiliser les 2/3 de tous les paramètres pour les embeddings dans un modèle aussi petit. En utilisant un vocabulary au niveau des octets et en allouant davantage aux paramètres du transformer, le traitement des tokens serait plus lent, mais la précision n’augmenterait-elle pas ?
    • Question très basique, mais je me demande pourquoi, dans l’app AI edge gallery, quand on exécute le modèle tflite sur GPU, il n’affiche que "[multimodal][multimodal]", alors que sur CPU cela fonctionne normalement
    • Je ne suis pas MLE (Machine Learning Engineer), donc je me demande quels sont les avantages et les inconvénients de la réimplémentation PyTorch de l’OP
    • C’est un LM compact étonnamment impressionnant. Je serais curieux de savoir sur quel matériel il a été entraîné et combien de temps l’entraînement a pris
    • Merci d’avoir fait ça. J’avais déjà implémenté un chatbot Discord avec BERT, donc passer à 270M de paramètres me réjouit vraiment
  • Je me demande si quelqu’un (ou l’OP) pourrait partager une recette pour fine-tuner ce modèle afin de l’appliquer à des tâches de langage naturel comme la NER avancée. Depuis la publication de Gemma3 270M la semaine dernière, j’ai essayé quelques tutoriels sans grand succès. La plupart sont orientés chat ou jeu de rôle, alors que mon travail consiste surtout à extraire et nettoyer des entités à partir de PDF, et il est difficile de trouver des conseils spécialisés pour ce type d’usage. Je pense que ce modèle pourrait bien convenir à cela
    • S’il s’agit d’une tâche de NER traditionnelle (extraire des entités sur des spans de tokens non chevauchants), il vaudrait probablement mieux utiliser un modèle encoder-only (par exemple bert-large-NER) ou un modèle encoder-decoder (par ex. t5-base-conll03-english). Ces modèles d’encodage attirent moins l’attention aujourd’hui, mais ils restent très solides pour les tâches NLP établies qui ne nécessitent pas de génération, et à nombre de paramètres égal, on peut s’attendre à une précision NER nettement supérieure à celle des modèles decoder-only
    • Il est possible d’utiliser la bibliothèque Python gemma-llm (basée sur JAX). Voir le tutoriel correspondant
    • Avez-vous testé aussi ce modèle NER ? Je serais curieux d’avoir votre avis sur les cas d’usage auxquels il convient particulièrement
  • Je me demande si cela s’inscrit dans la même logique que ce que les gens faisaient auparavant avec des projets du type « inference d’un <modèle> écrite en Go, Python, Java, etc. »
  • D’après mon expérience, je suis un dev qui n’a utilisé que de grands modèles commerciaux (sonnet, ChatGPT, etc.). Je me demande à quoi peuvent servir ces petits modèles locaux. Existe-t-il des cas d’usage immédiatement exploitables, ou faut-il au final toujours un post-traitement / un entraînement supplémentaire ? L’écart semble important entre les utilisateurs d’outils commerciaux et les experts des modèles, et je ne sais pas trop comment combler cette étape intermédiaire
    • Les usages les plus courants (hors éducation) sont les suivants :
      • modèles privés on-device (latence plus faible qu’une API web, exécution possible en edge)
      • recherche algorithmique (prototypage rapide et peu coûteux)
      • tâches peu coûteuses de classification / catégorisation (pas besoin d’un decoder LLM, même si des réponses libres peuvent parfois être utiles), vérification basique de grammaire, routeur (par ex. à la GPT-5), etc.
    • Excellente question. J’ai rédigé une réponse détaillée, vous pouvez la consulter ici : lien vers la réponse détaillée
    • Résumé : c’est particulièrement utile pour les résumés et l’usage d’outils très simples. Ça tourne en edge sans aller-retour Internet, donc le coût est nul
    • Il y a aussi un potentiel pour la confidentialité et la vie privée
  • Je trouve étonnant qu’après application du KV cache + compilateur sur CPU Mac, ce soit plus rapide que sur GPU A100
    • Cela peut être simplement dû au fait que la petite taille du modèle n’exploite pas vraiment les performances du GPU. Par exemple, pour Qwen3 0.6B, le GPU A100 est plus rapide, comme on peut le voir dans ce lien de référence
    • Vu que la version compilée est plus lente sur A100 que le mode eager, il semble clairement y avoir des parties non optimisées
    • Je suppose que cela pourrait venir du fait que le CPU et le GPU d’un Mac partagent la mémoire, alors qu’avec l’A100, si certaines opérations ne sont pas prises en charge sur le GPU, les données doivent être transférées vers la RAM / le CPU
    • Je me demande si le GPU n’arrive pas à remplir la waveform, et ne peut donc pas masquer la latence mémoire
  • Je me demande à quoi peuvent servir les embeddings 270M, et si des embeddings au niveau du token sont appropriés ou si l’on obtient aussi de bons embeddings de phrases / documents. Faut-il un fine-tuning séparé pour utiliser de façon pertinente des embeddings de phrases / documents ?
  • Si l’on entraînait le modèle complet depuis zéro, combien de temps cela prendrait-il avec une configuration GPU raisonnable ?
    • À titre de référence, un modèle 124M traité sur un GPU 3090 atteint environ 500 000 tokens par batch, avec environ 10 secondes pour le forward + backward. Pour entraîner les 6 000 milliards de tokens (volume d’entraînement de ce modèle), il faudrait environ 4 ans. En bref : « beaucoup trop longtemps »
    • Cela dépend de ce que vous entendez par « raisonnable », mais en général, l’entraînement pure scratch à partir de zéro dans un environnement domestique prendrait vraiment très longtemps. C’est justement l’une des raisons pour lesquelles ce modèle a été publié. Désormais, il est possible d’obtenir des résultats utiles sur divers matériels uniquement via le fine-tuning, sans entraînement from scratch
  • Je me demande si un modèle aussi petit peut vraiment avoir une utilité dans le monde réel (hors apprentissage et académique)
    • Oui ! Et ce n’est pas juste un support pédagogique ou un jouet : il a une vraie valeur en production pour des tâches répétitives ou comme modèle rapide pour développeurs en environnement entreprise / local. Voici un exemple inspiré d’un besoin passé de traitement de texte en temps réel. Voir le tutoriel de streaming ML réalisé avec une ancienne version de Gemma, ainsi que la vidéo de démo. En théorie, on peut maintenant reproduire cela avec Gemma 270M
    • Avec un fine-tuning LoRa, on peut aussi obtenir d’excellentes performances dans des domaines très spécifiques. Par exemple :
      • répondre uniquement dans un schéma JSON donné, ou avec la voix d’un personnage précis
      • classification de texte (par ex. e-mails, spam, etc.)
      • résumé de gros volumes de texte (e-mails → titre/slug)
      • classification par tags selon des règles prédéfinies, content marketing, etc.
      • détection de spam / doublons / contenus à signaler
      • justement parce que ces petits modèles « simples » ont moins de connaissances sur le monde, ils inventent aussi moins facilement des absurdités, ce qui peut être un avantage dans des domaines étroits
    • Il donne souvent des résultats corrects sur des tâches de traduction multilingue à partir d’un texte source (par ex. conversation de voyage). Exemple :
      (texte original en ukrainien) Rochechouart est une ville de France, située dans le département de la Haute-Vienne en région Nouvelle-Aquitaine… population 3637 (2022), à environ 360 km au sud de Paris et 34 km à l’ouest de Limoges.
      (traduction produite par le modèle) Rochechouart est une ville de France, située dans le département de la Haute-Vienne en région Nouvelle-Aquitaine. Population 3637 (2022). À environ 360 km de Paris et 34 km de Lyon.
      (la traduction de l’article vietnamien sur les aides au solaire résidentiel est également globalement correcte)
      
      Sources wiki : Wikipédia en ukrainien, actualité vietnamienne
    • C’est utile pour les tâches qui interagissent avec le langage naturel, mais pour lesquelles on n’attend pas du modèle qu’il possède beaucoup de connaissances en interne. Utile là où l’information est validée / récupérée à l’extérieur, comme le tool use ou les embeddings
  • J’ai cliqué en croyant qu’il s’agissait d’un nouveau produit d’interface 3270, et ce n’était pas du tout ce à quoi je m’attendais
  • Une personne vraiment impressionnante