Comment déployer un modèle 27B sur un serveur interne et maîtriser les coûts des jetons
En raison des réglementations de sécurité interdisant l'utilisation d'API externes, vous devez héberger un modèle 27B sur votre propre serveur. Le budget est insuffisant pour s'offrir des cartes H100 hors de prix, et les coûts mensuels en jetons augmentent de façon exponentielle. Cet article présente des méthodes pratiques concrètes pour réduire le budget matériel de plus de 40 % et bloquer le gaspillage de jetons lié aux boucles infinies dans un environnement sur site (on-premise).
Configuration multi-GPU pour réduire le budget matériel
Pour exécuter un modèle 27B sans erreur OOM (Out Of Memory), il est nécessaire de calculer précisément les besoins en VRAM. Au lieu d'acheter un unique Nvidia H100 de 80 Go, associez deux cartes RTX 4090 de 24 Go pour obtenir une VRAM unifiée de 48 Go. Cette approche permet de diviser par deux ou plus le coût initial d'investissement matériel.
- Vérifiez que la VRAM totale requise, en additionnant les poids du modèle (environ 28 Go en FP8) et le cache KV (1 Go pour un contexte de 8K), ne dépasse pas 30 Go.
- Dans un environnement dépourvu de NVLink, spécifiez l'option
--tensor-parallel-size 2 lors de l'exécution de vLLM afin de répartir les calculs dans la limite de la bande passante PCIe.
- Pour supporter le pic de puissance de plus de 1000 W généré par les deux RTX 4090, utilisez une alimentation certifiée 80 Plus Titanium et prévenez le ralentissement thermique (thermal throttling) grâce à des ventilateurs d'admission frontaux.
Il n'est pas nécessaire de s'entêter sur un équipement unique et onéreux. Associer des cartes graphiques abordables en parallèle constitue une alternative réaliste pour les équipes d'infrastructure soumises à des contraintes budgétaires.
Paramètres du moteur pour bloquer la consommation de jetons en boucle infinie
Récemment, lors du traitement de logiques complexes, les modèles 27B omettent souvent d'émettre un jeton de fin et tombent dans une boucle infinie jusqu'à atteindre le nombre maximal de jetons. Dans un environnement d'API commerciale, ce seul phénomène fait grimper les coûts d'exploitation mensuels à un niveau insoutenable. Il est possible d'éliminer définitivement ce gaspillage en ajustant simplement les paramètres du moteur de service local.
- Attribuez
repeat_penalty 1.15 et presence_penalty 0.1 aux paramètres de service pour inhiber l'apparition répétée de phrases identiques.
- Insérez
<|im_end|>, <|eot_id|> et \nUser: dans le tableau stop du fichier de configuration pour empêcher le modèle de poursuivre un monologue en autarcie.
- Appliquez
temperature 0.2 et min_p 0.05 pour contraindre le modèle à ne pas s'aventurer sur des jetons à faible probabilité.
L'application de ces paramètres réduit le nombre moyen de jetons de sortie de 4 000 à 800. Même en incluant les coûts d'électricité et l'amortissement du matériel, les frais d'exploitation mensuels par unité peuvent être maîtrisés autour de 290 dollars.
Déploiement des poids et gestion des pipelines en environnement isolé (Air-Gap)
Dans un environnement isolé (air-gap) totalement coupé du réseau externe, il est indispensable de disposer d'un pipeline pour gérer et servir les poids de manière stable. L'utilisation de vLLM permet d'ouvrir des points de terminaison d'API sur le réseau interne de l'entreprise avec des vitesses comparables à celles d'un service commercial.
- Téléchargez les poids à l'aide de
huggingface-cli depuis une machine bastion connectée à Internet en utilisant l'option --local-dir-use-symlinks False pour les récupérer sous une structure de fichier unique.
- Lors du lancement de vLLM, appliquez
--enable-prefix-caching et --gpu-memory-utilization 0.92 pour accroître la réutilisabilité du contexte RAG et prévenir la fragmentation de la VRAM.
- Surveillez en continu le point de terminaison Prometheus (
/metrics) et, dès que l'indicateur vllm:gpu_cache_usage_factor dépasse 90 %, réduisez immédiatement --max-model-len de 16384 à 8192.
En fin de compte, la seule façon de maîtriser les coûts tout en respectant les politiques de sécurité internes reste un déploiement direct et un suivi rigoureux des métriques.