LMDeploy - Compresión y Servicio de LLM
LMDeploy (del ecosistema InternLM/OpenMMLab) es un conjunto de herramientas para comprimir, cuantizar y servir modelos de lenguaje grandes. Su motor de alto rendimiento TurboMind proporciona un throughput fuerte a través de batching persistente, caché KV bloqueada y kernels CUDA optimizados, y también ofrece un backend PyTorch. Soporta cuantización de peso AWQ de 4-bit y cuantización de caché KV, un servidor API compatible con OpenAI, y modelos de visión-lenguaje (VLMs).
Instalación
| Método | Comando |
|---|
| pip | pip install lmdeploy |
| Con extras CUDA | pip install lmdeploy[all] |
| Docker | docker run --gpus all openmmlab/lmdeploy:latest |
| Requisitos | GPU NVIDIA + CUDA |
| Verificar | lmdeploy --version |
Inferencia Rápida (CLI)
# Chat interactivo en la terminal (motor TurboMind)
lmdeploy chat internlm/internlm2_5-7b-chat
# Inferencia batch/pipeline en Python (abajo)
Pipeline de Python
from lmdeploy import pipeline
pipe = pipeline("internlm/internlm2_5-7b-chat")
resp = pipe(["Explain RAG in one sentence."])
print(resp[0].text)
| Llamada | Descripción |
|---|
pipeline(model) | Cargar un modelo con el motor por defecto (TurboMind) |
pipe([prompts]) | Inferencia por lotes |
GenerationConfig(...) | Parámetros de muestreo (temperature, top_p, max_new_tokens) |
TurbomindEngineConfig(...) | Afinación del motor (tp, cache, session len) |
Serviendo una API
# Servidor compatible con OpenAI en puerto 23333
lmdeploy serve api_server internlm/internlm2_5-7b-chat --server-port 23333
# Consultarlo
curl http://localhost:23333/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"internlm2_5-7b-chat","messages":[{"role":"user","content":"hi"}]}'
| Comando | Descripción |
|---|
lmdeploy serve api_server MODEL | Iniciar el servidor compatible con OpenAI |
lmdeploy serve gradio MODEL | Lanzar una interfaz web Gradio |
--server-port | Puerto API |
--tp N | Paralelismo de tensor a través de N GPUs |
--session-len N | Longitud máxima de contexto |
Cuantización (AWQ)
# Cuantización de peso AWQ de 4-bit solo
lmdeploy lite auto_awq internlm/internlm2_5-7b-chat \
--work-dir internlm2_5-7b-chat-4bit
# Servir el modelo cuantizado
lmdeploy serve api_server internlm2_5-7b-chat-4bit --model-format awq
| Comando | Descripción |
|---|
lmdeploy lite auto_awq MODEL | Producir un modelo AWQ de 4-bit |
lmdeploy lite calibrate MODEL | Paso de calibración |
--model-format awq | Servir un modelo cuantizado AWQ |
| Cuant de caché KV | --quant-policy 4 o 8 para caché KV INT4/INT8 |
Configuración del Motor
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))
| Opción | Efecto |
|---|
tp | GPUs paralelizados por tensor |
session_len | Longitud de contexto |
cache_max_entry_count | Fracción de VRAM para caché KV |
quant_policy | Cuantización de caché KV (4/8) |
Modelos de Visión-Lenguaje
| Capacidad | Nota |
|---|
| Soporte VLM | Servir modelos como InternVL, LLaVA, Qwen-VL |
| API igual | Mensajes multimodales a través del servidor compatible con OpenAI |
LMDeploy vs Otros Motores
| Aspecto | LMDeploy | vLLM | Aphrodite |
|---|
| Motor | TurboMind + PyTorch | PagedAttention | Bifurcación de vLLM |
| Cuantización | AWQ + cuant de caché KV | Creciente | Formatos más amplios |
| Soporte VLM | Fuerte | Sí | Sí |
| Mejor para | Alto throughput + AWQ + VLMs | Servicio estándar | Formatos cuant comunitarios |
Recursos