LMDeploy - Compressione e Servizio LLM
LMDeploy (dall”ecosistema InternLM/OpenMMLab) è un toolkit per comprimere, quantizzare e servire modelli di linguaggio di grandi dimensioni. Il suo motore TurboMind ad alte prestazioni offre un throughput forte tramite persistent batching, cache KV bloccato e kernel CUDA ottimizzati, e offre anche un backend PyTorch. Supporta quantizzazione 4-bit AWQ di pesi e quantizzazione di cache KV, un server API compatibile con OpenAI e modelli vision-language (VLM).
Installazione
| Metodo | Comando |
|---|
| pip | pip install lmdeploy |
| Con extra CUDA | pip install lmdeploy[all] |
| Docker | docker run --gpus all openmmlab/lmdeploy:latest |
| Requisiti | GPU NVIDIA + CUDA |
| Verifica | lmdeploy --version |
Inferenza Rapida (CLI)
# Chat interattiva nel terminale (motore TurboMind)
lmdeploy chat internlm/internlm2_5-7b-chat
# Inferenza batch/pipeline in Python (sotto)
Pipeline Python
from lmdeploy import pipeline
pipe = pipeline("internlm/internlm2_5-7b-chat")
resp = pipe(["Spiega RAG in una frase."])
print(resp[0].text)
| Chiamata | Descrizione |
|---|
pipeline(model) | Carica un modello con il motore predefinito (TurboMind) |
pipe([prompts]) | Inferenza batch |
GenerationConfig(...) | Parametri di sampling (temperature, top_p, max_new_tokens) |
TurbomindEngineConfig(...) | Tuning del motore (tp, cache, session len) |
Servizio di un”API
# Server compatibile con OpenAI sulla porta 23333
lmdeploy serve api_server internlm/internlm2_5-7b-chat --server-port 23333
# Interrogalo
curl http://localhost:23333/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"internlm2_5-7b-chat","messages":[{"role":"user","content":"hi"}]}'
| Comando | Descrizione |
|---|
lmdeploy serve api_server MODEL | Avvia il server compatibile con OpenAI |
lmdeploy serve gradio MODEL | Avvia un”UI web Gradio |
--server-port | Porta API |
--tp N | Tensor parallelism su N GPU |
--session-len N | Lunghezza massima del contesto |
Quantizzazione (AWQ)
# Quantizzazione weight-only AWQ 4-bit
lmdeploy lite auto_awq internlm/internlm2_5-7b-chat \
--work-dir internlm2_5-7b-chat-4bit
# Servi il modello quantizzato
lmdeploy serve api_server internlm2_5-7b-chat-4bit --model-format awq
| Comando | Descrizione |
|---|
lmdeploy lite auto_awq MODEL | Produci un modello AWQ 4-bit |
lmdeploy lite calibrate MODEL | Passaggio di calibrazione |
--model-format awq | Servi un modello quantizzato AWQ |
| Quant cache KV | --quant-policy 4 o 8 per cache KV INT4/INT8 |
Configurazione del Motore
from lmdeploy import pipeline, TurbomindEngineConfig
pipe = pipeline("internlm/internlm2_5-7b-chat",
backend_config=TurbomindEngineConfig(
tp=2, session_len=8192, cache_max_entry_count=0.8, quant_policy=8))
| Opzione | Effetto |
|---|
tp | GPU tensor-parallel |
session_len | Lunghezza del contesto |
cache_max_entry_count | Frazione di VRAM per cache KV |
quant_policy | Quantizzazione cache KV (4/8) |
Modelli Vision-Language
| Capacità | Nota |
|---|
| Supporto VLM | Servi modelli come InternVL, LLaVA, Qwen-VL |
| Stessa API | Messaggi multimodali tramite il server compatibile con OpenAI |
LMDeploy vs Altri Motori
| Aspetto | LMDeploy | vLLM | Aphrodite |
|---|
| Motore | TurboMind + PyTorch | PagedAttention | Fork di vLLM |
| Quantizzazione | AWQ + quant cache KV | Crescente | Formati più ampi |
| Supporto VLM | Forte | Sì | Sì |
| Migliore per | Throughput elevato + AWQ + VLM | Servizio standard | Formati di quant della comunità |
Risorse