- Open source combinant FSDP (Fully Sharded Data Parallel) et QLoRA (Quantization + Low-Rank Adaptation)
- Permet d’affiner efficacement un modèle de langage de taille 70B avec un ordinateur de bureau classique et deux GPU de gaming standard
Contexte
- Malgré un écart de performances limité entre le matériel de niveau datacenter et les GPU de gaming intégrés aux PC de bureau, l’écart de prix est énorme
- Les GPU de gaming ont peu de mémoire, ce qui rend l’entraînement de grands modèles de langage difficile
- Answer.AI cherche à résoudre ce problème en trouvant un moyen d’entraîner les meilleurs modèles open source avec des GPU de gaming abordables
QLoRA : entraîner de plus grands modèles sur un seul GPU
- QLoRA combine quantification et LoRA, en réduisant les poids du modèle à 4 bits afin de diminuer l’utilisation de mémoire GPU.
- LoRA évite les contraintes mémoire en ajoutant de petites matrices d’adaptation à entraîner, au lieu d’entraîner l’intégralité du grand modèle de langage.
- QLoRA permet d’entraîner un modèle 65B sur une carte de 48GB, mais cela reste insuffisant pour entraîner un modèle 70B sur un GPU de gaming de 24GB.
FSDP : passer à l’échelle avec plusieurs GPU
- FSDP (Fully Sharded Data Parallel) répartit les paramètres du modèle sur plusieurs GPU afin de pouvoir les utiliser simultanément.
- FSDP permet d’appliquer les performances de DDP (Distributed Data Parallel) à des modèles trop grands pour tenir sur un seul GPU.
- Par exemple, un modèle 70B (70 milliards de paramètres) non quantifié utilise 140GB de RAM (chaque paramètre étant stocké sur 16 bits, soit 2 octets), ce qui dépasse même la capacité d’une carte NVIDIA H100 (environ 40�00 $ l’unité), limitée à 80GB de RAM.
- En revanche, avec FSDP, on peut combiner 4 GPU H100 pour obtenir un total de 320GB de RAM. Et économiser 150000 $.
Combiner FSDP et QLoRA
- Answer.AI réduit la taille du modèle avec QLoRA, puis le répartit sur plusieurs cartes de gaming de 24GB via FSDP afin de permettre un entraînement efficace.
- Cela permet d’entraîner un modèle 70B avec deux GPU de gaming classiques.
- Après avoir discuté de l’idée de combiner FSDP et QLoRA à la fin de 2023, l’équipe a résolu les problèmes nécessaires à sa mise en œuvre.
- Diverses technologies et bibliothèques ont été combinées au cours de ce processus
- stockage des paramètres quantifiés dans le même type de données que le "Computation Type" du modèle
- gradient checkpointing, qui au lieu de stocker l’ensemble des gradients, enregistre les activations à plusieurs « points de contrôle » du modèle complet, puis réexécute au besoin l’étape de calcul forward pour recalculer les gradients
- CPU offloading, qui stocke les poids en RAM CPU plutôt que sur le GPU lorsqu’ils ne sont pas utilisés, réduisant fortement la mémoire GPU nécessaire
- Flash Attention 2 : calcule efficacement l’attention à l’aide de kernels Cuda optimisés pour la mémoire
- découverte de HQQ (Half-Quadratic Quantization) et intégration avec FSDP (50 fois plus rapide et plus précis que GPTQ)
Comment utiliser FSDP/QLoRA
- L’utilisation de FSDP nécessite au moins deux GPU. (Sur Runpod, un boîtier double 3090 est disponible pour 0,6 $/heure)
- Installez les dernières versions de Transformers, PEFT, Bitsandbytes (et HQQ si vous l’utilisez), clonez le dépôt d’Answer.AI, puis suivez le README pour l’exécution.
- Pour entraîner Alpaca sur 2 cartes de 24GB :
python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
- Le projet en est encore à un stade précoce (alpha/preview)
- Des résultats de benchmark devraient également être publiés dans les prochaines semaines
L’avis de GN⁺
- Cet article intéressera fortement les personnes travaillant dans l’IA et le machine learning. Il mérite particulièrement l’attention, car il propose une nouvelle manière d’entraîner efficacement de grands modèles de langage.
- Si cette technologie est utilisée avec succès à grande échelle, elle pourrait fortement abaisser la barrière de coût de la recherche et du développement en IA. Cela pourrait aussi représenter une grande opportunité pour les petits laboratoires ou les développeurs individuels.
- Toutefois, pour qu’une telle approche soit réellement adoptée à grande échelle, la stabilité et la facilité d’utilisation seront des facteurs clés. Comme il s’agit encore d’un stade précoce, le système devra être amélioré grâce aux tests et retours de la communauté.
- Lorsqu’on adopte une nouvelle technologie, il faut toujours prendre en compte la compatibilité avec les systèmes existants, les performances et les coûts. Le principal avantage ici est de rendre l’entraînement de grands modèles plus accessible, mais comme le projet n’en est qu’à ses débuts, il peut encore présenter des inconvénients en matière de stabilité et de support.
1 commentaires
Avis Hacker News
L’article est excellent, mais c’est dommage qu’il ait raté autant d’occasions d’utiliser le mot « nibble ».
En tant que consommateur, j’aimerais voir un tableau indiquant combien de temps il faut pour affiner un modèle 70b avec un système utilisant des poids en 4 bits, par exemple avec la taille du modèle, la taille d’entraînement, le coût d’entraînement et la perte de qualité attendue avec cette technique.
Je me demande s’il est possible d’appliquer un encodage (-1,0,1). Quand ce modèle sortira, est-ce qu’answer.ai pourra utiliser la même technique pour affiner de grands modèles avec deux petits GPU, et j’aimerais aussi voir une analyse coûts/bénéfices.
Ce type de recherche est extrêmement utile pour permettre aux utilisateurs individuels de rivaliser sur le marché des LLM. C’est un excellent travail qui va dans le même sens que le livre « De zéro à un ».
L’article ne mentionne pas que tous les meilleurs projets du défi efficacité de NeurIPS utilisaient QLoRA, alors que c’est un très bon exemple de l’importance et de l’utilité de QLoRA.
C’est l’approche la plus intéressante et la plus constructive que j’aie vue dans les LLM « open source ». J’aimerais que le monde académique en fasse aussi un standard.
J’aimerais qu’un entraînement rapide sur Metal arrive plus tôt. Pour l’instant, le Mac Studio est bien moins cher et suffisamment rapide pour l’inférence sur de grands modèles, mais il n’existe quasiment aucune solution d’entraînement.
La qualité et la clarté de la rédaction technique sont excellentes.
Je me demande s’il est possible de réentraîner les poids d’un LLM (70B) avec mes propres données.
Pour ceux qui affinent des LLM avec un budget matériel limité, c’est une avancée majeure.
Je me demande pourquoi DeepSpeed a été choisi plutôt que FSDP.
Je me demande s’il y avait des outils utilisés pour le réglage des performances une fois qu’il est devenu possible d’affiner le modèle.
Avez-vous déjà essayé la sparsification ? J’ai l’impression que cela pourrait permettre le fine-tuning avec moins de RAM.