La nouvelle IA de Google génère plus de 1 000 jetons par seconde (DiffusionGemma)

BBetter Stack
컴퓨터/소프트웨어게임/e스포츠

Transcript

00:00:00Google fait beaucoup parler de lui dernièrement. La semaine dernière, j'ai fait une vidéo sur leur modèle
00:00:05Gemma 4 révolutionnaire sans encodeur, et cette semaine, ils ont sorti un autre modèle incroyablement innovant. Il s'appelle Diffusion
00:00:11Gemma, et ce modèle est fulgurant. Il est capable de générer plus de mille jetons
00:00:18par seconde, et la raison pour laquelle il en est capable, c'est qu'il génère du texte d'une manière
00:00:23complètement différente de tout autre modèle que vous avez pu utiliser auparavant. Dans cette vidéo, nous allons donc examiner
00:00:29Diffusion Gemma, voir comment il fonctionne et je vous montrerai également comment vous pouvez le tester par vous-même.
00:00:35Ça va être très amusant, alors plongeons dans le vif du sujet.
00:00:41Tous les modèles linguistiques avec lesquels vous avez interagi fonctionnent de la même manière fondamentale. Ils sont auto-régressifs,
00:00:48ce qui est un terme sophistiqué pour dire qu'ils génèrent un jeton à la fois, de gauche à droite. Ils écrivent un mot,
00:00:54puis ils examinent tout ce qui a été écrit jusqu'à présent et prédisent le mot suivant, et le cycle
00:00:59se répète. Et la façon dont cela fonctionne pour les grands modèles commerciaux comme Claude ou GPT, c'est que lorsqu'un serveur
00:01:06génère un jeton, le plus clair du temps n'est pas consacré au calcul, mais au chargement des poids du modèle
00:01:12depuis la mémoire. Et c'est assez inefficace si vous ne servez qu'un seul utilisateur. C'est pourquoi les serveurs regroupent des centaines
00:01:19d'utilisateurs, chargent les poids une seule fois et les exécutent pour tout le monde en même temps. Ainsi,
00:01:25vous pouvez servir 256 utilisateurs avec un seul chargement en mémoire. Mais lorsque vous exécutez un modèle localement, vous êtes le seul utilisateur,
00:01:33donc personne n'est là pour être regroupé avec vous. Le GPU charge la partie massive des poids, effectue un tout petit
00:01:39calcul pour produire un jeton, puis reste inactif avant de tout recommencer. En termes techniques,
00:01:46cela s'appelle être limité par la mémoire (memory bound). Votre coûteux GPU passe la majeure partie de son temps à attendre le prochain
00:01:52jeton au lieu de réellement calculer. Google DeepMind s'est donc penché sur ce problème et a posé une question
00:01:58intelligente : si le cloud comble le temps d'inactivité en servant 256 utilisateurs à la fois, que se passerait-il si nous comblions ce temps
00:02:07d'inactivité pour un seul utilisateur ? Au lieu d'un jeton pour 256 personnes, que se passerait-il si nous générions 256 jetons pour une
00:02:16personne, tous en même temps ? C'est toute l'idée derrière Diffusion Gemma. Au lieu d'écrire mot après mot,
00:02:23le modèle commence avec une toile (canvas), qui est une ligne de 256 jetons de remplacement complètement aléatoires. Donc, ce n'est que
00:02:31du bruit. Et son travail consiste à corriger cette toile, toutes les positions à la fois, et à la transformer en vrai texte. Ainsi, en prédisant
00:02:38les 256 jetons en un seul coup, vous donnez à votre GPU une grosse charge de travail réel au lieu de le laisser inactif. De cette façon,
00:02:46vous faites passer le modèle d'une limitation par la mémoire à une limitation par le calcul, et toute cette puissance inutilisée est enfin exploitée.
00:02:53Mais ce n'est pas aussi simple qu'il y paraît. Prédire 256 jetons à la fois est vraiment difficile.
00:03:01Car comment le modèle peut-il deviner le jeton numéro 254 alors qu'il n'a aucune idée de ce que sont devenus les jetons
00:03:091 à 253 ? C'est exactement ce qui se passe. Les premiers jetons sont bons, mais plus on avance,
00:03:15plus tout cela sombre dans le non-sens. Mais que se passerait-il si, au lieu de faire un seul passage, le modèle en faisait
00:03:21plusieurs ? C'est là l'astuce clé. Le modèle passe sur la toile encore et encore, mais maintenant il
00:03:28peut voir ses propres suppositions précédentes. Les jetons qu'il a prédits avec confiance deviennent des indices contextuels qui
00:03:35aident à corriger les jetons plus confus. Et le plus cool, c'est qu'il n'a besoin que de quelques passages. Bien moins de passages que
00:03:42le nombre total de 256 jetons. C'est exactement de là que vient la vitesse du modèle. Vous avez probablement déjà vu
00:03:49cette astuce auparavant. Cela s'appelle la diffusion. Vous partez d'un bruit et vous l'affinez étape par étape. Et
00:03:55c'est exactement la même idée qui alimente les générateurs d'images par IA. La façon dont le modèle l'apprend est
00:04:01en ajoutant délibérément du bruit à de vraies images lors de l'entraînement, puis en apprenant à prédire et à soustraire ce bruit.
00:04:07Mais comment appliquer ce même concept au texte ? C'est là que réside la difficulté. Car avec une image,
00:04:14le bruit est facile. Rendre un pixel un peu plus rouge ou bleu. Mais avec du texte, comment rendre le mot
00:04:19« le » un peu moins « le » ? Que signifie même ce bruit pour un mot ? Eh bien, DeepMind a trouvé
00:04:27quelque chose appelé « uniform state diffusion » (diffusion d'état uniforme). Au lieu de jouer avec les lettres, vous traitez le mot
00:04:32remplacé au hasard comme étant le bruit. Pour corrompre votre texte d'entraînement, vous remplacez certains vrais mots par des mots
00:04:38aléatoires. Et le travail du modèle consiste à comprendre quels mots sont des déchets et à les corriger progressivement par plusieurs passages.
00:04:45Il existe en fait une version plus simple pour faire cela, appelée diffusion par masquage, qui efface simplement les jetons.
00:04:51Mais celle-ci présente un gros défaut. Une fois que le modèle s'est engagé sur un mot, il est bloqué pour toujours. Il a le même
00:04:57problème que les modèles auto-régressifs. Mais la diffusion d'état uniforme résout cela en gardant toujours une sorte de jeton dans
00:05:04chaque position. Ainsi, un modèle peut examiner un mot qu'il a accepté trois étapes auparavant, décider s'il ne convient
00:05:10plus et le remplacer. Nous pouvons donc essentiellement le corriger tout du long. Mais cette solution
00:05:15a aussi un piège. La diffusion nécessite un encodeur pour comprendre votre invite et un débruiteur pour nettoyer la
00:05:23toile. DeepMind a donc développé un patch encodeur-débruiteur. Il est construit sur leur modèle existant de 26 milliards
00:05:30de paramètres GEMMA4, et il bascule entre les deux modes lors de la génération de votre réponse. En mode encodeur,
00:05:36le modèle lit votre invite, essaie d'en extraire un peu de contexte et de conseils. Il recueille tout cela
00:05:42dans un cache KV, puis le transmet directement au débruiteur. Le travail du débruiteur consiste essentiellement à
00:05:49nettoyer la toile. Il fait cela en faisant deux choses. D'abord, souvenez-vous de la façon dont un LLM normal produit un
00:05:56score de confiance ou un logit pour chaque position, mais les rejette tous sauf le dernier ? Soit dit
00:06:02en passant, si vous êtes confus ici, j'ai aussi fait une vidéo il y a quelque temps expliquant comment les LLM fonctionnent plus
00:06:07en détail. Alors regardez cette vidéo si cela vous intéresse. Essentiellement, Diffusion GEMMA ne rejette pas
00:06:13les scores. Il conserve tous ces scores de confiance parce que chaque position sur la toile a besoin de sa propre prédiction.
00:06:19Et deuxièmement, ce débruiteur n'utilise pas l'attention causale, qui est la règle selon laquelle un mot ne peut
00:06:25regarder que vers l'arrière, ce qui est la façon dont fonctionnent les modèles auto-régressifs. À la place, il la remplace par une attention
00:06:31bi-directionnelle. Donc, maintenant, chaque jeton peut voir tous les autres jetons dans toutes les directions. Ainsi, pour chaque position,
00:06:38vous appliquez ces scores de confiance, regardez les autres jetons et nettoyez la toile lentement, étape par étape.
00:06:44C'est ainsi que Diffusion GEMMA est capable d'atteindre sa vitesse incroyable de plus de 1000 jetons par seconde
00:06:51sur un GPU H100. Maintenant, je dois être franc avec vous. Ce n'est pas une solution miracle. Avec ces nouvelles tactiques,
00:06:58Diffusion GEMMA échange essentiellement la qualité contre la vitesse. Pour un travail de qualité maximale, le GEMMA 4 standard
00:07:05reste un meilleur choix. Ce modèle est construit spécifiquement pour des tâches locales critiques comme l'édition en ligne, le remplissage de code
00:07:13ou l'itération rapide. Et il est particulièrement fort pour les tâches non linéaires comme remplir le milieu
00:07:19d'un bloc de code ou même résoudre un puzzle de Sudoku, ce pour quoi les modèles normaux de gauche à droite sont vraiment assez mauvais.
00:07:26Tout cela semble fascinant, mais testons-le par nous-mêmes et voyons comment cela fonctionne en action.
00:07:33Google a ouvert le code source des poids sous licence Apache 2.0 sur Hugging Face.
00:07:38Donc, si vous avez un GPU puissant comme une RTX 5090, vous pourriez essayer de l'exécuter localement. Et il existe aussi une
00:07:44recette spéciale pour VLLM que vous pouvez exécuter sur Docker pour rationaliser ce processus. Mais je suis vraiment curieux de
00:07:51voir si ce modèle peut vraiment atteindre plus de 1000 jetons par seconde. Donc, pour ce test, je vais essayer d'exécuter
00:07:58le modèle sur un GPU H100 en utilisant un conteneur RunPod et voir comment ça se passe. Soit dit en passant, j'ai aussi
00:08:04publié un modèle Diffusion GEMMA pour l'exécuter sur RunPod. Donc, si vous voulez reproduire ce test,
00:08:10tout ce que vous avez à faire est d'exécuter ce modèle lors de la création d'un nouveau pod. Donc, pour faire ce test sur RunPod,
00:08:15je vais choisir le conteneur H100. Et comme je l'ai mentionné avant, j'ai créé un modèle Diffusion GEMMA
00:08:22que vous pouvez réutiliser. Donc, vous pouvez juste cliquer sur « volume disk » et ensuite cliquer sur « deploy »
00:08:28à la demande. Et cela prendra quelques minutes jusqu'à ce qu'il télécharge le conteneur et lance tout.
00:08:34Et si nous allons dans les journaux, si vous voyez « application startup complete », cela signifie que VLLM est prêt
00:08:40et qu'il est maintenant accessible via le port 8000. Si nous ouvrons ceci, vous verrez « detail not found »,
00:08:46mais ne vous en inquiétez pas. Cela signifie qu'il fonctionne réellement. Nous avons juste besoin de copier cette URL. Donc, pour
00:08:52configurer Diffusion GEMMA pour l'exécuter dans un terminal d'agent IA, quelque chose comme OpenCode, vous devez
00:08:58configurer vos paramètres OpenCode pour accéder au serveur distant. Donc, vous pouvez faire cela avec cette simple
00:09:04commande et cela ouvrira le fichier de configuration. Et ici, je spécifie simplement notre serveur RunPod et
00:09:11il a le modèle Diffusion GEMMA sélectionné. Et vous pouvez juste sauvegarder ce fichier et lancer OpenCode.
00:09:17Donc, dans ce test, je vais lui demander de générer un tableau de suivi des finances personnelles appelé « Ledger ».
00:09:24Et voyons à quelle vitesse il peut générer ça. Regardez ça. Instantanément, il commence à diffuser tout de suite.
00:09:34Regardez à quelle vitesse fulgurante c'est. Incroyable. Wow. C'est fou. Et ici dans les journaux,
00:09:43nous pouvons voir qu'il atteint en moyenne 700 jetons par seconde. Donc, pour la phase de sortie, ça a un peu baissé,
00:09:50mais pendant la phase de raisonnement, c'est monté jusqu'à 700 jetons par seconde. C'est fou. Alors ouvrons-le.
00:09:58OK. Donc ça ressemble à un tableau de bord. C'est sympa. OK. Nous avons effectivement quelques catégories
00:10:06et des trucs qui se passent ici. Si nous ajoutons quelque chose ici. Oh, il l'ajoute en tant que dépense. Donc les
00:10:13dépenses ne se mettent pas vraiment à jour. Donc ce n'est pas entièrement fonctionnel, mais au moins certaines parties sont interactives.
00:10:20Pour cette tâche suivante, voyons s'il peut réellement créer un jeu de style arcade.
00:10:26Alors lançons-le. Encore une fois, la vitesse est tout simplement folle. OK. Celui-ci prend un peu plus de temps.
00:10:36Nous avons effectivement deux fichiers ici. Intéressant, intéressant. OK. Donc il a remarqué une faute de frappe et il a ensuite
00:10:44re-traité le fichier HTML, ce qui est plutôt bien. OK. Très bien. Ouvrons celui-ci. Restart.
00:10:52Oh, wow. Celui-ci, il fonctionne. Oh, wow. C'est cool. Wow. Très sympa. C'est impressionnant. Donc le jeu est
00:11:03entièrement fonctionnel et il a fallu 14 secondes pour générer ce jeu. 14 secondes pour générer un jeu comme celui-ci.
00:11:11Donc, bien que leur page marketing disait que nous pourrions attendre des vitesses de 1000 jetons par seconde sur le H
00:11:18100. Ce n'était pas mon observation. Euh, je ne sais pas. Peut-être qu'il y a quelque chose que je devrais ajuster dans le
00:11:26modèle ou dans mes invites, mais néanmoins, je suis vraiment impressionné. C'est une bête. Donc voilà,
00:11:33les amis. C'est Diffusion Gemma en quelques mots. Je pense que celui-ci est l'une des versions les plus intéressantes
00:11:38de l'année car il prouve que vous pouvez prendre un paradigme de génération totalement différent du monde de l'image,
00:11:44l'appliquer à un modèle existant que vous avez déjà entraîné et débloquer de réels gains de vitesse pour des configurations
00:11:51locales à utilisateur unique. Et je pense que cela ouvre aussi la porte à toute une nouvelle famille de modèles locaux rapides et interactifs
00:11:58qui utilisent le plein potentiel de votre matériel au lieu de le laisser inactif. Alors, que pensez-vous
00:12:04de Diffusion Gemma ? L'avez-vous essayé ? L'utiliserez-vous ? Dites-le-nous dans la section des commentaires ci-dessous.
00:12:09Et les amis, si vous aimez ces types d'analyses techniques, faites-le moi savoir en cliquant sur
00:12:14le bouton « J'aime » sous la vidéo. Et n'oubliez pas non plus de vous abonner à notre chaîne. C'était
00:12:19Andrus de Betterstack et je vous verrai dans les prochaines vidéos.

Key Takeaway

Diffusion Gemma transforme la génération de texte en une approche de diffusion parallèle, permettant de corriger 256 jetons simultanément pour atteindre des vitesses de génération élevées sur du matériel local.

Highlights

  • Diffusion Gemma génère du texte avec une vitesse atteignant 700 jetons par seconde sur un GPU H100, une performance nettement supérieure aux modèles auto-régressifs traditionnels.

  • Le modèle utilise un paradigme de diffusion où il commence avec une toile de 256 jetons aléatoires et les corrige simultanément en plusieurs passages.

  • Contrairement aux modèles auto-régressifs qui sont limités par la mémoire, Diffusion Gemma est limité par le calcul, permettant d'exploiter la pleine puissance du GPU pour un utilisateur unique.

  • L'architecture repose sur une technique de diffusion d'état uniforme, remplaçant certains mots par des jetons aléatoires pendant l'entraînement et apprenant à les corriger progressivement.

  • Le modèle utilise une attention bidirectionnelle, permettant à chaque jeton d'analyser tous les autres jetons dans toutes les directions au lieu de se limiter à la gauche.

  • Diffusion Gemma excelle dans les tâches non linéaires telles que le remplissage de code ou la résolution de puzzles, là où les modèles standards de gauche à droite sont moins efficaces.

Timeline

Limitations des modèles auto-régressifs

  • Les modèles linguistiques actuels sont auto-régressifs, générant un jeton à la fois de gauche à droite.
  • Ces modèles sont limités par la mémoire (memory bound), car le GPU passe la majorité de son temps à charger les poids du modèle pour un seul utilisateur.
  • Le regroupement de centaines d'utilisateurs sur les serveurs commerciaux permet de maximiser l'utilisation du GPU, une option indisponible pour une exécution locale.

Les LLM classiques génèrent du texte de manière séquentielle, chaque mot dépendant du précédent. Sur un serveur, le coût computationnel est dominé par le chargement des poids en mémoire plutôt que par le calcul pur. Lorsqu'un seul utilisateur exécute le modèle localement, le GPU reste inactif pendant une grande partie du processus, attendant le prochain jeton.

Le mécanisme de Diffusion Gemma

  • Le modèle génère 256 jetons simultanément à partir d'une toile de bruit aléatoire au lieu d'un mot à la fois.
  • Des passages multiples sur la toile permettent au modèle d'utiliser ses prédictions précédentes comme indices contextuels pour affiner les jetons confus.
  • L'entraînement utilise la diffusion d'état uniforme, où certains mots sont remplacés par des jetons aléatoires, forçant le modèle à apprendre à les corriger.

Pour maximiser l'utilisation du GPU, Diffusion Gemma traite 256 positions en un seul passage. Pour surmonter la difficulté de prédire des jetons sans connaître le contexte précédent, le modèle effectue plusieurs itérations de correction. Cette méthode transforme la contrainte mémoire en une contrainte de calcul, exploitant pleinement les capacités de traitement matériel.

Architecture et implémentation technique

  • Diffusion Gemma utilise un patch encodeur-débruiteur basé sur le modèle Gemma 4 de 26 milliards de paramètres.
  • L'attention bidirectionnelle permet à chaque jeton d'être influencé par tous les autres jetons environnants dans la toile.
  • Le modèle sacrifie une partie de la qualité globale au profit de la vitesse, ce qui le rend idéal pour des tâches locales comme l'édition de code.

Contrairement aux modèles normaux qui rejettent les scores de confiance pour ne garder que le mot final, ce modèle conserve tous les scores pour chaque position. En remplaçant l'attention causale par une attention bidirectionnelle, il peut corriger et nettoyer la toile de manière globale. Il est particulièrement efficace pour des tâches spécifiques comme le remplissage de blocs de code ou les puzzles.

Performance et tests pratiques

  • Un test sur GPU H100 via RunPod a atteint une moyenne de 700 jetons par seconde lors de la génération de code.
  • Le modèle a généré un jeu fonctionnel en 14 secondes, démontrant ses capacités pour l'itération rapide.
  • Le code source et les poids sont disponibles sous licence Apache 2.0 sur Hugging Face.

L'implémentation pratique a montré une vitesse impressionnante, bien que légèrement inférieure aux 1000 jetons par seconde théoriques. L'utilisation via VLLM sur un conteneur RunPod permet d'intégrer facilement le modèle dans des environnements de développement. Cette technologie ouvre des perspectives pour de futures applications locales interactives et rapides.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video