Home
Login

LMDeploy est une boîte à outils pour la compression, le déploiement et le service de grands modèles de langage.

Apache-2.0Python 6.6kInternLM Last Updated: 2025-06-19

Présentation détaillée du projet LMDeploy

Aperçu du projet

LMDeploy est une boîte à outils pour la compression, le déploiement et le service de grands modèles de langage, développée par les équipes MMRazor et MMDeploy. Ce projet se concentre sur la fourniture de solutions efficaces d'inférence, de déploiement et de service pour les grands modèles de langage (LLM) et les modèles vision-langage (VLM).

Caractéristiques principales

1. Inférence efficace (Efficient Inference)

Le débit de requêtes de LMDeploy est 1,8 fois supérieur à celui de vLLM, grâce à l'introduction de fonctionnalités clés telles que le traitement par lots continu (continuous batching), le cache KV fragmenté, la fusion de segmentation dynamique, le parallélisme tensoriel et les noyaux CUDA haute performance.

2. Quantification efficace (Effective Quantization)

LMDeploy prend en charge la quantification des poids et la quantification k/v, avec des performances d'inférence 4 bits 2,4 fois supérieures à celles de FP16. La qualité de la quantification a été confirmée par l'évaluation OpenCompass.

3. Service de distribution facile (Effortless Distribution Server)

Grâce au service de distribution des requêtes, LMDeploy facilite le déploiement efficace de services multi-modèles sur plusieurs machines et cartes.

4. Mode d'inférence interactif (Interactive Inference Mode)

En mettant en cache les k/v de l'attention pendant les conversations à plusieurs tours, le moteur mémorise l'historique de la conversation, évitant ainsi le traitement répété des sessions précédentes.

5. Excellente compatibilité (Excellent Compatibility)

LMDeploy prend en charge l'utilisation simultanée de la quantification KV Cache, AWQ et la mise en cache automatique des préfixes.

Architecture à double moteur

LMDeploy a développé deux moteurs d'inférence :

Moteur TurboMind

  • Concentration : Poursuite de l'optimisation ultime des performances d'inférence
  • Caractéristiques : Implémentation C++/CUDA hautement optimisée, conçue pour les environnements de production

Moteur PyTorch

  • Concentration : Développement en Python pur, réduisant la barrière pour les développeurs
  • Caractéristiques : Facilite l'expérimentation rapide de nouvelles fonctionnalités et technologies, facile à étendre et à personnaliser

Les deux moteurs diffèrent en termes de types de modèles pris en charge et de types de données d'inférence. Les utilisateurs peuvent choisir le moteur approprié en fonction de leurs besoins réels.

Modèles pris en charge

LMDeploy prend en charge une large gamme de types de modèles :

Grands modèles de langage (LLMs)

  • Série InternLM (InternLM, InternLM2, InternLM2.5, InternLM3)
  • Série Llama (Llama2, Llama3, Llama3.1)
  • Série Qwen (Qwen1.5, Qwen1.5-MOE, etc.)
  • Série Baichuan2
  • Mistral, Mixtral
  • Série DeepSeek
  • Gemma
  • Code Llama
  • D'autres modèles sont constamment ajoutés

Modèles vision-langage (VLMs)

  • Série InternVL
  • Série InternLM-XComposer
  • Série LLaVA
  • Série CogVLM
  • Mini-InternVL
  • DeepSeek-VL
  • Davantage de modèles multimodaux

Méthodes d'installation

Installation rapide

Il est recommandé d'utiliser pip pour l'installation dans un environnement conda (prise en charge de Python 3.8-3.12) :

conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy

Remarques

  • Le package pré-construit par défaut est compilé sur la base de CUDA 12 (à partir de la version v0.3.0)
  • Prise en charge de l'installation sur les plateformes CUDA 11+
  • Prise en charge de la construction à partir du code source

Exemples d'utilisation rapide

Inférence de base

import lmdeploy
with lmdeploy.pipeline("internlm/internlm3-8b-instruct") as pipe:
    response = pipe(["Hi, pls intro yourself", "Shanghai is"])
    print(response)

Inférence multimodale

from lmdeploy import pipeline
from lmdeploy.vl import load_image

pipe = pipeline('OpenGVLab/InternVL2-8B')
image = load_image('path/to/image.jpg')
response = pipe(('描述这张图片', image))
print(response)

Prise en charge des sources de modèles

LMDeploy prend en charge plusieurs bibliothèques de modèles :

  1. HuggingFace (par défaut)
  2. ModelScope : Définir la variable d'environnement LMDEPLOY_USE_MODELSCOPE=True
  3. openMind Hub : Définir la variable d'environnement LMDEPLOY_USE_OPENMIND_HUB=True

Scénarios d'application

  1. Déploiement en environnement de production : Services LLM à haut débit
  2. Expérimentation de R&D : Validation rapide de nouveaux modèles et algorithmes
  3. Environnements à ressources limitées : Réduction des besoins en ressources grâce à la technologie de quantification
  4. Applications multimodales : Inférence efficace des modèles vision-langage
  5. Appareils périphériques : Prise en charge des plateformes NVIDIA Jetson, etc.

Intégration de l'écosystème

LMDeploy est profondément intégré à plusieurs projets open source :

  • OpenAOE : Intégration transparente des services LMDeploy
  • Swift : En tant qu'accélérateur d'inférence VLM par défaut
  • BentoML : Fournit des exemples de projets de déploiement
  • Plateforme Jetson : Adaptation spécifique aux appareils périphériques

Conclusion

LMDeploy est une boîte à outils de déploiement de grands modèles de langage puissante et performante, adaptée à divers scénarios, de l'expérimentation de R&D au déploiement en production. Son architecture à double moteur, sa technologie de quantification avancée et sa large prise en charge des modèles en font un outil important pour les développeurs d'applications d'IA. Que ce soit pour un environnement de production à la recherche de performances ultimes ou pour un scénario de R&D nécessitant une itération rapide, LMDeploy peut fournir la solution appropriée.