Home
Login
SJTU-IPADS/PowerInfer

PowerInfer es un motor de inferencia de modelos de lenguaje grandes de alta velocidad, diseñado para la implementación local, que utiliza la activación dispersa y una arquitectura híbrida CPU/GPU para lograr una inferencia LLM rápida en hardware de consumo.

MITC++ 8.2kSJTU-IPADS Last Updated: 2025-02-19
https://github.com/SJTU-IPADS/PowerInfer

PowerInfer - Motor de Inferencia de Alta Velocidad para Modelos de Lenguaje Grandes

Resumen del Proyecto

PowerInfer es un motor de inferencia de alta velocidad para modelos de lenguaje grandes (LLM), desarrollado por el Laboratorio IPADS de la Universidad Jiao Tong de Shanghái, diseñado específicamente para ordenadores personales equipados con una única GPU de consumo. La innovación central de este proyecto reside en aprovechar las características de alta localidad inherentes a la inferencia de LLM, optimizando el rendimiento de la inferencia a través de patrones de activación neuronal distribuidos según la ley de potencia.

Contexto del Proyecto

La inferencia tradicional de LLM se enfrenta a enormes desafíos computacionales y de memoria, especialmente al implementar modelos grandes en hardware de consumo. PowerInfer, a través de un análisis profundo de los patrones de activación de redes neuronales, descubrió una idea clave: un pequeño número de neuronas "calientes" se activan continuamente en todas las entradas, mientras que la mayoría de las neuronas "frías" varían según la entrada específica.

Principios Técnicos Fundamentales

Mecanismo de Neuronas Calientes y Frías

El diseño de PowerInfer se basa en las siguientes observaciones centrales:

  • Neuronas Calientes: Un pequeño número de neuronas que se activan continuamente en todas las entradas.
  • Neuronas Frías: La mayoría de las neuronas que varían según la entrada específica.
  • Distribución de Ley de Potencia: La activación neuronal sigue un patrón de distribución de ley de potencia.

Arquitectura Híbrida GPU-CPU

Basado en las características de las neuronas calientes y frías, PowerInfer adopta una innovadora estrategia de inferencia híbrida:

  • GPU: Precarga las neuronas de activación caliente, permitiendo un acceso rápido.
  • CPU: Calcula las neuronas de activación fría, reduciendo significativamente la necesidad de memoria de la GPU.
  • Programación Inteligente: Reduce drásticamente los gastos generales de transferencia de datos CPU-GPU.

Características y Funcionalidades Clave

🚀 Inferencia de Alto Rendimiento

  • Rendimiento de Velocidad: Velocidad promedio de generación de tokens de 13.20 tokens/s, con un pico de hasta 29.08 tokens/s.
  • Comparación de Rendimiento: Mejora de rendimiento de hasta 11.69 veces en comparación con llama.cpp.
  • Eficiencia de Hardware: El rendimiento en una RTX 4090 es solo un 18% inferior al de una GPU A100 de nivel de servidor.

🧠 Tecnologías de Optimización Inteligente

  • Predictor Adaptativo: Optimiza dinámicamente la predicción de la activación neuronal.
  • Operadores de Esparcimiento Sensibles a las Neuronas: Optimiza la eficiencia del cálculo de la escasez.
  • Diseño Centrado en la Localidad: Aprovecha al máximo las características de activación dispersa.

🔧 Facilidad de Uso y Compatibilidad

  • Integración Sencilla: Compatible con modelos dispersos ReLU populares.
  • Implementación Local: Profundamente optimizado para hardware de consumo.
  • Compatibilidad con Versiones Anteriores: Admite la mayoría de los métodos de uso de llama.cpp.

Modelos Compatibles

Series de Modelos Actualmente Compatibles

Serie de Modelos Tamaño de Parámetros Características
Serie Falcon 40B Optimización de la función de activación ReLU
Serie Llama2 7B/13B/70B Soporte para toda la serie
ProSparse Llama2 7B/13B ~90% de escasez, rendimiento cercano al original
Serie Bamboo 7B Máximo rendimiento y velocidad

Formato de Modelo

PowerInfer utiliza un formato PowerInfer GGUF especializado, que contiene:

  • Pesos LLM
  • Pesos del predictor
  • Información estadística de activación

Arquitectura Técnica

Diseño del Sistema

┌─────────────────┐    ┌─────────────────┐
│   Neuronas Calientes │───▶│      GPU        │
│  (Activación Continua)│    │   (Acceso Rápido) │
└─────────────────┘    └─────────────────┘
                              │
                              ▼
┌─────────────────┐    ┌─────────────────┐
│   Neuronas Frías   │───▶│      CPU        │
│  (Activación Condicional)│    │   (Cálculo Flexible)│
└─────────────────┘    └─────────────────┘

Componentes Clave

  1. Predictor de Activación: Predice de forma inteligente los patrones de activación neuronal.
  2. Administrador de Memoria: Optimiza la asignación de memoria GPU/CPU.
  3. Operadores Dispersos: Procesa eficientemente los cálculos dispersos.
  4. Programador: Asigna de forma inteligente las tareas de cálculo.

Soporte de Plataforma

Plataformas Probadas

  • Linux: CPU x86-64 con conjunto de instrucciones AVX2, compatible con NVIDIA GPU.
  • Windows: CPU x86-64 con conjunto de instrucciones AVX2, compatible con NVIDIA GPU.
  • macOS: Chips Apple M (solo CPU, mejora de rendimiento limitada).
  • AMD GPU: Compatible a través de ROCm.

Requisitos de Hardware

  • CPU: Procesador x86-64 compatible con el conjunto de instrucciones AVX2.
  • GPU: Serie NVIDIA RTX o AMD GPU (opcional).
  • Memoria: Depende del tamaño del modelo.
  • Almacenamiento: Espacio suficiente para almacenar los archivos del modelo.

Pruebas de Rendimiento

Rendimiento de RTX 4090

Modelo PowerInfer llama.cpp Relación de Aceleración
Falcon-40B 11.2 tokens/s 1.0 tokens/s 11.2x
Llama2-70B 8.1 tokens/s 2.7 tokens/s 3.0x
Llama2-13B 24.8 tokens/s 8.9 tokens/s 2.8x

Rendimiento de RTX 2080Ti (Cuantificación INT4)

Modelo PowerInfer llama.cpp Relación de Aceleración
Falcon-40B 6.8 tokens/s 0.85 tokens/s 8.0x
Llama2-70B 5.2 tokens/s 1.7 tokens/s 3.1x

Instalación y Uso

Requisitos del Entorno

  • CMake (3.17+)
  • Python (3.8+) y pip (19.3+)
  • Cadena de herramientas CUDA (si se utiliza NVIDIA GPU)

Instalación Básica

git clone https://github.com/SJTU-IPADS/PowerInfer
cd PowerInfer
pip install -r requirements.txt

# NVIDIA GPU
cmake -S . -B build -DLLAMA_CUBLAS=ON
cmake --build build --config Release

# CPU only
cmake -S . -B build
cmake --build build --config Release

Descarga del Modelo

# Usar huggingface-cli para descargar el modelo
huggingface-cli download --resume-download --local-dir ReluLLaMA-7B \
  --local-dir-use-symlinks False PowerInfer/ReluLLaMA-7B-PowerInfer-GGUF

Ejecución de la Inferencia

# Inferencia básica
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
  -n 128 -t 8 -p "Érase una vez"

# Limitar el uso de VRAM
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
  -n 128 -t 8 -p "Érase una vez" --vram-budget 8

Últimas Actualizaciones y Desarrollo

Innovaciones Técnicas

  1. PowerInfer-2: Versión optimizada para dispositivos móviles, que alcanza 11.68 tokens/s en teléfonos inteligentes.
  2. TurboSparse: Tecnología de esparcimiento de bajo costo, que reduce significativamente los parámetros manteniendo el rendimiento.
  3. Bamboo LLM: Serie de modelos de desarrollo propio que prioriza el rendimiento y la velocidad.

Escenarios de Aplicación

Escenarios Aplicables

  • Asistente de IA Personal: Implementar un asistente de IA privado localmente.
  • Aplicaciones Internas de la Empresa: Servicios de IA internos que protegen la privacidad de los datos.
  • Investigación y Desarrollo: Desarrollo rápido de prototipos y pruebas de modelos.
  • Computación en el Borde: Implementar LLM en entornos con recursos limitados.
  • Investigación Educativa: Aprender e investigar tecnologías de inferencia de modelos grandes.

Ventajas y Características

  • Protección de la Privacidad: Todos los cálculos se realizan localmente.
  • Rentabilidad: Se puede obtener un rendimiento excelente utilizando hardware de consumo.
  • Implementación Sencilla: No requiere una configuración compleja de sistemas distribuidos.
  • Respuesta Rápida: Inferencia local de baja latencia.

Comparación Técnica

vs. Motores de Inferencia Tradicionales

Característica PowerInfer Motor Tradicional
Requisitos de Hardware GPU de consumo GPU de nivel de servidor
Eficiencia de Memoria Híbrido CPU/GPU Carga completa en GPU
Velocidad de Inferencia Mejora de 11.69x Rendimiento de referencia
Costo Bajo costo Alto costo

vs. llama.cpp

  • Rendimiento: Aumento de velocidad de hasta 11.69 veces.
  • Memoria: Utilización de memoria más eficiente.
  • Hardware: Mejor coordinación CPU/GPU.
  • Compatibilidad: Admite la mayoría de las funciones de llama.cpp.

Profundización en los Principios Técnicos

Aprovechamiento de la Dispersión

El núcleo de PowerInfer reside en el profundo aprovechamiento de la dispersión de la red neuronal:

  1. Análisis de Patrones de Activación: Descubrimiento de la distribución de la ley de potencia de la activación neuronal a través del análisis de grandes cantidades de datos.
  2. Mecanismo de Predicción: Uso de un predictor ligero para predecir el estado de activación neuronal.
  3. Programación Dinámica: Asignación dinámica de recursos de cálculo en función de los resultados de la predicción.

Estrategias de Optimización de la Memoria

  • Almacenamiento en Capas: Los datos calientes se almacenan en la GPU, los datos fríos se almacenan en la CPU.
  • Mecanismo de Búsqueda Anticipada: Búsqueda anticipada inteligente de los datos que puedan ser necesarios.
  • Técnicas de Compresión: Compresión del almacenamiento de datos fríos.

Desarrollo y Contribución

Licencia de Código Abierto

PowerInfer adopta una licencia de código abierto y da la bienvenida a las contribuciones de la comunidad. El proyecto acepta activamente comentarios sobre problemas y sugerencias de funciones.

Equipo de Investigación y Desarrollo

  • Laboratorio IPADS de la Universidad Jiao Tong de Shanghái: Equipo de desarrollo principal.
  • THUNLP de la Universidad Tsinghua: Soporte para modelos dispersos ReLU.
  • Comunidad de Código Abierto: Contribuciones y mejoras continuas.

Impacto Académico

Se han publicado artículos de investigación relacionados, que proporcionan una base teórica importante y orientación práctica para el campo de la optimización de la inferencia de modelos de lenguaje grandes.

Resumen

PowerInfer representa un gran avance en la tecnología de inferencia local de modelos de lenguaje grandes. A través de un innovador mecanismo de neuronas calientes y frías y una arquitectura híbrida CPU/GPU, logra con éxito un rendimiento de inferencia cercano al nivel de servidor en hardware de consumo.