Home
Login

LMDeploy es un conjunto de herramientas para comprimir, desplegar y servir modelos de lenguaje grandes.

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

Introducción Detallada al Proyecto LMDeploy

Resumen del Proyecto

LMDeploy es un conjunto de herramientas para comprimir, desplegar y servir modelos de lenguaje grandes, desarrollado por los equipos de MMRazor y MMDeploy. Este proyecto se centra en proporcionar soluciones eficientes de inferencia, despliegue y servicio para modelos de lenguaje grandes (LLM) y modelos visuales-lingüísticos (VLM).

Características Principales

1. Inferencia Eficiente (Efficient Inference)

El rendimiento de solicitudes de LMDeploy es 1.8 veces mayor que el de vLLM, mediante la introducción de características clave como el procesamiento por lotes persistente (continuous batching), el almacenamiento en caché KV fragmentado, la fusión de segmentación dinámica, el paralelismo tensorial y los núcleos CUDA de alto rendimiento.

2. Cuantificación Efectiva (Effective Quantization)

LMDeploy admite la cuantificación de pesos y la cuantificación k/v, con un rendimiento de inferencia de 4 bits 2.4 veces mayor que FP16. La calidad de la cuantificación ha sido confirmada mediante la evaluación de OpenCompass.

3. Servicio de Distribución Sencillo (Effortless Distribution Server)

Utilizando el servicio de distribución de solicitudes, LMDeploy facilita el despliegue eficiente de servicios de múltiples modelos en múltiples máquinas y tarjetas.

4. Modo de Inferencia Interactiva (Interactive Inference Mode)

Al almacenar en caché el k/v de la atención durante las conversaciones de múltiples rondas, el motor recuerda el historial de la conversación, evitando así el procesamiento repetido de las sesiones históricas.

5. Excelente Compatibilidad (Excellent Compatibility)

LMDeploy admite el uso simultáneo de la cuantificación KV Cache, AWQ y el almacenamiento en caché automático de prefijos.

Arquitectura de Doble Motor

LMDeploy ha desarrollado dos motores de inferencia:

Motor TurboMind

  • Enfoque: Búsqueda de la optimización definitiva del rendimiento de la inferencia
  • Características: Implementación altamente optimizada en C++/CUDA, diseñada para entornos de producción

Motor PyTorch

  • Enfoque: Desarrollo puro en Python, reduciendo la barrera de entrada para los desarrolladores
  • Características: Facilita la experimentación rápida de nuevas funciones y tecnologías, fácil de expandir y personalizar

Los dos motores difieren en los tipos de modelos y los tipos de datos de inferencia que admiten, y los usuarios pueden elegir el motor adecuado según sus necesidades reales.

Modelos Soportados

LMDeploy admite una amplia gama de tipos de modelos:

Modelos de Lenguaje Grandes (LLMs)

  • Serie InternLM (InternLM, InternLM2, InternLM2.5, InternLM3)
  • Serie Llama (Llama2, Llama3, Llama3.1)
  • Serie Qwen (Qwen1.5, Qwen1.5-MOE, etc.)
  • Serie Baichuan2
  • Mistral, Mixtral
  • Serie DeepSeek
  • Gemma
  • Code Llama
  • Más modelos se añaden continuamente

Modelos Visuales-Lingüísticos (VLMs)

  • Serie InternVL
  • Serie InternLM-XComposer
  • Serie LLaVA
  • Serie CogVLM
  • Mini-InternVL
  • DeepSeek-VL
  • Más modelos multimodales

Instalación

Instalación Rápida

Se recomienda instalar con pip en un entorno conda (compatible con Python 3.8-3.12):

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

Notas

  • Los paquetes precompilados predeterminados se compilan en base a CUDA 12 (a partir de la versión v0.3.0)
  • Admite la instalación en plataformas CUDA 11+
  • Admite la construcción desde el código fuente

Ejemplos de Uso Rápido

Inferencia Básica

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

Inferencia Multimodal

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)

Soporte de Fuentes de Modelos

LMDeploy admite múltiples bibliotecas de modelos:

  1. HuggingFace (predeterminado)
  2. ModelScope: Establezca la variable de entorno LMDEPLOY_USE_MODELSCOPE=True
  3. openMind Hub: Establezca la variable de entorno LMDEPLOY_USE_OPENMIND_HUB=True

Escenarios de Aplicación

  1. Despliegue en Entornos de Producción: Servicios LLM de alto rendimiento
  2. Experimentación en I+D: Validación rápida de nuevos modelos y algoritmos
  3. Entornos con Recursos Limitados: Reducción de las necesidades de recursos mediante técnicas de cuantificación
  4. Aplicaciones Multimodales: Inferencia eficiente de modelos visuales-lingüísticos
  5. Dispositivos Edge: Soporte para plataformas como NVIDIA Jetson

Integración del Ecosistema

LMDeploy está profundamente integrado con varios proyectos de código abierto:

  • OpenAOE: Integración perfecta con los servicios LMDeploy
  • Swift: Como acelerador de inferencia VLM predeterminado
  • BentoML: Proporciona proyectos de ejemplo de despliegue
  • Plataforma Jetson: Adaptación específica para dispositivos edge

Resumen

LMDeploy es un conjunto de herramientas de despliegue de modelos de lenguaje grandes potente y de alto rendimiento, adecuado para una variedad de escenarios, desde la experimentación en I+D hasta el despliegue en producción. Su arquitectura de doble motor, sus avanzadas técnicas de cuantificación y su amplio soporte de modelos lo convierten en una herramienta importante para los desarrolladores de aplicaciones de IA. Ya sea que se busque el máximo rendimiento en un entorno de producción o se necesite una iteración rápida en un escenario de I+D, LMDeploy puede proporcionar la solución adecuada.