Comment exécuter un LLM localement : comparaison de Ollama, llama.cpp, LM Studio et vLLM

Il existe plusieurs façons d'exécuter un LLM localement. Certains outils sont conçus pour faciliter la prise en main, tandis que d'autres offrent davantage de contrôle ou sont bâtis pour servir de nombreux utilisateurs simultanément. Le choix optimal dépend de savoir si vous souhaitez une discussion locale simple, un moteur d'inférence configurable ou une API de production.

Ollama

Ollama est l'une des méthodes les plus simples pour commencer à exécuter des modèles localement. Installez-le, téléchargez un modèle et exécutez-le depuis le terminal. Il fournit également une API locale pour les applications et autres outils.

Avantages :

  • Installation et gestion des modèles simplifiées
  • Flux de travail en ligne de commande facile à utiliser
  • API compatible avec OpenAI
  • Prise en charge de l'accélération GPU via NVIDIA, AMD, Apple Silicon et Vulkan
  • Les Modelfiles permettent de personnaliser les modèles et les paramètres
  • Prise en charge des requêtes concurrentes si la mémoire disponible est suffisante

Inconvénients :

  • Moins de contrôle de bas niveau que llama.cpp
  • La gestion des modèles est étroitement liée à l'écosystème Ollama
  • Ce n'est pas le premier choix si vous avez besoin d'un débit de service maximal ou d'une inférence distribuée

Difficulté : Faible. Un bon choix si vous souhaitez faire fonctionner un modèle rapidement sans avoir à gérer de nombreux paramètres d'inférence.

llama.cpp

llama.cpp est un moteur d'inférence léger en C/C++ conçu pour exécuter efficacement des modèles sur une large gamme de matériel. Il utilise des modèles GGUF et vous donne un contrôle détaillé sur la manière dont le modèle est chargé et exécuté.

Avantages :

  • Contrôle fin sur le contexte, le délestage GPU, le lotissement (batching), les threads, la quantification et d'autres paramètres d'inférence
  • Large prise en charge matérielle, incluant CUDA, HIP, Metal, Vulkan et SYCL
  • Prise en charge de nombreux niveaux de quantification, des formats de faible précision jusqu'aux 8 bits
  • Permet de fractionner les modèles entre plusieurs GPU
  • Peut utiliser le CPU et le GPU conjointement lorsqu'un modèle dépasse la VRAM disponible
  • Inclut llama-server pour une API compatible avec OpenAI

Inconvénients :

  • Requiert plus de configuration qu'Ollama ou LM Studio
  • Les modèles GGUF sont généralement téléchargés et gérés séparément
  • De nombreux paramètres utiles nécessitent une compréhension des paramètres d'inférence

Difficulté : Moyenne. Un bon choix si vous souhaitez contrôler précisément l'exécution d'un modèle ou expérimenter les performances et la quantification.

LM Studio

LM Studio est une application de bureau pour télécharger, configurer et exécuter des LLM locaux. Il offre une interface graphique pour trouver des modèles et gérer des éléments tels que le délestage GPU et la taille du contexte.

Avantages :

  • Interface graphique simple
  • Recherche et téléchargement de modèles via Hugging Face
  • Affiche les informations sur le modèle et les ressources avant le chargement
  • Serveur d'API compatible avec OpenAI
  • Peut exécuter des modèles sans interface (headlessly) via son serveur llmster
  • Prise en charge des modèles GGUF via llama.cpp et des modèles MLX sur Apple Silicon

Inconvénients :

  • Moins de contrôle de bas niveau que l'utilisation directe de llama.cpp
  • L'application de bureau est moins adaptée à certains déploiements serveur
  • N'est pas principalement conçu pour le service à grande échelle à plusieurs utilisateurs

Difficulté : Faible. Un bon choix si vous souhaitez expérimenter avec des modèles locaux sans passer beaucoup de temps dans le terminal.

vLLM

vLLM est conçu pour servir des LLM aux applications et à de nombreux utilisateurs. Son principal atout est le service efficace à forte concurrence, utilisant des techniques telles que PagedAttention, le lotissement continu (continuous batching), la mise en cache des préfixes (prefix caching) et l'inférence distribuée.

Avantages :

  • Fort débit pour de multiples requêtes concurrentes
  • Lotissement continu et gestion efficace de la cache KV
  • Serveur d'API compatible avec OpenAI
  • Fonctionne directement avec de nombreux modèles Hugging Face
  • Prise en charge de la quantification, y compris FP8, INT4, GPTQ, AWQ, GGUF et d'autres
  • Prise en charge de la parallélisation tensorielle, pipeline, d'experts et d'autres formes de parallélisme
  • Conçu pour l'inférence et le service en production

Inconvénients :

  • Installation et configuration plus complexes
  • Visé principalement aux environnements Linux
  • Généralement inutile pour une seule personne exécutant un modèle en mode interactif
  • Il faut vérifier la compatibilité matérielle et des modèles avant le déploiement

Difficulté : Élevée. Mieux adapté aux personnes déployant un service d'inférence plutôt qu'aux simples utilisateurs exécutant un modèle sur un ordinateur personnel.

Lequel choisir ?

  • Vous souhaitez simplement exécuter un modèle facilement : Ollama ou LM Studio. Choisissez Ollama pour la ligne de commande et une API simple, ou LM Studio pour une interface graphique.
  • Vous voulez contrôler l'inférence : llama.cpp. Il vous offre un contrôle direct sur le chargement du modèle, la quantification, le contexte, le délestage GPU et d'autres paramètres.
  • Vous avez besoin d'une API locale : Ollama, llama.cpp ou LM Studio. Les trois proposent des API compatibles avec OpenAI.
  • Vous devez servir de nombreux utilisateurs : vLLM. Ses fonctions de lotissement continu et d'inférence distribuée sont conçues pour ce cas d'usage.
  • Vous voulez expérimenter avec différentes quantifications : llama.cpp ou LM Studio.

L'exécuter sur DaDesktop

Si vous ne disposez pas de suffisamment de matériel GPU localement, vous pouvez exécuter ces outils sur un bureau virtuel cloud DaDesktop. Choisissez un GPU avec suffisamment de VRAM pour le modèle que vous souhaitez exécuter, lancez le bureau et installez le logiciel d'inférence de votre choix.

Ollama et LM Studio sont utiles si vous souhaitez un environnement local simple. llama.cpp vous offre plus de contrôle sur le matériel et les paramètres d'inférence. vLLM est une option si vous avez besoin d'exposer un modèle comme une API à plus fort débit.

Voir les GPU disponibles pour comparer la VRAM et autres spécifications.