Taille des modèles LLM, besoins en mémoire et quantification
Les grands modèles linguistiques (LLM), tels que GPT-3, LLaMA ou PaLM, sont des réseaux neuronaux de taille énorme. Leur taille est généralement caractérisée par le nombre de paramètres (par exemple, 7b, 14b, 72b, signifiant 7 milliards, 14 milliards, 72 milliards de paramètres). Un paramètre est essentiellement une valeur de poids ou de biais au sein du réseau. Ces paramètres sont appris pendant l'entraînement et représentent collectivement la "connaissance" du modèle, déterminant comment il traite les informations et génère des sorties. Les LLM modernes possèdent des milliards, parfois même des centaines de milliards, de paramètres.

Des centaines de milliards de paramètres se traduisent par des besoins en mémoire considérables :
- Stockage : Les paramètres du modèle doivent être stockés sur un stockage persistant, comme un disque dur ou un SSD.
- Chargement : Pour exécuter le modèle (effectuer l'inférence), les paramètres doivent être chargés dans la mémoire du GPU (ou autre accélérateur).
- Calcul : Pendant l'exécution du modèle, le GPU a besoin d'un accès constant à ces paramètres pour effectuer les calculs.
Exemple :
Supposons qu'un modèle ait 175 milliards de paramètres, et que chaque paramètre soit stocké au format FP32 (virgule flottante 32 bits).
- Un nombre FP32 occupe 4 octets (32 bits / 8 bits par octet).
- 175 milliards de paramètres * 4 octets/paramètre = 700 milliards d'octets = 700 Go.
Par conséquent, le simple stockage des paramètres du modèle nécessite 700 Go d'espace ! Le chargement et l'exécution du modèle nécessitent au moins autant de VRAM (mémoire vive vidéo) sur le GPU. C'est pourquoi des GPU haut de gamme avec de grandes quantités de VRAM (comme NVIDIA A100, H100) sont nécessaires pour exécuter des LLM à grande échelle. Si, au lieu de 4 octets, chaque paramètre n'occupait qu'1 octet (comme avec le format INT8), le besoin en mémoire en gigaoctets serait à peu près égal au nombre de paramètres en milliards. Par exemple, un modèle de 175 milliards de paramètres utilisant INT8 nécessiterait environ 175 Go de VRAM.
Quantification : Réduire les besoins en mémoire
La quantification est une technique visant à réduire la taille et l'empreinte mémoire du modèle, généralement en sacrifiant une quantité acceptable de précision. Pendant la quantification, les paramètres du modèle (poids et parfois activations) sont convertis en un format numérique de plus faible précision.
Comment fonctionne la quantification ?
- Format original : Les modèles sont généralement entraînés en utilisant les formats FP32 ou FP16 (virgule flottante 16 bits).
- Format cible : Pendant la quantification, les paramètres sont convertis en formats tels que INT8 (entier 8 bits), FP8, ou d'autres types de plus faible précision.
- Mappage : La quantification implique la création d'un mappage entre la plage de valeurs du format original (par exemple, FP32) et la plage de valeurs du format cible (par exemple, INT8). Ce mappage définit comment représenter les valeurs originales en utilisant la plage limitée du format cible et peut être linéaire ou non linéaire.
- Arrondi : Sur la base du mappage, les valeurs originales sont "arrondies" à la valeur représentable la plus proche dans le format cible.
- Perte d'information : Ce processus d'arrondi entraîne inévitablement une certaine perte d'information, ce qui peut entraîner une diminution de la précision du modèle. Le défi de la quantification consiste à minimiser cette perte de précision.
Exemple (Quantification INT8) :
- FP32 : Un nombre occupe 4 octets.
- INT8 : Un nombre occupe 1 octet.
Si nous quantifions un modèle de 175 milliards de paramètres de FP32 à INT8, la taille du modèle passe de 700 Go à 175 Go ! C'est une économie significative, permettant d'exécuter le modèle sur des GPU plus petits et moins chers (bien que souvent avec une légère diminution des performances).
Méthodes de quantification :
- Quantification post-entraînement (PTQ) : La quantification est effectuée après que le modèle a été entièrement entraîné. C'est la méthode la plus simple, mais elle peut entraîner une plus grande perte de précision.
- Entraînement sensible à la quantification (QAT) : Les opérations de quantification sont simulées ou intégrées au processus d'entraînement lui-même. Le modèle apprend à compenser la perte de précision causée par la quantification. Cela donne généralement une meilleure précision que la PTQ, mais nécessite plus de temps et de ressources de calcul pour l'entraînement.
Résumé
La quantification est une technique essentielle pour exécuter efficacement des LLM à grande échelle. Elle permet une réduction significative de la taille du modèle et des besoins en mémoire, rendant ces modèles puissants accessibles à un plus large éventail d'utilisateurs et de matériel. Cependant, la quantification implique un compromis avec la précision, il est donc crucial de sélectionner la méthode de quantification et le format numérique appropriés pour la tâche spécifique. Le support matériel (par exemple, des opérations INT8 efficaces sur les GPU) est essentiel pour exécuter rapidement et efficacement les modèles quantifiés. L'évolution des formats numériques (FP32, FP16, BF16, INT8, FP8) et de leur support matériel est directement liée à la quantification, permettant collectivement la création et le déploiement de LLM de plus en plus grands et complexes.