LMDeploy Projekt – Detaillierte Vorstellung
Projektübersicht
LMDeploy ist ein Toolkit zur Komprimierung, Bereitstellung und zum Servieren großer Sprachmodelle (LLMs), das von den Teams MMRazor und MMDeploy entwickelt wurde. Das Projekt konzentriert sich auf die Bereitstellung effizienter Inferenz-, Bereitstellungs- und Servicelösungen für große Sprachmodelle (LLMs) und visuell-sprachliche Modelle (VLMs).
Kernfunktionen
1. Effiziente Inferenz (Efficient Inference)
Der Anfragedurchsatz von LMDeploy ist 1,8-mal höher als bei vLLM, durch die Einführung von Schlüsselmerkmalen wie Continuous Batching, Chunked KV-Cache, dynamische Segmentierungsfusion, Tensorparallelität und hochleistungsfähige CUDA-Kernel.
2. Effektive Quantisierung (Effective Quantization)
LMDeploy unterstützt Gewichtungsquantisierung und k/v-Quantisierung. Die 4-Bit-Inferenzleistung ist 2,4-mal höher als bei FP16. Die Quantisierungsqualität wurde durch OpenCompass-Bewertungen bestätigt.
3. Mühelose Verteilte Dienste (Effortless Distribution Server)
Durch die Nutzung von Anforderungsverteilungsdiensten ermöglicht LMDeploy die einfache und effiziente Bereitstellung von Multi-Modell-Diensten auf mehreren Maschinen und Karten.
4. Interaktiver Inferenzmodus (Interactive Inference Mode)
Durch das Cachen der Aufmerksamkeit (k/v) während mehrfacher Dialogrunden merkt sich die Engine den Gesprächsverlauf, wodurch die wiederholte Verarbeitung historischer Sitzungen vermieden wird.
5. Ausgezeichnete Kompatibilität (Excellent Compatibility)
LMDeploy unterstützt die gleichzeitige Verwendung von KV Cache-Quantisierung, AWQ und automatischem Präfix-Caching.
Duale Engine-Architektur
LMDeploy hat zwei Inferenz-Engines entwickelt:
TurboMind Engine
- Fokus: Ultimative Optimierung der Inferenzleistung
- Merkmale: Hochoptimierte C++/CUDA-Implementierung, speziell für Produktionsumgebungen entwickelt
PyTorch Engine
- Fokus: Reine Python-Entwicklung, die die Einstiegshürde für Entwickler senkt
- Merkmale: Ermöglicht schnelles Experimentieren mit neuen Funktionen und Technologien, ist leicht erweiterbar und anpassbar
Die beiden Engines unterscheiden sich in den unterstützten Modelltypen und Inferenzdatentypen. Benutzer können je nach Bedarf die passende Engine auswählen.
Unterstützte Modelle
LMDeploy unterstützt eine breite Palette von Modelltypen:
Große Sprachmodelle (LLMs)
- InternLM-Serie (InternLM, InternLM2, InternLM2.5, InternLM3)
- Llama-Serie (Llama2, Llama3, Llama3.1)
- Qwen-Serie (Qwen1.5, Qwen1.5-MOE usw.)
- Baichuan2-Serie
- Mistral, Mixtral
- DeepSeek-Serie
- Gemma
- Code Llama
- Weitere Modelle werden fortlaufend hinzugefügt
Visuell-Sprachliche Modelle (VLMs)
- InternVL-Serie
- InternLM-XComposer-Serie
- LLaVA-Serie
- CogVLM-Serie
- Mini-InternVL
- DeepSeek-VL
- Weitere Multimodale Modelle
Installationsmethoden
Schnelle Installation
Es wird empfohlen, die Installation mit pip in einer Conda-Umgebung durchzuführen (unterstützt Python 3.8-3.12):
conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy
Hinweise
- Standardmäßig basieren die vorkompilierten Pakete auf CUDA 12 (ab Version v0.3.0)
- Installation auf CUDA 11+ Plattformen wird unterstützt
- Unterstützung für die Erstellung aus dem Quellcode
Schnellstartbeispiele
Grundlegende Inferenz
import lmdeploy
with lmdeploy.pipeline("internlm/internlm3-8b-instruct") as pipe:
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)
Multimodale Inferenz
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)
Unterstützung für Modellquellen
LMDeploy unterstützt mehrere Modellbibliotheken:
- HuggingFace (Standard)
- ModelScope: Setzen Sie die Umgebungsvariable
LMDEPLOY_USE_MODELSCOPE=True - openMind Hub: Setzen Sie die Umgebungsvariable
LMDEPLOY_USE_OPENMIND_HUB=True
Anwendungsfälle
- Produktionsumgebungsbereitstellung: LLM-Dienste mit hohem Durchsatz
- Forschungs- und Entwicklungsexperimente: Schnelle Validierung neuer Modelle und Algorithmen
- Ressourcenbeschränkte Umgebungen: Reduzierung des Ressourcenbedarfs durch Quantisierungstechniken
- Multimodale Anwendungen: Effiziente Inferenz von visuell-sprachlichen Modellen
- Edge-Geräte: Unterstützung für NVIDIA Jetson und andere Plattformen
Ökosystemintegration
LMDeploy ist tief in mehrere Open-Source-Projekte integriert:
- OpenAOE: Nahtlose Integration von LMDeploy-Diensten
- Swift: Als Standard-VLM-Inferenzbeschleuniger
- BentoML: Bereitstellung von Bereitstellungsbeispielprojekten
- Jetson-Plattform: Spezielle Anpassung an Edge-Geräte
Zusammenfassung
LMDeploy ist ein leistungsstarkes und leistungsstarkes Toolkit zur Bereitstellung großer Sprachmodelle, das für verschiedene Szenarien von Forschungs- und Entwicklungsexperimenten bis hin zur Produktionsbereitstellung geeignet ist. Seine Dual-Engine-Architektur, fortschrittliche Quantisierungstechniken und breite Modellunterstützung machen es zu einem wichtigen Werkzeug für KI-Anwendungsentwickler. Ob Produktionsumgebungen, die höchste Leistung anstreben, oder Forschungsszenarien, die eine schnelle Iteration erfordern, LMDeploy bietet die passende Lösung.