Comprendre les tailles des LLM

Maud Nalpas
Maud Nalpas

Si le "L" des grands modèles de langage (LLM, Large Language Models) suggère une échelle de grande envergure, la réalité est plus nuancée. Certains LLM contiennent des milliers de milliards de paramètres, d'autres fonctionnent efficacement avec beaucoup moins.

Examinez quelques exemples concrets et les implications pratiques de différentes tailles de modèles.

En tant que développeurs Web, nous avons tendance à considérer la taille d'une ressource comme la taille de son téléchargement. La taille documentée d'un modèle se réfère plutôt à son nombre de paramètres. Par exemple, Gemma 2B signifie Gemma avec deux milliards de paramètres.

Les LLM peuvent comporter des centaines de milliers, de millions, de milliards, voire de milliers de milliards de paramètres.

Les LLM plus volumineux disposent de plus de paramètres que leurs homologues plus petits, ce qui leur permet de capturer des relations linguistiques plus complexes et de gérer des requêtes nuancées. Ils sont aussi souvent entraînés sur des ensembles de données plus volumineux.

Vous avez peut-être remarqué que certaines tailles de modèles, comme 2 milliards ou 7 milliards, sont courantes. Exemples : Gemma 2B, Gemma 7B ou Mistral 7B. Les classes de taille de modèle sont des regroupements approximatifs. Par exemple, Gemma 2B comporte environ 2 milliards de paramètres, mais pas exactement.

Les classes de taille de modèle offrent un moyen pratique d'évaluer les performances des LLM. Considérez-les comme des classes de poids en boxe: les modèles de la même classe de taille sont plus comparables. Deux milliards de modèles devraient offrir des performances similaires.

Cela dit, un modèle plus petit peut offrir les mêmes performances qu'un modèle plus grand pour des tâches spécifiques.

Capture d'écran des cases à cocher pour définir la taille du modèle HuggingFace.
Classes de taille de modèle sur HuggingFace Ces cours ne sont pas standards dans l'industrie, ils ont émergé de façon organique.

Bien que les tailles de modèles des LLM de pointe les plus récents, tels que GPT-4 et Genmini Pro ou Ultra, ne soient pas toujours divulguées, on pense qu'elles comptent des centaines de milliards, voire des milliards de paramètres.

La taille des modèles peut varier considérablement. Dans cette illustration, DistilBERT est un petit point comparé au modèle géant Gemini Pro.

Tous les modèles n'indiquent pas le nombre de paramètres dans leur nom. Certains modèles comportent un suffixe par leur numéro de version. Par exemple, Gemini 1.5 Pro fait référence à la version 1.5 du modèle (après la version 1).

ou pas ?

Dans quels cas un modèle est-il trop petit pour être un LLM ? La définition des LLM est assez fluide au sein de la communauté de l'IA et du ML.

Certains ne considèrent que les plus grands modèles comportant des milliards de paramètres comme de véritables LLM, tandis que les modèles plus petits, tels que DistilBERT, sont considérés comme de simples modèles de TLN. D'autres, comme DistilBERT, incluent des modèles plus petits, mais tout de même puissants dans la définition des LLM.

LLM plus petits pour les cas d'utilisation sur l'appareil

Les LLM plus volumineux nécessitent beaucoup d'espace de stockage et une grande puissance de calcul pour l'inférence. Elles doivent s'exécuter sur des serveurs dédiés puissants et dotés de matériel spécifique (comme des TPU).

En tant que développeurs Web, nous souhaitons savoir si un modèle est suffisamment petit pour être téléchargé et exécuté sur l'appareil d'un utilisateur.

Mais il n'est pas facile de répondre à cette question ! À l'heure actuelle, il n'existe aucun moyen simple de savoir que "ce modèle peut fonctionner sur la plupart des appareils de milieu de gamme", et ce pour plusieurs raisons:

  • Les capacités des appareils varient considérablement en termes de mémoire, de caractéristiques de GPU/de processeur et plus encore. Un téléphone Android bas de gamme et un ordinateur portable NVIDIA® RTX sont très différents. Vous pouvez disposer de points de données sur les appareils dont disposent vos utilisateurs. Nous n'avons pas encore défini un appareil de référence utilisé pour accéder au Web.
  • Un modèle ou le framework dans lequel il s'exécute peuvent être optimisés pour s'exécuter sur certains matériels.
  • Il n'existe aucun moyen programmatique de déterminer si un LLM spécifique peut être téléchargé et exécuté sur un appareil spécifique. La capacité de téléchargement d'un appareil dépend, entre autres, du nombre de VRAM disponibles sur le GPU.

Cependant, nous avons des connaissances empiriques: aujourd'hui, certains modèles comptant de quelques millions à quelques milliards de paramètres peuvent s'exécuter dans le navigateur, sur des appareils grand public.

Exemple :

  • Gemma 2B avec l'API MediaPipe LLM Inference (même adaptée aux appareils utilisant uniquement le processeur). Essayer
  • Utilisez DistilBERT avec Transformers.js.

Il s'agit d'un champ naissant. Vous pouvez vous attendre à ce que le paysage évolue:

  • Grâce aux innovations de WebAssembly et de WebGPU, WebGPU permet d'accéder à un plus grand nombre de bibliothèques, de nouvelles bibliothèques et d'optimisations qui s'attendent à ce que les appareils des utilisateurs puissent exécuter efficacement des LLM de différentes tailles.
  • Attendez-vous à ce que des LLM plus petits et hautement performants deviennent de plus en plus courants grâce aux techniques de réduction émergentes.

Éléments à prendre en compte pour les LLM plus petits

Lorsque vous travaillez avec des LLM plus petits, vous devez toujours tenir compte des performances et de la taille de téléchargement.

Performances

Les capacités d'un modèle dépendent en grande partie de votre cas d'utilisation. Un LLM plus petit, adapté à votre cas d'utilisation, peut être plus performant qu'un LLM générique plus grand.

Toutefois, au sein de la même famille de modèles, les LLM plus petits sont moins performants que leurs homologues plus grands. Pour le même cas d'utilisation, vous devrez généralement effectuer davantage d'ingénierie des invites si vous utilisez un LLM de plus petite taille.

Capture d'écran du panneau Chrome DevTools Network.
Le score de Gemma 2B est inférieur à celui de Gemma 7B.
Source: HuggingFace Open LLM Leaderboard, avril 2024

Taille de téléchargement

Plus les paramètres sont nombreux, plus la taille de téléchargement est importante. Cela influe également sur la capacité de téléchargement d'un modèle, même s'il est considéré comme petit, pour les cas d'utilisation sur l'appareil.

Bien qu'il existe des techniques pour calculer la taille de téléchargement d'un modèle en fonction du nombre de paramètres, cela peut être complexe.

Depuis début 2024, les tailles de téléchargement des modèles sont rarement documentées. Ainsi, pour vos cas d'utilisation sur l'appareil et dans le navigateur, nous vous recommandons d'examiner la taille de téléchargement de manière empirique, dans le panneau Network des outils pour les développeurs Chrome ou avec d'autres outils pour les développeurs du navigateur.

Capture d'écran du panneau Chrome DevTools Network.
Dans le panneau Chrome DevTools Network, utilisez Gemma 2B et DistilBERT pour l'inférence depuis un navigateur ou un appareil dans une application Web. La taille des téléchargements est respectivement de 1,3 Go et 67 Mo.

Gemma est utilisé avec l'API MediaPipe LLM Inference. DistilBERT est utilisé avec Transformers.js.

Techniques de minification de modèle

Il existe plusieurs techniques pour réduire considérablement les besoins en mémoire d'un modèle:

  • LoRA (Low-Rank Adaptation): technique de réglage dans laquelle les pondérations pré-entraînées sont figées. En savoir plus sur LoRA
  • Élagage: suppression des pondérations les moins importantes du modèle pour réduire sa taille.
  • Quantification: réduction de la précision des pondérations, passant des nombres à virgule flottante (32 bits, par exemple) à des représentations de bits inférieurs (8 bits, par exemple).
  • Distillation des connaissances: entraînez un modèle plus petit pour imiter le comportement d'un modèle pré-entraîné plus grand.
  • Partage des paramètres: utilisation des mêmes pondérations pour plusieurs parties du modèle, ce qui réduit le nombre total de paramètres uniques.