Como Selecionar a Melhor GPU para Inferência de LLM: Insights de Benchmarking

Como Selecionar a Melhor GPU para Inferência de LLM: Insights de Benchmarking

Destaques Principais

  • Altos Custos de Inferência: A inferência em larga escala continua cara, limitando a escalabilidade apesar da redução geral dos custos.
  • Desafios na Seleção de GPU: A variedade de GPUs disponíveis complica o processo de seleção, muitas vezes levando a escolhas subótimas baseadas em métricas superficiais.
  • Estrutura de Avaliação Objetiva: Um método de avaliação padronizado ajuda a identificar soluções de GPU econômicas e adaptadas a necessidades específicas do negócio.
  • Métricas de Desempenho: Foco em latência (Tempo para o Primeiro Token) e throughput (Tokens por Segundo) para otimizar a experiência do usuário.
  • Análise de Custo-Benefício: Avaliar o custo por milhão de tokens junto com métricas de desempenho permite categorizar claramente as soluções em quadrantes efetivos.
  • Testes Reais: Testes de modelos populares (série Llama 3.1) em GPUs principais (H100, A100, RTX 4090) geram insights acionáveis.
  • Melhores Práticas: Recomendações para selecionar hardware de inferência e otimizar mecanismos aumentam a eficiência e reduzem custos.
  • Explore Novita AI: Para mais informações sobre serviços de inferência de modelos grandes, visite Novita AI.

Introdução

O custo da inferência em larga escala, embora esteja diminuindo continuamente, ainda é consideravelmente alto, com a velocidade de inferência e os custos de uso limitando severamente a escalabilidade das operações. Como provedor de serviços de inferência de modelos grandes, investimos persistentemente em melhorar a velocidade e reduzir os custos de inferência.

Aprofundamo-nos na exploração da seleção de hardware de inferência e na otimização de mecanismos de inferência para oferecer as soluções mais econômicas aos nossos clientes. Este artigo foca em introduzir os métodos teóricos e as melhores práticas para escolher hardware de inferência e apresenta nossas conclusões preliminares.

Existe uma grande variedade de GPUs disponíveis para inferência de modelos grandes, o que torna desafiador encontrar uma que atenda aos requisitos específicos do negócio. Ao implantar operações, a multiplicidade de GPUs muitas vezes nos deixa perplexos, levando a uma comparação estática baseada em métricas como poder computacional da GPU, capacidade de memória, largura de banda e preço. Essa abordagem de selecionar uma GPU com base em uma percepção subjetiva de que ela parece atraente pode ser enganosa e impactar negativamente os resultados do negócio.

Nós também enfrentamos esse problema em nossos estágios iniciais. No entanto, com o crescimento e a expansão do negócio, desenvolvemos gradualmente um padrão de avaliação de GPU objetivo e imparcial, junto com métodos de avaliação correspondentes. Ao empregar essa abordagem padronizada por meio de várias avaliações, podemos identificar as soluções mais econômicas adaptadas a diferentes necessidades de negócio a partir de uma infinidade de GPUs. Combinado com mecanismos de inferência otimizados, fornecemos aos clientes serviços de inferência de modelos grandes que são rápidos e econômicos.

Abordagem de Avaliação

Simplificando, a “melhor GPU com custo-benefício” precisa atender a dois critérios: menor preço e maior desempenho. Antes de iniciar as avaliações, definimos com precisão esses padrões.

Definindo Menor Preço

O menor preço não é o custo do hardware da GPU ou o aluguel de servidores em nuvem em data centers, mas o custo do serviço de inferência. É o preço que vemos no site oficial para usar a API do Modelo, definido como o custo por milhão de tokens consumidos (Dólares por 1M de tokens). Um valor menor significa um preço mais baixo.

Entendendo o Maior Desempenho

O maior desempenho refere-se à velocidade da inferência do modelo grande, onde quanto maior, melhor. É essencial distinguir isso do desempenho do modelo, que normalmente inclui duas sub-métricas: latência e throughput.

Métricas de Latência e Throughput

  • Latência: Mede o Tempo para o Primeiro Token (TTFT), o tempo que um usuário espera desde o início da solicitação até receber o primeiro token.
  • Throughput: Indica o número médio de tokens recebidos por segundo (TPS) a partir do primeiro token.

Metodologia de Avaliação

Para alinhar as avaliações com as necessidades do negócio, tratamos o sistema de inferência como uma caixa preta durante as avaliações, calculando a latência e o throughput com base nas entradas e saídas do sistema. O diagrama abaixo ilustra como latência e throughput são calculados.

Considerações Chave

  • Menor latência e maior throughput indicam melhor desempenho de inferência.
  • O throughput é significativamente mais crucial do que a latência em cenários reais.

key considerations

Gerenciamento de Solicitações

Em geral, menor latência e maior throughput indicam melhor desempenho de inferência. No entanto, em cenários reais, o throughput é significativamente mais crucial do que a latência.

Desde que a latência permaneça abaixo de 2 segundos, os usuários não são muito sensíveis a ela. Mesmo esperar alguns milissegundos para ver o primeiro token não afetará perceptivelmente a experiência.

Por outro lado, mudanças no throughput impactam muito a experiência do usuário, fazendo com que os usuários prefiram sistemas com maior throughput. Portanto, ao avaliar métricas de desempenho de soluções de inferência, focamos em comparar diferenças de throughput, mantendo a latência dentro de uma faixa aceitável.

Em operações reais, um sistema de inferência lida com múltiplas solicitações de usuários simultaneamente para aumentar a carga geral do sistema. No entanto, o nível de concorrência não deve ser excessivo, pois uma concorrência muito alta pode degradar o desempenho da inferência. Além disso, o comprimento das solicitações dos usuários e o número de tokens retornados também influenciam as métricas de desempenho.

Padrões de Avaliação Simplificados

Para extrair padrões de cenários de negócios complexos, nosso método de avaliação simplifica adequadamente, ao mesmo tempo que se alinha de perto com as configurações de negócios.

Relações e Comprimentos Fixos

Definimos relações e comprimentos fixos para as entradas e saídas das solicitações, como (1000,100), (3000,300), (5000,500), e controlamos precisamente os comprimentos de entrada e saída ao enviar solicitações.

Rodadas de Teste e Cálculo de Métricas

Após preparar dezenas de milhares de solicitações, enviamos as solicitações ao servidor de inferência em lotes de tamanho fixo para rodadas de teste, simulando muitos usuários enviando solicitações continuamente e mantendo um nível estável de concorrência no sistema de inferência.

Métricas de Desempenho

Com base nos dados de cada rodada de teste, calculamos métricas de latência e throughput para todas as solicitações e compilamos estatísticas em diferentes indicadores percentuais, como P50, P90, P99, para refletir um desempenho mais realista.

Além disso, calculamos o throughput total de todos os tokens de entrada e saída em uma rodada de teste, combinamos com os custos de hardware e obtemos o preço por milhão de tokens para o sistema de inferência.

Análise de Custo-Benefício

Seguindo essa abordagem de avaliação, geramos vários conjuntos de dados de teste com base em diferentes comprimentos de entrada-saída e tamanhos de lote, enviamos ao serviço de inferência e calculamos duas métricas chave: o preço por milhão de tokens e a taxa de tokens de saída por segundo (TPS) por solicitação.

Em seguida, plotamos essas métricas em um gráfico com o preço no eixo x e o TPS no eixo y. Ao avaliar mais especificações de hardware usando o mesmo método e plotar os resultados no gráfico, criamos uma visão geral do custo-benefício.

Para facilitar a comparação entre diferentes soluções, dividimos o gráfico em quatro quadrantes:

Superior Esquerdo: Quadrante Líder, com o maior desempenho e menor preço.

Inferior Esquerdo: Quadrante Seguidor, com preço atraente, mas precisando de melhorias de desempenho.

Superior Direito: Quadrante Desafiante, liderando em desempenho, mas com preço mais alto, possivelmente de soluções de hardware de ponta e caras, que podem desafiar os líderes se os preços diminuírem.

Inferior Direito: Soluções obsoletas sem vantagens em preço ou desempenho.

Cost-Effectiveness Analysis

Método de Implementação

Nosso objetivo de avaliação é identificar o hardware de GPU mais econômico. Para garantir comparações significativas, fixaremos o modelo, o mecanismo de inferência e os dados de solicitação, alterando apenas o hardware da GPU sob as mesmas condições de teste. Durante a avaliação, selecionaremos modelos de código aberto, conjuntos de dados e mecanismos de inferência populares, usando principalmente hardware de GPU da série NVIDIA.

Seleção de Modelo

Usaremos os modelos da série Llama 3.1, especificamente o modelo Llama 3.1–70B (link do Hugging Face). Esse tamanho de modelo normalmente requer inferência com múltiplas GPUs, sendo adequado para avaliar o desempenho da comunicação entre GPUs.

Mecanismo de Inferência

O mecanismo de inferência será o vLLM v0.6.3. Para o conjunto de dados, focaremos em pares de perguntas e respostas, escolhendo o ShareGPT-v3-unfiltered como a opção mais apropriada. Ao construir os dados da solicitação, percorreremos o conjunto de dados ShareGPT, filtrando pares de QA com base no comprimento da entrada para reter apenas aqueles que são iguais ou superiores a um valor especificado, mantendo apenas as perguntas (com cortes apropriados se muito longas) como o prompt da solicitação.

Seleção de Especificações de GPU

Ao selecionar especificações de GPU, avaliaremos GPUs populares, especificamente H100, A100 e RTX 4090, nas categorias baixa, média e alta. Uma abordagem comum é alugar servidores GPU com configuração de 8 placas em plataformas em nuvem, como em nosso site, Novita AI, que oferece opções convenientes de pagamento conforme o uso. Além disso, podemos incluir mais especificações de GPU para ampliar o escopo da avaliação, visando preencher os quatro quadrantes com uma variedade de GPUs e estratégias de inferência.

Iniciando a Avaliação

Uma vez que os preparativos estejam concluídos, a avaliação pode ser iniciada seguindo estas etapas:

Etapa 1: Iniciar o Mecanismo de Inferência

Para iniciar o mecanismo de inferência vLLM no servidor GPU alvo, você pode criar rapidamente uma instância de contêiner Docker. Para um servidor GPU com 8 placas 4090, use o seguinte comando:

docker run -d --gpus all --net=host vllm/vllm-openai:v0.6.3 --port 8080 --model meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 8 --swap-space 16 --gpu-memory-utilization 0.9 --dtype auto --served-model-name llama31-70b --max-num-seqs 32 --max-model-len 32768 --enable-prefix-caching --enable-chunked-prefill --disable-log-requests

Etapa 2: Construir e Enviar Solicitações

No lado do cliente, construa solicitações com base nos comprimentos de entrada/saída e tamanhos de lote, e envie-as em massa para o servidor. Também podemos consultar os casos de teste integrados fornecidos pelo vLLM para escrever scripts de teste que atendam aos nossos requisitos de avaliação.

Aqui estão pontos-chave a serem considerados ao construir solicitações:

  • Filtragem de Dados do ShareGPT

Ao percorrer todas as entradas de conversa no conjunto de dados ShareGPT, observe que o primeiro elemento de cada conversa é a pergunta, e o segundo elemento é a resposta correspondente. Você só precisa da pergunta como prompt para suas solicitações.

Para garantir que o número de tokens na pergunta atenda aos requisitos de comprimento de entrada, pode ser necessário cortar a pergunta adequadamente. Além disso, na lista de parâmetros de cada solicitação, defina max_tokens como o comprimento de saída especificado e ignore_eos como true para forçar o mecanismo de inferência a gerar o número especificado de tokens.

  • Tamanho de Lote Consistente

Em cada rodada de teste, mantenha sempre o mesmo tamanho de lote. Para conseguir isso, o cliente deve enviar um número fixo de solicitações em paralelo e reenviar imediatamente uma solicitação assim que uma for concluída. Isso garante que as condições de teste permaneçam consistentes e permite medições precisas de desempenho.

Os parâmetros de cada solicitação podem ser configurados da seguinte forma:

{
  "model": "llama31-70b",
  "prompt": prompt_content,
  "temperature": 0.8,
  "top_p": 1.0,
  "best_of": 1,
  "max_tokens": output_len,
  "ignore_eos": true
}

Etapa 3: Coleta de Dados de Métricas

Após a conclusão de todas as solicitações, as seguintes métricas-chave devem ser coletadas:

  • Para cada solicitação: Latência do Primeiro Token (TTFT) = First_Token_Time — Send_Req_Time
  • Para cada solicitação: Tokens Por Segundo (TPS) = Total_Output_Tokens / (Finish_Req_Time — First_Token_Time)
  • Para uma rodada de teste: Throughput Total do Sistema = Soma(Input_Tokens_Per_Req + Output_Tokens_Per_Req) / Total_Seconds

Onde TTFT e TPS se referem a cada solicitação, e para facilitar os cálculos, você pode usar o percentil P90 de todas as solicitações em uma rodada de teste.

O throughput total do sistema indica o número total de tokens (incluindo tokens de entrada e saída) que o serviço de inferência pode processar por segundo. Dividir o preço do servidor GPU correspondente pelo throughput total permite obter o custo por milhão de tokens.

Em cenários práticos, a utilização do servidor e as flutuações de solicitações também podem afetar o throughput, e um fator pode ser aplicado para levar em conta essas influências, embora isso geralmente não afete as conclusões da avaliação.

Principais Descobertas sobre Desempenho e Custo-Benefício de GPUs

Realizamos uma avaliação aprofundada das principais GPUs (H100, A100, RTX 4090) usando os métodos de teste mencionados. Para cada GPU, calculamos métricas de desempenho (TTFT, TPS) em vários comprimentos de entrada/saída e tamanhos de lote, obtendo os percentis P50, P90 e P99. Também consultamos os preços de aluguel das plataformas de nuvem GPU populares (disponíveis em Novita AI) para calcular o custo por milhão de tokens. Esses dados servirão como base para avaliações adicionais de custo-desempenho e nos guiarão para nossas conclusões finais.

Comparação de Desempenho de Inferência Única

O foco principal é latência (Latência do Primeiro Token) e throughput (Tokens Por Segundo). Uma latência menor é preferível, enquanto um TPS maior é desejado. Avaliamos as versões BF16 e FP8 dos modelos Llama-3.1–8B e Llama-3.1–70B nas três GPUs, definindo o comprimento de entrada/saída de cada solicitação como 5000/500 e testando diferentes tamanhos de lote. Abaixo estão os resultados da comparação de desempenho para o modelo Llama-3.1–8B, usando dados P50 para análise.

  1. Latência do Primeiro Token:

A classificação de velocidade da mais rápida para a mais lenta é H100, A100 e RTX 4090. Quando o tamanho do lote é definido como 1, a velocidade da A100 é 1,25 vezes a da RTX 4090, e a H100 é 1,66 vezes mais rápida.

À medida que o tamanho do lote aumenta, a diferença entre a RTX 4090 e as outras duas GPUs aumenta significativamente. Quando o tamanho do lote chega a 10, a latência da RTX 4090 excede 3,5 segundos (percentil P90), o que é inaceitável para muitas aplicações de negócios. Em contraste, A100 e H100 mantêm latências abaixo de 0,5 segundos, mostrando desempenho estável.

2. Tokens Por Segundo (TPS) :

Essa métrica reflete a velocidade de geração do mecanismo, com a mesma classificação de velocidade: H100, A100 e RTX 4090. Com um tamanho de lote de 1, o TPS da A100 é aproximadamente 1,48 vezes o da RTX 4090, e o TPS da H100 é 2,44 vezes o da RTX 4090, indicando a maior eficiência de geração da H100.

À medida que o tamanho do lote aumenta, o TPS para solicitações individuais diminui gradualmente devido ao aumento da carga do sistema e à redução de recursos por solicitação. Quando o tamanho do lote é 10, o TPS cai para cerca de 70% do TPS com tamanho de lote 1.

3. Quantização do Modelo FP8:

A versão FP8, com arquivos de peso reduzidos pela metade em comparação com o BF16, reduz significativamente a sobrecarga de recursos do sistema, resultando em latência e throughput melhorados. O segundo conjunto de gráficos de barras ilustra claramente essa conclusão, particularmente na métrica TPS, onde o desempenho da versão FP8 é aproximadamente 1,4 vezes o da versão BF16 para a mesma GPU.

4. Sensibilidade da RTX 4090 ao Tamanho do Lote:

Devido a limitações de memória e comunicação, a RTX 4090 é altamente sensível ao tamanho do lote. Tamanhos de lote excessivamente grandes podem levar a filas internas, resultando em maior latência e menor throughput. Atenção especial deve ser dada às configurações de tamanho de lote ao implantar cargas de trabalho na RTX 4090.

Sensitivity of RTX 4090 to Batch Size

Sensitivity of RTX 4090 to Batch Size(2)

Empregamos o mesmo método de avaliação para o modelo Llama-3.1–70B, e a comparação de desempenho é ilustrada na figura a seguir.

Devido ao grande tamanho do modelo 70B, utilizamos 8 GPUs RTX 4090 para a versão BF16 e 4 GPUs RTX 4090 para a versão FP8. Em contraste, as GPUs A100 e H100, com seus 80 GB de memória, exigiram apenas 2 unidades para funcionar de forma eficaz.

A partir da figura, podemos tirar conclusões semelhantes às do modelo Llama-3.1–8B: a H100 continua sendo a GPU de melhor desempenho, e a versão de quantização FP8 é aproximadamente 1,4 vezes mais rápida que a versão BF16.

Sensitivity of RTX 4090 to Batch Size(3)

Sensitivity of RTX 4090 to Batch Size(4)

Avaliação Abrangente de Custo-Desempenho

Na implantação prática, é essencial considerar não apenas as métricas de desempenho, mas também o custo geral das soluções para identificar a melhor relação custo-benefício.

Por exemplo, embora a RTX 4090 possa ser mais lenta em termos de desempenho, seu preço muito baixo pode tornar sua relação custo-benefício geral competitiva. Para conseguir isso, precisamos de métodos de avaliação mais científicos e profissionais para determinar com precisão qual GPU e solução de inferência oferecem o melhor valor.

Em nossa “Abordagem de Avaliação”, propomos plotar os custos e métricas de desempenho de diferentes soluções de inferência em um sistema de coordenadas bidimensional, dividindo o espaço em quatro quadrantes: Líderes, Seguidores, Desafiantes e Eliminados. Seguindo essa abordagem, focamos em testar os modelos Llama-3.1–70B, Llama-3.1–8B e suas versões de quantização FP8.

Selecionamos quatro GPUs: RTX 4090, A100, H100 e H200, definindo o comprimento de entrada/saída como 5000/500 e tamanhos de lote variando de 1 a 10. Testamos várias combinações para obter dados de desempenho e preço, que foram finalmente plotados nas duas figuras abaixo.

Para o modelo Llama-3.1–70B, as relações custo-benefício de cada solução são ilustradas na figura. Quatro soluções se enquadram em nosso quadrante Líder definido:

  • Llama3.1–70B-FP8@2xH100
  • Llama3.1–70B-FP8@4xH200
  • Llama3.1–70B@4xH200
  • Llama3.1–70B@2xH100

Na figura, a inclinação da linha que conecta o ponto coordenado de cada solução à origem representa a relação entre desempenho e preço. Uma inclinação mais íngreme indica uma relação custo-benefício mais alta.

Portanto, a solução Llama3.1–70B-FP8@4xH200 se destaca como a opção mais econômica entre todas as soluções de inferência avaliadas.

tps vs price

Para o modelo Llama3.1–8B, devido ao seu tamanho menor, implantamos todos os modelos usando uma configuração de GPU única. As relações custo-benefício das várias soluções são ilustradas na figura abaixo. Ambas as configurações com H200 se enquadram em nosso quadrante Líder definido.

Isso se deve principalmente ao bom desempenho do H200 (especialmente sua capacidade e largura de banda de memória líderes) e ao preço competitivo. As duas configurações com RTX 4090 são as mais econômicas, mas devido ao seu desempenho inferior, caem no quadrante Seguidor.

tps vs price(2)

Conclusão

Os custos de GPU representam uma parcela significativa dos serviços de inferência de modelos grandes, e com a multitude de opções de hardware de GPU disponíveis no mercado, selecionar a mais adequada pode ser desafiador. Identificar a melhor GPU e solução de inferência com custo-benefício adaptada a necessidades específicas do negócio é crucial, pois pode determinar o sucesso ou fracasso do negócio.

Por meio de nossa experiência no fornecimento de serviços de inferência de modelos grandes, acumulamos um conhecimento substancial de implantação e desenvolvemos uma estrutura eficaz de avaliação de GPU que orienta continuamente o desenvolvimento do negócio, oferecendo aos clientes os melhores serviços de inferência com custo-benefício.

Este artigo destila as melhores práticas de aplicações práticas e realiza testes reais em modelos grandes e especificações de GPU populares, fornecendo comparações de desempenho para identificar as soluções de inferência mais econômicas.

Nossa abordagem de avaliação transcende métricas complexas de hardware, focando em aplicações práticas de negócios, tornando-a altamente generalizável e acionável — especialmente adequada para testes comparativos entre vários modelos de GPU ou mecanismos de inferência.

Confira a Novita AI para mais informações sobre serviços e soluções de inferência de modelos grandes de primeira linha!

Novita AI é uma plataforma de nuvem de IA que oferece aos desenvolvedores uma maneira fácil de implantar modelos de IA usando nossa API simples, ao mesmo tempo que fornece a nuvem de GPU acessível e confiável para construir e escalar.

Leitura Recomendada

1.Como a KV Sparsity Alcança 1,5x de Aceleração para vLLM

2.Alocação dinâmica de recursos de GPU para cargas de trabalho Kubernetes

3.Adicionando Dinamicamente Mapeamentos de Porta a Contêineres Docker em Execução