Accueil / Articles

Déploiement pratique des LLM : Ollama, vLLM et TGI

La couche de déploiement qui transforme les fichiers de modèle en API LLM : Ollama pour un usage local, vLLM et Hugging Face TGI pour les GPU, ainsi que ce que les transformateurs classiques manquent.

Éditeur : REACTAPP.TOP5 min de lecture1118 mots

Sources: Serving LLMs, Hands-On — Ollama, vLLM & TGI

Moteurs de traitement : la couche sous « juste appeler le modèle »

serveur d’inférence : il charge les poids, gère la mémoire GPU, regroupe les tâches et transmet des tokens afin que de nombreux clients puissent utiliser une seule API. Trois noms que vous entendrez souvent : Ollama, vLLM et TGI (Text Generation Inference).

Pourquoi transformers pur n’est pas un serveur

Charger un modèle et appeler .generate() fonctionne pour une seule requête lente. Sous charge, le système échoue : pas de regroupement continu des requêtes, planification mémoire insuffisante, streaming multi-utilisateurs peu pratique. Les moteurs de service existent pour transformer un « fichier de modèle » en une « API ».

Ollama — priorité au local

Installez-le, téléchargez-le, exécutez-le et utilisez son API HTTP :

ollama pull llama3.2
ollama serve            # usually already running; serves on http://localhost:11434
from openai import OpenAI   # pip install openai

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")  # key is ignored locally

resp = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)

Utilisez-le pour apprendre à formuler des prompts et créer des applications sans clés cloud. Connaissiez ses limites lorsque vous avez besoin d’un planification à grande échelle.

vLLM — service GPU adapté au regroupement de requêtes

Avec un environnement d’exécution GPU :

pip install vllm
vllm serve meta-llama/Llama-3.1-8B-Instruct       # OpenAI-compatible server on :8000

Les points forts résident dans des endpoints compatibles avec OpenAI et un regroupement continu des requêtes. Surveillez la mémoire GPU ainsi que les paramètres de contexte maximal.

TGI — stack de service de Hugging Face

docker run --runtime nvidia --gpus all \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -p 8000:8000 --ipc=host \
  vllm/vllm-openai:latest \
  --model meta-llama/Llama-3.1-8B-Instruct

TGI se concentre sur le service en production des modèles Hugging Face, avec des fonctionnalités de streaming et de suivi. Comparez la latence et la complexité opérationnelle avec vLLM pour vos modèles.

Modèle mental côte à côte

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")   # ← base_url changed
resp = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",                           # ← model changed
    messages=[{"role": "user", "content": "Explain KV cache in one sentence."}],
)
print(resp.choices[0].message.content)
  • Ollama : développement distribué et itération locale
  • vLLM : tokens/seconde sur NVIDIA en mode concurrence
  • TGI : service de production axé sur HF

Votre tour

docker run --gpus all --shm-size 1g -p 8080:80 \
  -v ~/.cache/huggingface:/data \
  ghcr.io/huggingface/text-generation-inference:latest \
  --model-id meta-llama/Llama-3.1-8B-Instruct

Testez chaque serveur avec la même requête, notez le temps de réponse et les tokens/seconde, puis indiquez quel moteur convient à votre prochain projet — démonstration sur ordinateur portable, boîtier GPU interne ou API multi-locataires.

Rendez le déploiement simple : utilisation de compose, vérifications de santé et un seul endroit pour mettre à jour les modèles. C’est en restant simple que les outils internes survivent au contact des véritables plannings d’intervention.

Rendez le déploiement simple : utilisation de compose, vérifications de santé et un seul endroit pour mettre à jour les modèles. C’est en restant simple que les outils internes survivent au contact des véritables plannings d’intervention.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement banal : utilisation de Compose, vérifications de santé, et un seul endroit pour rotation des modèles. C’est en restant banal que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement ennuyeux : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en étant ennuyeux que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement ennuyeux : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en étant ennuyeux que les outils internes parviennent à faire face aux véritables plannings d’urgence.

Rendez le déploiement ennuyeux : utilisation de Compose, vérifications de santé, et un seul endroit pour rotater les modèles. C’est en étant ennuyeux que les outils internes parviennent à faire face aux véritables plannings d’urgence.