Conduza seu próprio benchmarking de endpoints LLM
Este artigo fornece um exemplo de bloco de anotações recomendado pelo Databricks para benchmarking de um ponto de extremidade LLM. Ele também inclui uma breve introdução sobre como o Databricks executa a inferência LLM e calcula a latência e a taxa de transferência como métricas de desempenho de endpoint.
A inferência LLM no Databricks mede tokens por segundo para o modo de taxa de transferência provisionada para APIs do Modelo de Base. Consulte O que significam os intervalos de tokens por segundo na taxa de transferência provisionada?.
Exemplo de bloco de notas de avaliação comparativa
Você pode importar o seguinte bloco de anotações para seu ambiente Databricks e especificar o nome do seu ponto de extremidade LLM para executar um teste de carga.
Benchmarking de um endpoint LLM
Introdução à inferência LLM
Os LLMs realizam inferência em um processo de duas etapas:
- Pré-preenchimento, onde os tokens no prompt de entrada são processados em paralelo.
- Decodificação, onde o texto é gerado um token de cada vez de forma autorregressiva. Cada token gerado é anexado à entrada e alimentado de volta no modelo para gerar o próximo token. A geração para quando o LLM produz um token de parada especial ou quando uma condição definida pelo usuário é atendida.
A maioria dos aplicativos de produção tem um orçamento de latência, e o Databricks recomenda que você maximize a taxa de transferência, dado esse orçamento de latência.
- O número de tokens de entrada tem um impacto substancial na memória necessária para processar solicitações.
- O número de tokens de saída domina a latência geral de resposta.
O Databricks divide a inferência LLM nas seguintes submétricas:
- Time to first token (TTFT): é a rapidez com que os usuários começam a ver a saída do modelo depois de inserir sua consulta. Tempos de espera baixos para uma resposta são essenciais em interações em tempo real, mas menos importantes em cargas de trabalho offline. Essa métrica é impulsionada pelo tempo necessário para processar o prompt e, em seguida, gerar o primeiro token de saída.
- Tempo por token de saída (TPOT): Tempo para gerar um token de saída para cada usuário que está consultando o sistema. Esta métrica corresponde à forma como cada utilizador percebe a "velocidade" do modelo. Por exemplo, um TPOT de 100 milissegundos por token seria de 10 tokens por segundo, ou ~450 palavras por minuto, o que é mais rápido do que uma pessoa típica pode ler.
Com base nessas métricas, a latência total e a taxa de transferência podem ser definidas da seguinte forma:
- Latência = TTFT + (TPOT) * (o número de tokens a serem gerados)
- Taxa de transferência = número de tokens de saída por segundo em todas as solicitações de simultaneidade
No Databricks, os pontos de extremidade de serviço LLM são capazes de ser dimensionados para corresponder à carga enviada pelos clientes com várias solicitações simultâneas. Há um compromisso entre latência e taxa de transferência. Isso ocorre porque, no LLM servindo endpoints, solicitações simultâneas podem ser e são processadas ao mesmo tempo. Em baixas cargas de solicitação simultâneas, a latência é a menor possível. No entanto, se você aumentar a carga de solicitação, a latência pode aumentar, mas a taxa de transferência provavelmente também aumenta. Isso ocorre porque duas solicitações no valor de tokens por segundo podem ser processadas em menos do dobro do tempo.
Portanto, controlar o número de solicitações paralelas em seu sistema é essencial para equilibrar a latência com a taxa de transferência. Se você tiver um caso de uso de baixa latência, deseja enviar menos solicitações simultâneas para o ponto de extremidade para manter a latência baixa. Se você tiver um caso de uso de taxa de transferência alta, deseja saturar o ponto de extremidade com muitas solicitações de simultaneidade, já que uma taxa de transferência mais alta vale a pena, mesmo às custas da latência.
Arnês de benchmarking Databricks
O bloco de anotações de exemplo de benchmarking compartilhado anteriormente é o conjunto de benchmarking da Databricks. O bloco de anotações exibe as métricas de latência e taxa de transferência e plota a taxa de transferência versus curva de latência em diferentes números de solicitações paralelas. O dimensionamento automático de pontos finais do Databricks é baseado em uma estratégia "equilibrada" entre latência e taxa de transferência. No bloco de anotações, você observa que, à medida que mais usuários simultâneos consultam o ponto de extremidade, a latência aumenta e a taxa de transferência.
Mais detalhes sobre a filosofia da Databricks sobre benchmarking de desempenho LLM são descritos no blog LLM Inference Performance Engineering: Best Practices.