Está a ter dificuldades com a IA ou com o desenvolvimento full-stack? Os nossos especialistas estão aqui para o orientar: aconselhamento personalizado, integração técnica e muito mais. Entre em contacto com [email protected].

Motores de inferência GenAI: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

A ascensão da IA generativa (GenAI) transformou os sectores, desde o processamento de linguagem natural à geração de conteúdos criativos. No entanto, a implementação eficiente destes modelos poderosos à escala continua a ser um desafio.

TensorRT-LLM, vLLM, Hugging Face TGI e LMDeploy

Os mecanismos de inferência desempenham um papel fundamental na otimização do desempenho, na redução da latência e na maximização da utilização de recursos. Neste artigo, vamos nos aprofundar em quatro soluções líderes: TensorRT-LLM, vLLM, Hugging Face TGI e LMDeploy.

Cada um deles traz pontos fortes exclusivos, seja a precisão acelerada por hardware da NVIDIA, o gerenciamento de memória inovador do vLLM, o ecossistema pronto para produção do TGI ou o foco do LMDeploy em velocidade e simplicidade. Junte-se a nós enquanto comparamos esses mecanismos para ajudá-lo a encontrar a opção perfeita para suas cargas de trabalho de GenAI.

TensorRT-LLM: A potência da NVIDIA para inferência optimizada

O TensorRT-LLM é a resposta da NVIDIA para fazer com que grandes modelos de linguagem sejam executados de forma rápida e suave. Construído com base na estrutura TensorRT, foi concebido para extrair cada gota de desempenho das GPUs NVIDIA. Fá-lo com truques como a fusão de camadas, ajuste de precisão (FP16, INT8, FP8...) e otimização do kernel que reduz o tempo de computação sem quebrar a precisão do modelo.

TensorRT-LLM

Não se trata apenas de velocidade. O TensorRT-LLM lida com modelos grandes de forma eficiente, gerenciando a memória de forma inteligente, para que você não trave no meio da execução. Também suporta lotes dinâmicos, permitindo-lhe processar vários pedidos de uma só vez sem ficar sem memória. Se já estiver a utilizar hardware da NVIDIA, é óbvio que não precisa de o fazer, uma vez que está fortemente ligado ao seu ecossistema, como o CUDA e o cuDNN, e até se integra com o Servidor de Inferência Triton da NVIDIA e o NVIDIA Dynamo.

Dito isto, não é perfeito para toda a gente. A configuração pode ser difícil se não se sentir confortável com as ferramentas da NVIDIA e é menos flexível se estiver num hardware que não seja da NVIDIA. Ainda assim, para potência bruta e otimização em GPUs NVIDIA, é difícil de bater.

vLLM: Inferência de alto rendimento com PagedAttention

O vLLM é muito bom em lidar rapidamente com grandes volumes de trabalhos de inferência. É um projeto de código aberto que brilha quando você precisa de alta taxa de transferência sem diminuir a velocidade. O molho secreto é o PagedAttention, um truque que gerencia a memória muito melhor do que a maioria. Em vez de carregar tudo de uma vez e consumir RAM, ele divide os caches de valores-chave em pedaços, pegando apenas o que é necessário. Menos desperdício, mais velocidade.

vLLM

Também é muito flexível. Funciona com modelos populares, como LLaMA ou Mistral, imediatamente, e suporta muitos hardwares, incluindo GPUs NVIDIA ou AMD. Também obtém lotes dinâmicos para agrupar pedidos de forma eficiente, mantendo o pipeline a funcionar sem problemas. A configuração é bastante simples se você estiver acostumado com Python e PyTorch.

A principal limitação do vLLM é sua relativa imaturidade no mercado, o que significa que ele pode ainda não oferecer o conjunto abrangente de recursos disponíveis em soluções mais estabelecidas. No entanto, para organizações que buscam uma solução eficiente que ofereça inferência de alto desempenho, o vLLM representa uma excelente opção.

Hugging Face TGI: Uma solução pronta para produção para geração de texto

O Hugging Face TGI (Text Generation Inference) é feito para pessoas que querem ter modelos a funcionar sem dor de cabeça. É uma ferramenta construída pela equipa da Hugging Face, por isso funciona bem com a sua enorme biblioteca de modelos pré-treinados - pense no BERT, GPT e muito mais. Foi concebida para utilização no mundo real, como alimentar chatbots ou aplicações em que a geração de texto tem de funcionar rapidamente e não falhar.

Cara de abraço TGI

O TGI faz o trabalho pesado com recursos como batching contínuo, que mantém o sistema ocupado, trocando novas solicitações à medida que as antigas são concluídas. Ele suporta aceleração de GPU e pode ser ampliado se você tiver o hardware necessário. Além disso, tem segurança integrada - como filtrar saídas ruins - o que é útil para produção. É possível implantá-lo com o Docker em algumas etapas, portanto, é relativamente fácil de configurar.

O senão? Está ligado ao ecossistema do Hugging Face, por isso, se ainda não estiver nesse mundo, pode parecer restritivo. Ainda assim, para uma opção plug-and-play pronta a usar, o TGI é uma óptima escolha.

LMDeploy: Implementação eficiente com velocidade de descodificação superior

O LMDeploy é um conjunto de ferramentas das equipas MMRazor e MMDeploy, criado para comprimir, implementar e executar grandes modelos de linguagem sem complicações. O que o faz se destacar? Tem uma excelente velocidade de descodificação - até 1,8x mais pedidos por segundo do que o vLLM numa GPU A100. Isso se deve a truques como batching persistente, cache KV bloqueado e kernels CUDA inteligentes que mantêm a GPU ocupada.

LMDeploy

Tem dois motores: O TurboMind para um desempenho máximo e um PyTorch para facilitar os ajustes. O TurboMind é a estrela aqui - ele faz inferência de 4 bits 2,4x mais rápido que o FP16, e lida com modelos grandes como o Llama-2 70B com facilidade. Também é possível quantizar pesos e caches KV para economizar memória sem prejudicar a precisão. A implementação também é muito fácil - um comando configura um servidor em várias máquinas, se necessário. Além disso, memoriza o histórico de conversação em conversas de várias rondas, para não perder tempo a refazer trabalho antigo.

A desvantagem? O TurboMind é exigente - ainda não funciona bem com modelos de atenção de janela deslizante como o Mistral. E se não estiver a utilizar GPUs NVIDIA, fica preso ao motor PyTorch, mais lento. Ainda assim, para velocidade e simplicidade no hardware certo, o LMDeploy é uma ótima escolha.

Comparação de desempenho: Latência, taxa de transferência e escalabilidade

Vamos analisar como esses mecanismos se comparam em termos de latência (a rapidez com que uma solicitação é concluída), taxa de transferência (quantas solicitações podem ser ingeridas) e escalabilidade (como eles lidam com cargas maiores ou mais hardware).

O TensorRT-LLM destaca-se na latência se tiver GPUs NVIDIA. Está altamente optimizado para o hardware NVIDIA, pelo que os pedidos individuais terminam rapidamente: menos de 50 ms para a maioria dos modelos numa A100. A taxa de transferência também é excelente, especialmente com o agrupamento dinâmico. Os benchmarks do BentoML mostram que este motor atinge 700 tokens por segundo com 100 utilizadores em simultâneo para o Llama 3 70B Q4 numa GPU A100 de 80 GB. O TensorRT-LLM tem um bom desempenho em cenários com entradas longas e taxas de pedido elevadas, oferecendo uma boa taxa de transferência. A escalabilidade em várias GPUs é suportada de imediato com um excelente desempenho.

O vLLM também tem um bom rendimento, particularmente em cargas de trabalho de descodificação pesada, com elevado rendimento e baixa latência após actualizações recentes. Os benchmarks do BentoML mostram que este motor atinge 600-650 tokens por segundo com 100 utilizadores simultâneos para Llama 3 70B Q4 numa GPU A100 80GB. A latência é boa, mas não tão boa como a do TensorRT-LLM: cerca de 60-80ms para execuções a solo. Escala bem entre GPUs, mesmo misturando marcas, mas é menos polido para configurações enormes.

O Hugging Face TGI tem um desempenho semelhante ao vLLM, proporcionando um equilíbrio entre desempenho e facilidade de utilização. A latência é razoável: 50-70ms numa boa GPU. Os benchmarks do BentoML mostram que este motor atinge 600-650 tokens por segundo com 100 utilizadores simultâneos para Llama 3 70B Q4 numa GPU A100 80GB. É construído para escalar para produção, por isso lida com mais utilizadores ou máquinas sem problemas, especialmente com o Docker.

O LMDeploy ganha na velocidade de descodificação. É excelente na taxa de geração de tokens, especialmente para modelos mais pequenos, e tem um tempo baixo para o primeiro token (TTFT) para modelos grandes quantizados. A latência é baixa: 40-60ms. E a taxa de transferência é excelente. Benchmarks do BentoML mostram que este motor atinge 700 tokens por segundo com 100 utilizadores simultâneos para Llama 3 70B Q4 numa GPU A100 80GB. O escalonamento é fácil com a sua configuração de servidor, mas ele se apoia fortemente em GPUs NVIDIA para obter os melhores resultados; o modo PyTorch fica para trás.

Conclusão: O TensorRT-LLM e o LMDeploy lideram em termos de velocidade bruta. A sua escolha depende do seu hardware e do número de pedidos que está a tratar.

Capacidades de quantização

A quantização reduz a precisão do modelo para diminuir o uso de memória e acelerar a inferência, o que é importante para ambientes com recursos limitados. Veja a seguir o desempenho de cada mecanismo:

O TensorRT-LLM suporta FP8, FP4, INT4 com Quantização de Peso com Consciência de Ativação (AWQ) e INT8 com SmoothQuant, oferecendo opções robustas para otimizar o desempenho da GPU NVIDIA.

O vLLM oferece flexibilidade com GPTQ, AWQ, INT4, INT8 e FP8, adaptando-se a várias necessidades de hardware e precisão.

O Hugging Face TGI integra bitsandbytes para quantização de 8 bits e 4 bits e GPT-Q para quantização apenas de peso, adequado para implementações de produção.

O LMDeploy oferece AWQ de 4 bits, quantização de 8 bits e quantização online da cache INT8/INT4 KV, aumentando a eficiência de modelos grandes em hardware limitado.

Compatibilidade de hardware

O suporte de hardware determina onde pode implementar estes motores, afectando a escalabilidade e o desempenho:

O TensorRT-LLM é exclusivo do NVIDIA CUDA, aproveitando os aceleradores de GPU para obter alto desempenho.

O vLLM suporta NVIDIA CUDA, AMD ROCm, AWS Neuron e CPU, oferecendo ampla compatibilidade para diversas configurações.

O Hugging Face TGI funciona com NVIDIA CUDA, AMD ROCm, Intel Gaudi e AWS Inferentia, proporcionando flexibilidade para vários ambientes de hardware.

O LMDeploy é otimizado para NVIDIA CUDA, garantindo o melhor desempenho em GPUs NVIDIA, mas com suporte limitado para outras plataformas.

Facilidade de utilização

O processo de configuração e integração pode afetar os prazos de desenvolvimento. Veja como cada motor se comporta:

O TensorRT-LLM requer a conversão de pontos de controlo, a construção do motor do TensorRT e a configuração de parâmetros, o que o torna um desafio e consome muito tempo aos engenheiros.

O vLLM é de fácil utilização, com documentação abrangente, instalação fácil e integração perfeita com a biblioteca Python.

A Hugging Face TGI beneficia do ecossistema da Hugging Face, oferecendo imagens Docker pré-construídas e documentação completa para uma implementação rápida.

O LMDeploy apresenta uma configuração simples com um único comando para iniciar o servidor e APIs Python para personalização, equilibrando facilidade com flexibilidade.

Conclusão

A escolha do motor certo depende do seu caso de utilização, hardware e competências.

O TensorRT-LLM é o seu motor de inferência de eleição se estiver a executar grandes modelos em GPUs NVIDIA e precisar de toda a velocidade (pense em aplicações de baixa latência, como chatbots em tempo real ou assistentes de IA, em que as respostas têm de ser geradas em milissegundos). É perfeito para empresas que já estão profundamente envolvidas no mundo da NVIDIA, mas pode ser um exagero se estiver à procura de simplicidade.

O vLLM é um ótimo compromisso entre velocidade e simplicidade. Funciona muito bem para empresas em fase de arranque ou investigadores que pretendam algo flexível e rápido de configurar.

O TGI da Hugging Face é equivalente ao vLLM em termos de velocidade e simplicidade. É fácil de implementar, escala suavemente e liga-se ao hub de modelos da Hugging Face, pelo que é ideal para equipas que pretendem uma solução sem complicações.

O LMDeploy brilha em termos de desempenho, tal como o TensorRT-LLM. É adequado para utilizadores com GPUs NVIDIA que pretendam uma configuração simples e um desempenho de topo, mas é menos útil se os seus modelos não funcionarem bem com o TurboMind.

Se não puder ou não quiser implementar o seu próprio modelo GenAI, pode utilizar o NLP Cloud e tirar partido de modelos rápidos de IA generativa em escala na produção. Experimente agora a inferência rápida no NLP Cloud!

Se tiver dúvidas sobre os motores de inferência em geral, não hesite em perguntar-nos, é sempre um prazer aconselhá-lo!

Julien
CTO na NLP Cloud