Maison Périphériques technologiques IA Avec moins de 1 000 lignes de code, l'équipe PyTorch a rendu Llama 7B 10 fois plus rapide

Avec moins de 1 000 lignes de code, l'équipe PyTorch a rendu Llama 7B 10 fois plus rapide

Dec 05, 2023 pm 03:14 PM
入门 pytorch

L'équipe PyTorch vous apprend personnellement comment accélérer l'inférence de grands modèles.

Au cours de la dernière année, l'IA générative s'est développée rapidement. Parmi eux, la génération de texte a toujours été un domaine particulièrement populaire tels que lama.cpp, vLLM, MLC-LLM, etc. afin d'obtenir de meilleurs résultats, une optimisation continue est effectuée.

En tant que l'un des frameworks les plus populaires dans la communauté du machine learning, PyTorch a naturellement saisi cette nouvelle opportunité et l'a continuellement optimisée. Pour aider chacun à mieux comprendre ces innovations, l'équipe PyTorch a spécialement mis en place une série de blogs pour se concentrer sur la façon d'utiliser PyTorch natif pur pour accélérer les modèles d'IA génératifs.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Adresse du code : https://github.com/pytorch-labs/gpt-fast

Dans le premier blog, l'équipe PyTorch a montré comment réécrire Segment Anything en utilisant uniquement PyTorch natif pur (SAM ), qui est 8 fois plus rapide que l'implémentation originale . Dans ce blog, ils nous apportent quelque chose de nouveau, à savoir comment accélérer l'inférence LLM.

Jetons d'abord un coup d'œil aux résultats. L'équipe a réécrit LLM et la vitesse d'inférence était 10 fois plus rapide que la ligne de base sans perte de précision, en utilisant moins de 1000 lignes de code PyTorch natif pur !

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Tous les benchmarks fonctionnent sur A100-80GB, puissance limitée à 330W.

Ces optimisations incluent :

  • Torch.compile : compilateur de modèles PyTorch, PyTorch 2.0 ajoute une nouvelle fonction appelée torch.compile (), qui peut compiler des modèles existants avec une seule ligne de code. Accélérer le modèle ;
  • Quantification GPU : accélère le modèle en réduisant la précision de calcul ;
  • Décodage spéculatif : une méthode d'accélération d'inférence de grand modèle qui utilise un petit "projet" de modèle pour prédire de grandes "cibles" ;
  • Tensor Parallel : accélérez l'inférence de modèle en exécutant le modèle sur plusieurs appareils.

Voyons ensuite comment chaque étape est mise en œuvre.

6 étapes pour accélérer l'inférence du grand modèle

L'étude montre qu'avant optimisation, la performance d'inférence du grand modèle est de 25,5 tok/s, ce qui n'est pas très bon :

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Après quelques explorations, j'ai finalement trouvé la raison : une surcharge CPU excessive. Ensuite, il y a le processus d’optimisation en 6 étapes suivant.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape 1 : Réduisez la surcharge du processeur avec Torch.compile et le cache KV statique pour atteindre 107,0 TOK/S

torch.compile permet aux utilisateurs de capturer des régions plus grandes dans une seule région de compilation, en particulier en mode ="reduce-overhead" (reportez-vous au code ci-dessous), cette fonction est très efficace pour réduire la surcharge du processeur. De plus, cet article spécifie également fullgraph=True pour vérifier qu'il n'y a pas d'"interruption du graphique" dans le modèle (c'est-à-dire). , la partie que torch.compile ne peut pas compiler).

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Cependant, même avec la bénédiction de torch.compile, il reste encore quelques obstacles.

Le premier obstacle est le cache kv. Autrement dit, lorsque l'utilisateur génère plus de jetons, la « longueur logique » du cache kv augmente. Ce problème se produit pour deux raisons : premièrement, il est très coûteux de réaffecter (et de copier) le cache kv à chaque fois que le cache augmente ; deuxièmement, cette allocation dynamique rend plus difficile la réduction de la surcharge ;

Afin de résoudre ce problème, cet article utilise un cache KV statique, alloue statiquement la taille du cache KV, puis masque les valeurs inutilisées dans le mécanisme d'attention.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Le deuxième obstacle est l'étape de pré-remplissage. La génération de texte avec Transformer peut être considérée comme un processus en deux étapes : 1. Étape de pré-remplissage pour traiter l'intégralité de l'invite 2. Décoder le jeton.

Bien que le cache kv soit défini pour être statique, en raison de la longueur variable de l'invite, les étapes de pré-remplissage ont encore besoin de plus de dynamique. Par conséquent, des stratégies de compilation distinctes doivent être utilisées pour compiler ces deux étapes.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Bien que ces détails soient un peu délicats, ils ne sont pas difficiles à mettre en œuvre et les améliorations de performances sont énormes. Après cette opération, les performances ont été multipliées par plus de 4, passant de 25 tok/s à 107 tok/s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape 2 : Réduire le goulot d'étranglement de la bande passante mémoire grâce à la quantification du poids int8 et atteindre 157,4 tok/s

Grâce à ce qui précède, nous avons vu l'impact apporté par l'application de torch.compile, le cache kv statique, etc. Énorme accélération, mais l'équipe PyTorch n'en était pas satisfaite et a trouvé d'autres angles d'optimisation.

Ils pensent que le plus gros goulot d'étranglement dans l'accélération de la formation en IA générative est le coût de chargement des poids de la mémoire globale du GPU dans les registres. En d’autres termes, chaque passe avant doit « toucher » chaque paramètre du GPU. Alors, à quelle vitesse pouvons-nous théoriquement « accéder » à chaque paramètre du modèle ?

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Pour mesurer cela, cet article utilise l'utilisation de la bande passante du modèle (MBU), son calcul est très simple comme suit :

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Par exemple, pour un modèle de paramètres 7B, chaque paramètre est stocké dans In fp16 (2 octets par paramètre), 107 jetons/s peuvent être atteints. L'A100-80GB dispose d'une bande passante mémoire théorique de 2 To/s.

Comme le montre la figure ci-dessous, en mettant la formule ci-dessus dans des valeurs spécifiques, vous pouvez obtenir un MBU de 72 % ! Ce résultat est plutôt bon, car de nombreuses études ont du mal à dépasser les 85 %.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Mais l'équipe PyTorch souhaite également augmenter cette valeur. Ils ont constaté qu’ils ne pouvaient pas modifier le nombre de paramètres du modèle, ni la bande passante mémoire du GPU. Mais ils ont découvert qu’ils pouvaient modifier le nombre d’octets stockés pour chaque paramètre !

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Donc, ils vont utiliser la quantification int8.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Veuillez noter qu'il ne s'agit que des poids quantifiés, le calcul lui-même est toujours effectué dans bf16. De plus, avec torch.compile, il est facile de générer du code efficace pour la quantification int8.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Comme le montre la figure ci-dessus, il peut être vu sur la ligne bleu foncé (torch.compile + int8) que lors de l'utilisation de torch.compile + int8 uniquement pour la quantification du poids, les performances sont considérablement améliorées.

L'application de la quantification int8 au modèle Llama-7B améliore les performances d'environ 50 % à 157,4 jetons/s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape 3 : Utiliser le décodage spéculatif

Même après avoir utilisé des techniques telles que la quantification int8, l'équipe était toujours confrontée à un autre problème, c'est-à-dire que pour générer 100 jetons, le poids 100 doit être chargé de second ordre.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Même si les poids sont quantifiés, charger les poids encore et encore est inévitable. Comment résoudre ce problème ? Il s’avère que l’exploitation du décodage spéculatif peut briser cette stricte dépendance sérielle et accélérer le processus.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Cette étude utilise un projet de modèle pour générer 8 jetons, puis utilise un modèle de validation pour les traiter en parallèle, en éliminant les jetons sans correspondance. Ce processus rompt les dépendances série. L'ensemble de l'implémentation nécessite environ 50 lignes de code PyTorch natif.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape 4 : Utilisez la quantification int4 et la méthode GPTQ pour réduire davantage le poids afin d'atteindre 202,1 tok/s

Cet article a révélé que lorsque le poids est de 4 bits, la précision du modèle commence diminuer.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Afin de résoudre ce problème, cet article utilise deux techniques pour le résoudre : la première consiste à avoir un facteur d'échelle plus fin ; l'autre consiste à utiliser une stratégie de quantification plus avancée. En combinant ces opérations ensemble, nous obtenons ce qui suit :

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape 5 : En combinant le tout ensemble, nous obtenons 244,7 tok/s

Enfin, combinez toutes les techniques ensemble pour vous améliorer La performance est de 244,7 tok /s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Étape six : Parallélisme tensoriel

Jusqu'à présent, cet article a porté sur la minimisation de la latence sur un seul GPU. En fait, il est également possible d'utiliser plusieurs GPU, afin que la latence soit encore améliorée.

Heureusement, l'équipe PyTorch fournit des outils de bas niveau pour le parallélisme tensoriel qui ne nécessitent que 150 lignes de code et ne nécessitent aucune modification de modèle.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Toutes les optimisations mentionnées précédemment peuvent continuer à être combinées avec le parallélisme tensoriel, qui fournissent ensemble une quantification int8 pour le modèle Llama-70B à 55 jetons/s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Enfin, résumez brièvement le contenu principal de l'article. Sur Llama-7B, cet article utilise la combinaison « compilation + int4 quant + décodage spéculatif » pour atteindre plus de 240 tok/s. Sur Llama-70B, cet article introduit également le parallélisme tensoriel pour atteindre environ 80 tok/s, ce qui est proche ou supérieur aux performances SOTA.

Lien original : https://pytorch.org/blog/accelerating-generative-ai-2/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un didacticiel sur le modèle de diffusion qui vaut votre temps, de l'Université Purdue Un didacticiel sur le modèle de diffusion qui vaut votre temps, de l'Université Purdue Apr 07, 2024 am 09:01 AM

La diffusion permet non seulement de mieux imiter, mais aussi de « créer ». Le modèle de diffusion (DiffusionModel) est un modèle de génération d'images. Par rapport aux algorithmes bien connus tels que GAN et VAE dans le domaine de l’IA, le modèle de diffusion adopte une approche différente. Son idée principale est un processus consistant à ajouter d’abord du bruit à l’image, puis à la débruiter progressivement. Comment débruiter et restaurer l’image originale est la partie centrale de l’algorithme. L'algorithme final est capable de générer une image à partir d'une image bruitée aléatoirement. Ces dernières années, la croissance phénoménale de l’IA générative a permis de nombreuses applications passionnantes dans la génération de texte en image, la génération de vidéos, et bien plus encore. Le principe de base de ces outils génératifs est le concept de diffusion, un mécanisme d'échantillonnage spécial qui surmonte les limites des méthodes précédentes.

Générez du PPT en un seul clic ! Kimi : Que les « travailleurs migrants PPT » deviennent d'abord populaires Générez du PPT en un seul clic ! Kimi : Que les « travailleurs migrants PPT » deviennent d'abord populaires Aug 01, 2024 pm 03:28 PM

Kimi : En une seule phrase, un PPT est prêt en seulement dix secondes. PPT est tellement ennuyeux ! Pour tenir une réunion, vous devez avoir un PPT ; pour rédiger un rapport hebdomadaire, vous devez avoir un PPT ; pour solliciter des investissements, vous devez présenter un PPT ; même pour accuser quelqu'un de tricherie, vous devez envoyer un PPT ; L'université ressemble plus à une spécialisation PPT. Vous regardez le PPT en classe et faites le PPT après les cours. Peut-être que lorsque Dennis Austin a inventé le PPT il y a 37 ans, il ne s'attendait pas à ce qu'un jour le PPT devienne aussi répandu. Parler de notre dure expérience de création de PPT nous fait monter les larmes aux yeux. "Il m'a fallu trois mois pour réaliser un PPT de plus de 20 pages, et je l'ai révisé des dizaines de fois. J'avais envie de vomir quand j'ai vu le PPT." "À mon apogée, je faisais cinq PPT par jour, et même ma respiration." était PPT." Si vous avez une réunion impromptue, vous devriez le faire

La combinaison parfaite de PyCharm et PyTorch : étapes détaillées d'installation et de configuration La combinaison parfaite de PyCharm et PyTorch : étapes détaillées d'installation et de configuration Feb 21, 2024 pm 12:00 PM

PyCharm est un puissant environnement de développement intégré (IDE) et PyTorch est un framework open source populaire dans le domaine de l'apprentissage profond. Dans le domaine de l'apprentissage automatique et de l'apprentissage profond, l'utilisation de PyCharm et PyTorch pour le développement peut améliorer considérablement l'efficacité du développement et la qualité du code. Cet article présentera en détail comment installer et configurer PyTorch dans PyCharm, et joindra des exemples de code spécifiques pour aider les lecteurs à mieux utiliser les puissantes fonctions de ces deux éléments. Étape 1 : Installer PyCharm et Python

Introduction à cinq méthodes d'échantillonnage dans les tâches de génération de langage naturel et l'implémentation du code Pytorch Introduction à cinq méthodes d'échantillonnage dans les tâches de génération de langage naturel et l'implémentation du code Pytorch Feb 20, 2024 am 08:50 AM

Dans les tâches de génération de langage naturel, la méthode d'échantillonnage est une technique permettant d'obtenir du texte à partir d'un modèle génératif. Cet article abordera 5 méthodes courantes et les implémentera à l'aide de PyTorch. 1. GreedyDecoding Dans le décodage gourmand, le modèle génératif prédit les mots de la séquence de sortie en fonction du temps de la séquence d'entrée pas à pas. À chaque pas de temps, le modèle calcule la distribution de probabilité conditionnelle de chaque mot, puis sélectionne le mot avec la probabilité conditionnelle la plus élevée comme sortie du pas de temps actuel. Ce mot devient l'entrée du pas de temps suivant et le processus de génération se poursuit jusqu'à ce qu'une condition de fin soit remplie, telle qu'une séquence d'une longueur spécifiée ou un marqueur de fin spécial. La caractéristique de GreedyDecoding est qu’à chaque fois la probabilité conditionnelle actuelle est la meilleure

Tutoriel sur l'installation de PyCharm avec PyTorch Tutoriel sur l'installation de PyCharm avec PyTorch Feb 24, 2024 am 10:09 AM

En tant que puissant framework d'apprentissage profond, PyTorch est largement utilisé dans divers projets d'apprentissage automatique. En tant que puissant environnement de développement intégré Python, PyCharm peut également fournir un bon support lors de la mise en œuvre de tâches d'apprentissage en profondeur. Cet article présentera en détail comment installer PyTorch dans PyCharm et fournira des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement avec PyTorch pour des tâches d'apprentissage en profondeur. Étape 1 : Installer PyCharm Tout d’abord, nous devons nous assurer que nous avons

Tous les prix CVPR 2024 annoncés ! Près de 10 000 personnes ont assisté à la conférence hors ligne et un chercheur chinois de Google a remporté le prix du meilleur article. Tous les prix CVPR 2024 annoncés ! Près de 10 000 personnes ont assisté à la conférence hors ligne et un chercheur chinois de Google a remporté le prix du meilleur article. Jun 20, 2024 pm 05:43 PM

Tôt le matin du 20 juin, heure de Pékin, CVPR2024, la plus grande conférence internationale sur la vision par ordinateur qui s'est tenue à Seattle, a officiellement annoncé le meilleur article et d'autres récompenses. Cette année, un total de 10 articles ont remporté des prix, dont 2 meilleurs articles et 2 meilleurs articles étudiants. De plus, il y a eu 2 nominations pour les meilleurs articles et 4 nominations pour les meilleurs articles étudiants. La conférence la plus importante dans le domaine de la vision par ordinateur (CV) est la CVPR, qui attire chaque année un grand nombre d'instituts de recherche et d'universités. Selon les statistiques, un total de 11 532 articles ont été soumis cette année, dont 2 719 ont été acceptés, avec un taux d'acceptation de 23,6 %. Selon l'analyse statistique des données CVPR2024 du Georgia Institute of Technology, du point de vue des sujets de recherche, le plus grand nombre d'articles est la synthèse et la génération d'images et de vidéos (Imageandvideosyn

Cinq logiciels de programmation pour débuter l'apprentissage du langage C Cinq logiciels de programmation pour débuter l'apprentissage du langage C Feb 19, 2024 pm 04:51 PM

En tant que langage de programmation largement utilisé, le langage C est l'un des langages de base qui doivent être appris pour ceux qui souhaitent se lancer dans la programmation informatique. Cependant, pour les débutants, l’apprentissage d’un nouveau langage de programmation peut s’avérer quelque peu difficile, notamment en raison du manque d’outils d’apprentissage et de matériel pédagogique pertinents. Dans cet article, je présenterai cinq logiciels de programmation pour aider les débutants à démarrer avec le langage C et vous aider à démarrer rapidement. Le premier logiciel de programmation était Code :: Blocks. Code::Blocks est un environnement de développement intégré (IDE) gratuit et open source pour

Du bare metal au grand modèle avec 70 milliards de paramètres, voici un tutoriel et des scripts prêts à l'emploi Du bare metal au grand modèle avec 70 milliards de paramètres, voici un tutoriel et des scripts prêts à l'emploi Jul 24, 2024 pm 08:13 PM

Nous savons que le LLM est formé sur des clusters informatiques à grande échelle utilisant des données massives. Ce site a présenté de nombreuses méthodes et technologies utilisées pour aider et améliorer le processus de formation LLM. Aujourd'hui, ce que nous souhaitons partager est un article qui approfondit la technologie sous-jacente et présente comment transformer un ensemble de « bare metals » sans même un système d'exploitation en un cluster informatique pour la formation LLM. Cet article provient d'Imbue, une startup d'IA qui s'efforce d'atteindre une intelligence générale en comprenant comment les machines pensent. Bien sûr, transformer un tas de « bare metal » sans système d'exploitation en un cluster informatique pour la formation LLM n'est pas un processus facile, plein d'exploration et d'essais et d'erreurs, mais Imbue a finalement réussi à former un LLM avec 70 milliards de paramètres et dans. le processus s'accumule

See all articles