Julien | Tech & Invests@JulienTechInvst
Je quote le mec parce que je vois passer ce genre de commentaires régulièrement. L’IA locale c’est un fantasme.
Globalement, pour faire de l’inférence, il faut 1) charger le modèle, 2) charger le contexte dans le KV-cache.
Il y a globalement 3 précisions possibles en inférence: le BF16/FP16, le FP8/INT8 et le FP4/INT4. La majorité des processeurs (CPU ou GPU) ne supportent que le BF16, et seul les modèles professionnels de chez Nvidia (B200/300) supportent le FP4/INT4.
Juste sur le chargement du modèle en RAM, 1 paramètre c’est 2 octets en BF16/FP16, 1 octet en FP8/INT8, et 4 bits en FP4/INT4.
Donc pour 1B de paramètres (la majorité des modèles font 7B et plus), il faut au moins:
- 2Go de RAM en BF16/FP16
- 1Go de RAM en FP8/INT8
- 500Mo de RAM en FP4/INT4
Ça c’est juste pour charger le modèle. Le FP8 est amplement suffisant pour des tâches d’inférence basiques et commencent par être supportés par de plus en plus de GPU/NPUs donc c’est plutôt de bon augure pour l’utilisation de modèles en local.
Cependant, 1B de paramètres, comme dit plus haut, ça n’existe pas vraiment et il faut compter au moins 7B de paramètres pour des versions mini. Avec l’augmentation de la taille des modèles, le MoE et autre, faudra plutôt compter 10-20B de paramètres d’ici peu de temps pour un truc utilisable. Donc entre 10 et 20Go de RAM juste pour charger le modèle.
À ça, on y ajoute un contexte. Disons 20k tokens de contexte, ce qui n’est objectivement pas grand chose (environ 15k mots - seulement du texte). Là c’est plus compliqué à calculer car il y a des paramètres propres à chaque modèle et à la configuration de ce dernier (cf le papier de Google).
La formule simplifiée qu’on peut utiliser est la suivante:
KV-cache_size ≈ 2 x L x hidden_size x T x precision
Avec L le nombre de couches, hidden_size la configuration du modèle, T le nombre de token de contexte et precision, la précision choisie.
Donc avec 20k tokens de contexte et un modèle Llama-like (4096 de hidden_size et 32 couches), on a:
- 10,5Go de RAM en BF16/FP16
- 5,2Go de RAM en FP8/INT8
- 2,6Go de RAM en FP4/INT4
Donc il faudrait minimum 15Go de RAM disponible sur le processeur (soit en VRAM si GPU externe, soit en mémoire unifiée) juste pour faire tourner un modèle basique avec des capacités réduites. La majorité des PCs modernes grand public dispos sur le marché n’ont pas la capacité de faire tourner le modèle et l’OS sans taper dans le swap.
Et là je parle même pas de la bande passante de la RAM qui limitera de facto l’output dans les 10-20 tokens/seconde maximum.
Bref, à moins de mettre de la HBM en masse et donc de voir le prix du parc informatique flamber, personne ne fera tourner de modèle en local pour des tâches sérieuses. C’est déjà suffisamment dur de le faire sur des cartes à plus de 40k$.
Et qu’on vienne pas me dire « oui mais pour un usage récréatif », parce que ce que les gens veulent c’est pouvoir balancer des pdfs, des images et autre, et là, le contexte explose et il faudra souvent bien plus de 100 à 200k tokens