La formule de dimensionnement
Les poids du modèle occupent un nombre fixe d’octets par paramètre, défini par la précision :GGUF Q4_K_M est une précision mixte et moyenne environ 0.5–0.56 octets par paramètre plutôt qu’un plat 0.5, car les K-quants attribuent différentes largeurs de bits à différents tenseurs — voir Quantification pour savoir comment lire ces noms.
Multipliez le nombre de paramètres par les octets-par-paramètre pour obtenir la taille brute des poids, puis ajoutez environ 20% par-dessus pour le cache KV, les activations et les frais généraux du framework à une longueur de contexte modeste :
29 GB à bf16, ~15 GB à 8-bit et ~9.5 GB à 4-bit — voir le guide Hugging Face pour optimiser les LLM. Un contexte plus long ajoute plus de cache KV par-dessus cette ligne de base de 1.2× ; voir Cache KV et contexte pour comprendre pourquoi cela évolue de cette manière.
Cette formule est une estimation de planification pour la taille des poids, pas une vérité absolue. Le nombre réel est la taille réelle du fichier
GGUF pour la quantification exacte que vous prévoyez d’exécuter, plus le cache KV pour votre longueur de contexte cible. Consultez le guide d’ajustement des modèles GPU pour des exemples détaillés et un estimateur interactif.Ce qui concurrence réellement pour la mémoire
Trois éléments partagent le même pool de VRAM (ou mémoire unifiée) :- Poids du modèle — fixes une fois le modèle chargé, non affectés par la longueur du prompt.
- Cache KV — croît avec la longueur du contexte et la taille du lot ; voir Cache KV et contexte.
- Activations et frais généraux du framework — mémoire de travail plus petite nécessaire pendant chaque passe avant, ce que le facteur
1.2×dans la formule ci-dessus prend approximativement en compte.
Délestage : lorsqu’un modèle ne tient pas entièrement
Si les poids d’un modèle ne tiennent pas entièrement dans la VRAM de votre GPU, les backends commellama.cpp vous permettent de diviser le modèle entre le GPU et le CPU au lieu d’échouer directement. Cela est contrôlé avec le drapeau --n-gpu-layers (forme courte -ngl) : il définit combien de couches du modèle sont chargées sur le GPU, le reste restant dans la RAM système.
- Délestage complet (
-ngldéfini suffisamment haut pour couvrir chaque couche) : le modèle entier s’exécute sur le GPU, à pleine vitesse GPU. - Délestage partiel : certaines couches s’exécutent sur le GPU, le reste s’exécute sur le CPU en utilisant la RAM système. Cela permet à un modèle plus grand que votre VRAM de se charger et de s’exécuter réellement, à un coût.
- Aucun délestage (
-ngl 0) : le modèle entier s’exécute uniquement sur le CPU.
llama.cpp en dessous.
Comment la mémoire unifiée change la donne
Sur les systèmes avec mémoire unifiée — Apple Silicon et la plateforme Strix Halo d’AMD — le CPU et le GPU partagent un seul pool de mémoire au lieu que le GPU ait sa propre VRAM séparée et plus petite. Cela change le calcul du délestage :- Capacité : un système à mémoire unifiée peut charger un modèle beaucoup plus grand qu’un GPU discret avec une VRAM fixe, car le pool de “VRAM” peut être aussi grand que la RAM totale de la machine (jusqu’à la portion attribuée à l’utilisation graphique).
- Bande passante : ce même pool fonctionne à une bande passante inférieure à celle de la mémoire GDDR dédiée sur un GPU discret. Un modèle qui tient entièrement dans la mémoire unifiée se décode toujours plus lentement que le même modèle tenant entièrement dans la VRAM d’un GPU discret, car la vitesse de décodage suit la bande passante, pas seulement la capacité.
Aller plus loin
Comment fonctionne l'inférence
Pourquoi le décodage est limité par la bande passante mémoire en premier lieu.
Cache KV et contexte
La partie de l’utilisation de la mémoire qui croît avec votre conversation, pas seulement votre modèle.
Quantification
Réduire les octets-par-paramètre pour changer l’entrée la plus importante de la formule de dimensionnement.
Guide d'ajustement des modèles GPU
Tableaux de VRAM, un estimateur interactif et ce qui tient sur le matériel courant.
Une fois qu’il tient et s’exécute
Le dimensionnement et le délestage permettent à un modèle de s’exécuter sur votre matériel, que ce soit entièrement sur le GPU ou divisé avec le CPU. Une fois qu’il répond aux requêtes surlocalhost, l’étape suivante est d’y accéder depuis n’importe où ailleurs.
Donnez-lui un point de terminaison stable
Tokios ne choisit, n’héberge ni n’affine le modèle — une fois qu’il s’exécute localement, Tokios le transforme en un point de terminaison stable et authentifié que vous pouvez appeler depuis n’importe où.