Servicio rápido de modelos de lenguaje grandes en PCs con GPU de consumo
(github.com/SJTU-IPADS)PowerInfer: servicio rápido de modelos de lenguaje grandes con GPUs de consumo
- PowerInfer es un motor de inferencia de LLM CPU/GPU que aprovecha la localidad de activación.
- PowerInfer y llama.cpp se ejecutan en el mismo hardware y aprovechan por completo la VRAM de una RTX 4090.
Resumen
- PowerInfer es un motor que realiza inferencia de modelos de lenguaje grandes (LLM) a alta velocidad con una sola GPU de consumo instalada en una computadora personal (PC).
- La base de diseño de PowerInfer consiste en aprovechar la alta localidad que aparece en la inferencia de LLM, caracterizada por una distribución de ley de potencia en la activación de neuronas.
- Esta distribución muestra que una pequeña cantidad de neuronas “calientes” se activan de forma consistente, mientras que la mayoría de las neuronas “frías” varían según la entrada.
- PowerInfer aprovecha esta idea para diseñar un motor de inferencia híbrido GPU-CPU: las neuronas “calientes” se cargan previamente en la GPU, y las neuronas “frías” se calculan en la CPU, reduciendo de forma importante los requisitos de memoria en la GPU y la transferencia de datos entre CPU y GPU.
- PowerInfer integra un predictor adaptativo y operadores dispersos conscientes de neuronas para optimizar la eficiencia de la activación neuronal y de la dispersión computacional.
- En la evaluación, PowerInfer logró una tasa de generación promedio de 13.20 tokens/segundo y un máximo de 29.08 tokens/segundo para varios LLM (por ejemplo, OPT-175B) en una sola GPU NVIDIA RTX 4090, mostrando un rendimiento 18% inferior al de una GPU A100 de clase servidor.
- Manteniendo la precisión del modelo, ofrece un rendimiento hasta 11.69 veces más rápido que llama.cpp.
Características
-
Diseño centrado en la localidad: aprovecha la activación dispersa y el concepto de neuronas “calientes”/“frías” para una inferencia eficiente de LLM, garantizando alta velocidad con bajos requisitos de recursos.
-
Uso híbrido de CPU/GPU: integra sin problemas la memoria y la capacidad de cómputo de CPU y GPU para permitir una carga de trabajo equilibrada y un procesamiento rápido.
-
Integración sencilla: compatible con modelos dispersos basados en ReLU populares.
-
Facilidad de despliegue local: profundamente optimizado para despliegue local en hardware de consumo, permitiendo inferencia y servicio de LLM de baja latencia en una sola GPU.
-
Compatibilidad hacia atrás: aunque es distinto de llama.cpp, se puede usar como llama.cpp en la mayoría de los
examples/, como servidor y generación por lotes.
Primeros pasos
- Se ofrecen instrucciones de instalación y pesos del modelo.
Configuración e instalación
- Se explica cómo obtener el código y compilarlo.
Pesos del modelo
- Los modelos PowerInfer se almacenan en formato PowerInfer GGUF, que incluye los pesos del LLM y los pesos del predictor.
- Es posible descargar los pesos GGUF de PowerInfer a través de Hugging Face.
- Se explica cómo convertir los pesos del modelo original y los pesos del predictor a PowerInfer GGUF.
Inferencia
- Se ofrecen instrucciones para usar solo CPU o inferencia híbrida CPU-GPU utilizando toda la VRAM disponible.
Cuantización
- Se ofrece soporte de cuantización optimizada para modelos INT4(
Q4_0) y se explica cómo usarla.
Evaluación
- PowerInfer logra mejoras de velocidad de hasta 11x y 8x para modelos FP16 e INT4, respectivamente.
Preguntas frecuentes
- Se ofrecen guías para resolver el error
CUDA_ERROR_OUT_OF_MEMORYy apoyo para solucionar otros problemas.
Pendientes
- Se describen los planes de lanzamiento para el código central de PowerInfer, el modelo Mistral-7B, soporte para Windows, text-generation-webui, código de evaluación de perplexity, soporte Metal para Mac, código para modelos OPT, código de entrenamiento del predictor, partición en línea de redes FFN, soporte Multi-GPU, entre otros.
Artículo e cita
- Los detalles técnicos de PowerInfer pueden consultarse en el artículo.
- Se solicita citar el artículo si PowerInfer resulta útil o ayuda en proyectos e investigaciones relacionadas.
Agradecimientos
- Agradecimiento a la biblioteca de operadores modificable ggml y al runtime de ejecución de llama.cpp.
- Agradecimiento al apoyo de THUNLP para modelos dispersos basados en ReLU.
- Agradecimiento a la investigación Deja Vu que inspiró a PowerInfer.
Opinión de GN⁺
- PowerInfer es un motor innovador que permite inferencia rápida y eficiente de modelos de lenguaje grandes usando GPUs de consumo.
- A través del concepto de neuronas “calientes”/“frías” y el uso híbrido de CPU/GPU, ofrece velocidades de inferencia cercanas al rendimiento de servidores mientras ahorra recursos.
- Esta tecnología abre la posibilidad de que desarrolladores individuales o equipos pequeños experimenten y desplieguen modelos de alto rendimiento sin necesidad de acceder a hardware de clase servidor en investigación y desarrollo de IA.
Aún no hay comentarios.