Servir modelos de linguagem grandes em alta velocidade em PCs com GPUs de consumo
(github.com/SJTU-IPADS)PowerInfer: serviço rápido de modelos de linguagem de grande porte usando GPUs de consumo
- PowerInfer é um motor de inferência de LLM em CPU/GPU que aproveita a localidade de ativação.
- PowerInfer e llama.cpp rodam no mesmo hardware e utilizam totalmente a VRAM de uma RTX 4090.
Visão geral
- PowerInfer é um motor que realiza inferência de modelos de linguagem de grande porte (LLM) em alta velocidade com uma única GPU de consumo instalada em um computador pessoal (PC).
- A base do design do PowerInfer é aproveitar a alta localidade observada na inferência de LLMs, caracterizada por uma distribuição de lei de potência na ativação de neurônios.
- Essa distribuição indica que um pequeno número de neurônios “quentes” é ativado de forma consistente, enquanto a maioria dos neurônios “frios” varia conforme a entrada.
- PowerInfer usa esse insight para projetar um motor de inferência híbrido GPU-CPU: os neurônios “quentes” são pré-carregados na GPU, e os neurônios “frios” são calculados na CPU, reduzindo significativamente os requisitos de memória da GPU e a transferência de dados entre CPU e GPU.
- PowerInfer integra um preditor adaptativo e operadores esparsos com consciência de neurônios para otimizar a eficiência da ativação de neurônios e da esparsidade computacional.
- Na avaliação, o PowerInfer alcançou taxa média de geração de 13,20 tokens/segundo e pico de 29,08 tokens/segundo em vários LLMs (por exemplo, OPT-175B) em uma única NVIDIA RTX 4090, ficando 18% abaixo do desempenho de uma GPU A100 de nível de servidor.
- Mantendo a precisão do modelo, apresentou desempenho até 11,69 vezes superior ao do llama.cpp.
Características
-
Design centrado em localidade: usa ativação esparsa e os conceitos de neurônios “quentes”/“frios” para uma inferência eficiente de LLM, garantindo alta velocidade com baixa exigência de recursos.
-
Uso híbrido de CPU/GPU: integra de forma fluida as capacidades de memória e computação de CPU e GPU para permitir carga de trabalho equilibrada e processamento rápido.
-
Integração simples: compatível com modelos esparsos baseados em ReLU populares.
-
Facilidade de implantação local: profundamente otimizado para implantação local em hardware de consumo, permitindo inferência e serving de LLM com baixa latência em uma única GPU.
-
Compatibilidade retroativa: embora seja diferente do llama.cpp, a maioria dos
examples/, como servidor e geração em lote, pode ser usada de forma semelhante ao llama.cpp.
Primeiros passos
- São fornecidas orientações de instalação e de pesos dos modelos.
Configuração e instalação
- São fornecidas instruções para obter o código e fazer a compilação.
Pesos dos modelos
- Os modelos do PowerInfer são armazenados no formato PowerInfer GGUF, que inclui os pesos do LLM e os pesos do preditor.
- É possível baixar os pesos PowerInfer GGUF via Hugging Face.
- São fornecidas instruções para converter os pesos originais do modelo e os pesos do preditor para PowerInfer GGUF.
Inferência
- São fornecidas instruções para inferência usando apenas CPU ou inferência híbrida CPU-GPU usando toda a VRAM disponível.
Quantização
- São fornecidas orientações sobre suporte a quantização otimizada para modelos INT4(
Q4_0) e como usá-la.
Avaliação
- O PowerInfer alcança ganhos de velocidade de até 11x e 8x para modelos FP16 e INT4, respectivamente.
Perguntas frequentes
- São fornecidas orientações de suporte para resolver o erro
CUDA_ERROR_OUT_OF_MEMORYe outros problemas.
A fazer
- São apresentadas previsões de lançamento para o código principal do PowerInfer, o modelo Mistral-7B, suporte a Windows, text-generation-webui, código de avaliação de perplexidade, suporte a Metal para Mac, código do modelo OPT, código de treinamento do preditor, particionamento online da rede FFN, suporte a Multi-GPU e outros.
Artigo e citação
- Os detalhes técnicos do PowerInfer podem ser consultados no artigo.
- Se o PowerInfer for útil ou ajudar em projetos e pesquisas relacionados, é solicitado citar o artigo.
Agradecimentos
- Agradecimentos à biblioteca de operadores ajustáveis ggml e ao runtime de execução do llama.cpp.
- Agradecimentos ao apoio da THUNLP para modelos esparsos baseados em ReLU.
- Agradecimentos à pesquisa Deja Vu, que inspirou o PowerInfer.
Opinião do GN⁺
- O PowerInfer é um motor inovador que permite inferência rápida e eficiente de modelos de linguagem de grande porte usando GPUs de consumo.
- Por meio dos conceitos de neurônios “quentes”/“frios” e do uso híbrido de CPU/GPU, ele oferece velocidade de inferência próxima ao desempenho de nível de servidor, ao mesmo tempo em que economiza recursos.
- Essa tecnologia abre oportunidades para que desenvolvedores individuais ou pequenas equipes experimentem e implantem modelos de alto desempenho em pesquisa e desenvolvimento de IA sem acesso a hardware de nível de servidor.
Ainda não há comentários.