Après avoir téléchargé le modèle, vous rencontrez peut-être une erreur de mémoire insuffisante ou de mémoire vidéo insuffisante lors de l'exécution. C'est probablement le dernier résultat que tout le monde souhaite voir lors de l'essai de modèles locaux.
Comme introduit précédemment, le modèle doit charger ses poids en RAM ou en VRAM lors de l'exécution, et la génération de réponses nécessite également de l'espace supplémentaire. Si votre appareil ne peut pas contenir le modèle, en dehors de passer à un modèle avec moins de paramètres, vous pouvez également vérifier s'il existe une version quantifiée.
Les poids du modèle sont composés d'un grand nombre de valeurs numériques, et le stockage de chaque valeur nécessite un certain espace. La quantification réduit la consommation de ressources du modèle en abaissant la précision de la représentation de ces valeurs numériques. Par exemple, les poids initialement stockés en virgule flottante 16 bits peuvent être convertis en représentations à basse précision principalement 8 bits ou 4 bits. Le nombre de paramètres ne change généralement pas, mais l'espace occupé par chaque paramètre devient plus petit.
En prenant un modèle de 7 milliards de paramètres comme exemple, et en ne considérant que les poids eux-mêmes sans les surcoûts de quantification, on peut obtenir les estimations approximatives suivantes :
Représentation des poids | Taille théorique des poids |
16 bits | Environ 14 Go |
8 bits | Environ 7 Go |
4 bits | Environ 3,5 Go |
Les valeurs en Go ici sont calculées en unités décimales. Les fichiers quantifiés réels stockent également des informations telles que les coefficients de mise à l'échelle et peuvent utiliser des précisions mixtes, donc la taille réelle peut différer de l'estimation.
Pour les utilisateurs ordinaires, le bénéfice le plus direct de la quantification est que les fichiers modèles deviennent plus petits, économisant de l'espace pour le téléchargement et le stockage, et nécessitant moins de RAM ou de VRAM pour les poids lors de l'exécution. Lorsqu'ils sont supportés par le matériel et les frameworks d'inférence, la quantification peut également améliorer la vitesse d'inférence.
Cependant, réduire le fichier à un quart de sa taille originale ne signifie pas que la vitesse de réponse augmentera de quatre fois.
La réduction de la précision peut également affecter la qualité de la réponse, selon le modèle, la méthode de quantification et la tâche. Lors du choix d'une version quantifiée, en plus de confirmer qu'elle peut fonctionner, vous devriez également la tester avec vos propres questions pour voir si les réponses restent fiables.
Se connecter pour rejoindre la discussion
Pour les modèles qui ont déjà été téléchargés ou affinés, l'approche courante est la Quantification Après Entraînement (PTQ), qui convertit les poids et autres valeurs numériques en représentations à plus faible précision après l'achèvement de l'entraînement du modèle. Certaines méthodes nécessitent un petit lot de données représentatives pour calibrer le processus de quantification et minimiser l'erreur.
Une autre catégorie est la Quantification Sensible à l'Entraînement (QAT), qui simule les effets de la quantification pendant l'entraînement, permettant au modèle de s'adapter aux représentations à basse précision à l'avance.
Lors de l'exécution de modèles avec Ollama, vous rencontrerez fréquemment des noms comme GGUF, Q4, Q8, etc. Ces noms sont principalement liés au format de stockage et à la méthode de quantification du modèle, et constituent une raison importante pour laquelle les grands modèles peuvent fonctionner sur des ordinateurs personnels.
En août 2023, Georgi Gerganov a introduit le format GGUF. Ses principaux avantages incluent le déploiement en fichier unique, l'extensibilité, le support du mapping mémoire, l'information complète et la facilité d'utilisation. Un fichier GGUF comprend un en-tête de fichier, des paires clé-valeur de métadonnées et des informations de tenseurs. Ces composants définissent ensemble la structure et le comportement du modèle. Comme indiqué ci-dessous, GGUF est un format de fichier modèle pour l'inférence de grands modèles, actuellement largement utilisé par des outils d'inférence locaux tels que llama.cpp et Ollama. Ollama encapsule le traitement du format GGUF, la quantification des modèles et le chargement des modèles, de sorte que les utilisateurs n'ont pas besoin de convertir les formats de modèle eux-mêmes — ils peuvent directement télécharger et exécuter des modèles pré-quantifiés. Un fichier GGUF ne contient pas seulement des paramètres de modèle ; il inclut également des informations de base sur le modèle, l'architecture du modèle et des données de tenseurs. GGUF organise ces informations via un format de fichier unifié, permettant aux outils d'inférence comme llama.cpp de les lire et les charger directement. Sa structure de base est illustrée dans la figure ci-dessous.
ModelScope prend également en charge l'affichage de fichiers GGUF structurés, comme illustré ci-dessous. Lorsque les outils d'inférence chargent des fichiers GGUF, ils peuvent directement lire ces informations et charger le modèle sans avoir besoin de préparer plusieurs fichiers de configuration de modèle séparément.
GGUF en soi n'est qu'un format de fichier modèle et ne réduit pas directement l'utilisation de RAM ou VRAM du modèle. Ce qui réduit véritablement la consommation de ressources du modèle, c'est la quantification.
Dans llama.cpp et les modèles GGUF, Q4, Q5, Q8, Q4_K_M représentent différents noms de quantification. Ici, Q signifie quantification, et le nombre suivant indique la largeur de bits principale de quantification. Par exemple, Q4 signifie une quantification principalement 4 bits, et Q8 signifie une quantification principalement 8 bits.
Notez que Q4 ne signifie pas que tous les paramètres du modèle utilisent uniformément une représentation 4 bits. En prenant le Q4_K_M courant comme exemple, il appartient au type de quantification K-quant dans llama.cpp. Le Q4 dans le nom signifie une quantification principalement 4 bits, K indique l'utilisation du schéma de quantification K-quant, et M dénote la configuration Medium dans ce schéma. En pratique, différents tenseurs dans le modèle peuvent utiliser des précisions de quantification différentes plutôt que tous les paramètres utilisant uniformément une représentation 4 bits, comme illustré dans la figure ci-dessous.
Lors du choix d'un modèle GGUF, confirmez d'abord que votre outil d'inférence supporte le modèle, puis regardez la version de quantification spécifique. Une précision de quantification plus faible réduit généralement l'utilisation de RAM et VRAM, rendant plus facile l'exécution du modèle sur des appareils ordinaires, mais peut sacrifier certaines performances du modèle. Une précision de quantification plus élevée préserve généralement davantage les capacités du modèle original, mais nécessite également plus de ressources matérielles.
Si une version est déjà proche des limites de RAM ou VRAM de votre appareil, envisagez de passer à une version plus petite pour laisser de la marge pour le contexte et les opérations d'exécution. Si les ressources sont suffisantes, vous pouvez utiliser les mêmes questions pour comparer les réponses de différentes versions, en accordant une attention particulière à vos tâches cibles telles que l'extraction d'informations, la génération de code ou la production de sorties structurées.
Confirmez d'abord un fonctionnement stable, puis vérifiez la qualité des réponses. Ainsi, la version quantifiée que vous choisirez sera mieux adaptée à votre appareil et à votre cas d'utilisation.