IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Vous pouvez désormais entraîner un modèle de langage de 70b à la maison, Answer.AI publie un système open source
Basé sur FSDP et QLoRA, qui peut entraîner un modèle de 70b sur deux GPU de 24 Go

Le , par Jade Emy

199PARTAGES

4  0 
Answer.AI publie son premier projet : un système entièrement open source qui, pour la première fois, peut entraîner efficacement un grand modèle de langage de 70b sur un ordinateur de bureau ordinaire avec deux ou plusieurs GPU de jeu standard (RTX 3090 ou 4090). Ce système, qui combine FSDP et QLoRA, est le résultat d'une collaboration entre Answer.AI, Tim Dettmers (U Washington), et Hugging Face's Titus von Koeller et Sourab Mangrulkar.

Ce système aidera la communauté open source à produire de meilleurs modèles. Teknium, le créateur des modèles et des ensembles de données OpenHermes extrêmement populaires, avec plus d'un demi-million de téléchargements, a déclaré :

"Grâce à cette capacité, nous pouvons porter localement d'énormes modèles à de nouveaux sommets, et des modèles gigantesques, comportant des centaines de milliards de paramètres, sont désormais accessibles à de petits laboratoires."
Answer.AI a fait de ce projet son premier car il s'agit d'un fondement essentiel de son objectif : aider à rendre l'IA utile accessible à tous. Il ne suffit pas de pouvoir utiliser les modèles d'autres personnes. Ils veulent que chacun puisse créer ses propres modèles personnalisés, afin de contrôler ses propres systèmes d'IA.

Contexte

La grande idée

Il existe deux niveaux très différents de matériel utilisé pour entraîner les modèles d'apprentissage profond. Il y a d'abord le matériel destiné aux centres de données, comme les H100 et les A100, qui coûte des centaines de milliers de dollars. Ensuite, il y a les ordinateurs de bureau contenant des GPU de jeu, comme les doubles 4090, qui coûtent moins de 10 000 dollars (et qui peuvent être assemblés à partir de pièces d'occasion pour moins de la moitié du prix d'un système pré-construit).

Mais voici le point clé : les GPU de jeu ont des performances similaires à celles des GPU de centre de données qui coûtent plus de 10 fois plus cher ! Ce serait formidable si on pouvait utiliser ces cartes 10 fois moins chères (mais presque aussi rapides) pour entraîner de grands modèles de langage, mais ce n'est pas possible, car elles ont beaucoup moins de mémoire. Les meilleures cartes actuellement disponibles pour les centres de données disposent de 80 Go de RAM, tandis que les cartes de jeu ne dépassent pas 24 Go de RAM. Étant donné que seuls les modèles les plus volumineux produisent les meilleurs résultats, la création des meilleurs modèles est largement inaccessible à la plupart des gens.

Answer.AI :

Nous nous sommes rendu compte qu'il n'y avait pas de raison intrinsèque à cela. Le matériel super rapide est là, attendant d'être utilisé - nous avons juste besoin d'un moyen de l'alimenter avec le modèle et les données d'une manière qui respecte ses contraintes de mémoire. La question évidente est : pourquoi cela n'a-t-il pas été fait ? Tous les grands laboratoires industriels disposent déjà d'un matériel dix fois plus coûteux, ce qui ne les incite pas vraiment à se pencher sur la question.

L'idée est simple : trouver comment utiliser ces GPU de jeu moins chères et à faible mémoire pour entraîner les meilleurs modèles open source disponibles. L'objectif est donc le suivant : entraîner un modèle à 70 milliards de paramètres (70b) en utilisant uniquement des GPU de jeu, ce qui signifie que notre mémoire par GPU sera au maximum de 24 Go. Ce sera un défi, car chaque paramètre prend normalement 16 bits (2 octets), ce qui fait 70*2=140Go pour stocker les poids - et c'est sans compter toutes les autres données telles que les activations, les gradients et l'état de l'optimisation !

Pourquoi ce projet ?

Answer.AI est un type d'organisation très inhabituel - un laboratoire de R&D à but lucratif plus proche dans l'esprit des laboratoires d'électricité du 19ème siècle que des groupes de recherche en IA d'aujourd'hui. Trouver comment rendre l'entraînement de grands modèles peu coûteux et accessible est exactement le genre de chose qu'Eric Ries et Jeremy Howard espéraient que Answer.AI serait capable de faire lorsque l'organisation a été lancée à NeurIPS l'année dernière.

Résoudre ce problème est difficile. Il faut comprendre de nombreuses bibliothèques distinctes (par exemple bitsandbytes, PEFT, Transformers, Accelerate et PyTorch), ainsi que des concepts informatiques et mathématiques (par exemple discrétisation, calcul distribué, programmation GPU, algèbre linéaire, concepts SGD tels que le point de contrôle du gradient), et la manière dont ils interagissent tous.

Le monde universitaire regorge de personnes brillantes qui résolvent des problèmes difficiles. Mais le monde universitaire n'a pas résolu ce problème particulier. En effet, il est difficile pour les chercheurs universitaires de justifier le temps qu'ils consacrent à ce type de travail. La combinaison d'outils et de techniques existants n'est généralement pas considérée comme suffisamment "nouvelle" pour donner lieu à une publication dans une revue à fort impact, mais c'est la monnaie d'échange dont les universitaires ont besoin. En outre, on attend généralement des universitaires qu'ils deviennent très spécialisés dans leur domaine, ce qui rend difficile le regroupement de tant d'éléments en une seule solution.

Et, bien sûr, les grandes entreprises technologiques sont également remplies de personnes brillantes qui résolvent des problèmes difficiles. Mais ce problème particulier, l'entraînement de modèles avec des GPU grand public, n'est pas un problème qu'elles doivent résoudre - elles ont déjà acheté les grosses GPU coûteuses ! De nombreuses startups sont également composées de personnes brillantes qui résolvent des problèmes difficiles ! Mais, comme l'explique Eric Ries, "le marché financier actuel oblige les entreprises à privilégier les gains à court terme sur tout le reste". Il est extrêmement difficile pour une startup de justifier auprès des investisseurs pourquoi elle dépense ses fonds pour des logiciels open source et la recherche publique.

Answer.AI :

Alors que les universités, les grandes entreprises technologiques et les startups avaient de bonnes raisons de ne pas résoudre ce problème, ce sont précisément les raisons pour lesquelles ce problème convenait parfaitement à Answer.AI. Tous les employés de l'entreprise ont construit les types de systèmes avec lesquels nous devions travailler sur ce problème, ce qui nous a permis de comprendre comment toutes les pièces s'emboîtaient les unes dans les autres. Les personnes qui aiment à la fois comprendre en profondeur les fondements des logiciels et de l'IA, et qui aiment aussi bidouiller des systèmes de bout en bout amusants et intéressants sont le genre de personnes qui sont attirées par Answer.AI, et vice versa.

Les problèmes que nous choisissons de résoudre ensemble sont sélectionnés par les mêmes personnes qui feront la résolution. Nous avons donc tendance à choisir des projets qui impliquent de rassembler plusieurs idées pour créer des solutions utiles sur le plan pratique. Et comme nous sommes une entreprise d'utilité publique dont la charte vise à tirer des avantages à long terme de l'IA, les logiciels libres et la recherche publique sont directement en phase avec notre mission.
QLoRA : entraîner de plus gros modèles sur une seule GPU

Deux projets ont été publiés récemment, qui ont franchi les premières étapes critiques pour faire de ce projet une réalité : QLoRA (par Tim Dettmers et al), et FSDP (par l'équipe PyTorch de Meta).

QLoRA est une combinaison simple mais brillante de deux avancées cruciales dans les réseaux neuronaux modernes : la quantification et LoRA. La quantification est une technique qui consiste à utiliser 4 bits (ou même moins) au lieu de 16 ou même 32 bits pour stocker les poids d'un réseau neuronal. Il n'y a que 16 valeurs possibles pour un nombre de 4 bits, mais Dettmers et Zettlemoyer ont montré que cela pouvait suffire dans les grands modèles de langage qui sont populaires aujourd'hui. Tim Dettmers a facilité la création de ces modèles "quantifiés" à 4 bits, grâce à sa bibliothèque bitsandbytes, et Hugging Face a récemment pris le relais pour aider à maintenir et à documenter cette bibliothèque, notamment grâce à l'initiative de Titus von Koeller.

Malheureusement, une fois qu'un modèle est quantifié, il ne peut plus être entraîné avec les approches habituelles - avec seulement 16 valeurs possibles, la méthode de descente de gradient utilisée pour l'entraînement du modèle observera des gradients nuls presque partout, et ne pourra donc pas faire de mises à jour des poids quantifiés. Il s'agit d'un problème majeur, car cela signifie que la quantification ne peut être utilisée que pour l'inférence, et non pour un pré-entraînement continu ou un réglage fin. Bien que l'inférence soit utile et importante, elle ne fait que consommer des modèles. Mais Answer.AI veut que tout le monde puisse contribuer à la création de modèles !

L'astuce pour éviter cette limitation consiste à utiliser LoRA - "Low-Rank Adaptation of Large Language Models" (Adaptation à faible rang des grands modèles de langage). LoRA n'entraîne pas du tout le grand modèle de langage, mais ajoute des "adaptateurs", qui sont de très petites matrices (généralement inférieures à 1 % du modèle complet) qui sont entraînées, tout en gardant le reste du modèle constant. Si vous avez joué avec des modèles tels que la diffusion stable, vous avez probablement vu ces adaptateurs à de nombreuses reprises ; c'est ainsi que ces modèles sont généralement partagés, et c'est pourquoi ils sont si petits et si rapides à télécharger.

Tim s'est rendu compte que la LoRA pouvait être combinée avec la quantification : utiliser un modèle de base quantifié, qui n'est pas du tout modifié par l'entraînement, et ajouter des adaptateurs LoRA entraînables qui ne sont pas quantifiés. Cette combinaison est appelée QLoRA. L'équipe de Tim a pu l'utiliser pour, pour la première fois, entraîner un modèle qui (non quantifié) est plus grand que la GPU : ils ont entraîné un modèle de 65b (qui est 130 Go non quantifié) sur une carte de 48 Go.

Hugging Face est intervenu une fois de plus ici, en créant la bibliothèque PEFT, qui a rendu l'entraînement LoRA beaucoup plus simple, et en l'intégrant directement à bitsandbytes pour permettre à quiconque d'utiliser QLoRA avec seulement quelques lignes de code. L'équipe de Hugging Face a travaillé sans relâche dans les coulisses pour s'assurer que la communauté open source puisse utiliser ces technologies pour entraîner ses modèles. Si vous avez déjà utilisé Transformers pour charger un modèle de 4 bits à l'aide d'un seul argument de fonction, vous devez les remercier (et même si ce n'est pas le cas, vous avez certainement utilisé le travail de personnes qui ont construit leur modèle à l'aide de cet écosystème).

Cependant, Answer.AI a remarqué que QLoRA n'a pas tout à fait résolu le problème qu'ils s'étaient fixés, à savoir entraîner un modèle de 70b sur des cartes de 24GB, mais il s'en est rapproché plus que jamais. Lorsqu'il est quantifié à 4 bits (soit 0,5 octet), le modèle 70b prend 70/2 = 35 Go, ce qui est plus grand que les GPU de jeu de 24 Go qu'ils voulaient utiliser.

QLoRA présente d'autres limites. Une carte de 48 Go est très chère, et l'entraînement d'un modèle de 65b tient tout juste sur une telle carte. Cela peut être un problème, car on doit stocker beaucoup d'autres choses, notamment les activations, les gradients et l'état d'optimisation du modèle pendant l'apprentissage. S'il ne reste pas beaucoup de mémoire après avoir chargé les poids du modèle, il n'y a pas assez de mémoire de travail pour soutenir la formation.

Par exemple, l'un des...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !