LMDeploy - Compressão e Serviço de LLM
LMDeploy (do ecossistema InternLM/OpenMMLab) é um toolkit para compressão, quantização e serviço de grandes modelos de linguagem. Seu motor TurboMind de alto desempenho oferece throughput forte via batching persistente, cache KV bloqueado e kernels CUDA otimizados, e também oferece um backend PyTorch. Suporta quantização de peso AWQ de 4-bit e quantização de cache KV, servidor API compatível com OpenAI e modelos vision-language (VLMs).
Instalação
| Método | Comando |
|---|
| pip | pip install lmdeploy |
| Com extras CUDA | pip install lmdeploy[all] |
| Docker | docker run --gpus all openmmlab/lmdeploy:latest |
| Requisitos | GPU NVIDIA + CUDA |
| Verificar | lmdeploy --version |
Inferência Rápida (CLI)
# Bate-papo interativo no terminal (motor TurboMind)
lmdeploy chat internlm/internlm2_5-7b-chat
# Inferência em lote/pipeline em Python (abaixo)
Pipeline Python
from lmdeploy import pipeline
pipe = pipeline("internlm/internlm2_5-7b-chat")
resp = pipe(["Explique RAG em uma sentença."])
print(resp[0].text)
| Chamada | Descrição |
|---|
pipeline(model) | Carregue um modelo com o motor padrão (TurboMind) |
pipe([prompts]) | Inferência em lote |
GenerationConfig(...) | Parâmetros de amostragem (temperature, top_p, max_new_tokens) |
TurbomindEngineConfig(...) | Ajuste de motor (tp, cache, session len) |
Servindo uma API
# Servidor compatível com OpenAI na porta 23333
lmdeploy serve api_server internlm/internlm2_5-7b-chat --server-port 23333
# Consulte
curl http://localhost:23333/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"internlm2_5-7b-chat","messages":[{"role":"user","content":"hi"}]}'
| Comando | Descrição |
|---|
lmdeploy serve api_server MODEL | Inicie o servidor compatível com OpenAI |
lmdeploy serve gradio MODEL | Inicie a web UI Gradio |
--server-port | Porta da API |
--tp N | Tensor parallelism entre N GPUs |
--session-len N | Comprimento de contexto máximo |
Quantização (AWQ)
# Quantização de peso AWQ de 4-bit apenas
lmdeploy lite auto_awq internlm/internlm2_5-7b-chat \
--work-dir internlm2_5-7b-chat-4bit
# Sirva o modelo quantizado
lmdeploy serve api_server internlm2_5-7b-chat-4bit --model-format awq
| Comando | Descrição |
|---|
lmdeploy lite auto_awq MODEL | Produza um modelo AWQ de 4-bit |
lmdeploy lite calibrate MODEL | Passo de calibração |
--model-format awq | Sirva um modelo quantizado AWQ |
| Quant de cache KV | --quant-policy 4 ou 8 para cache KV INT4/INT8 |
Configuração de 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))
| Opção | Efeito |
|---|
tp | GPUs tensor-paralelos |
session_len | Comprimento de contexto |
cache_max_entry_count | Fração de VRAM para cache KV |
quant_policy | Quantização de cache KV (4/8) |
Modelos Vision-Language
| Capacidade | Nota |
|---|
| Suporte VLM | Sirva modelos como InternVL, LLaVA, Qwen-VL |
| Mesma API | Mensagens multimodais via servidor compatível com OpenAI |
LMDeploy vs Outros Motores
| Aspecto | LMDeploy | vLLM | Aphrodite |
|---|
| Motor | TurboMind + PyTorch | PagedAttention | Separação vLLM |
| Quantização | AWQ + quant de cache KV | Crescente | Formatos mais amplos |
| Suporte VLM | Forte | Sim | Sim |
| Melhor para | Alto-throughput + AWQ + VLMs | Serviço padrão | Formatos de quant comunitários |
Recursos