Este guia de práticas recomendadas mostra as métricas disponíveis e como selecionar as métricas adequadas para configurar o Escalonador automático horizontal de pods (HPA) para suas cargas de trabalho de inferência no GKE. O HPA é uma forma eficiente de garantir que os servidores de modelo escalonem corretamente com a carga. O ajuste de detalhes das configurações do HPA é a principal forma de alinhar seu custo de hardware provisionado com demandas de tráfego para alcançar suas metas de performance de servidor de inferência.
Para exemplos de como implementar essas práticas recomendadas, consulte Configurar escalonamento automático para cargas de trabalho de LLM em GPUs com GKE.
Objetivos
Este guia é destinado a clientes de IA generativa, usuários novos ou existentes do GKE, engenheiros de ML e engenheiros de LLMOps (DevOps) que estão interessadas em otimizar as cargas de trabalho de LLM usando GPUs com o Kubernetes.
Após ler este guia, você será capaz de:
- Entender as métricas de escalonamento automático para inferência de LLM.
- Entender as vantagens e desvantagens de alto nível ao considerar quais métricas serão usadas no escalonamento automático.
Visão geral das métricas de escalonamento automático para inferência de LLM
As seguintes métricas estão disponíveis no GKE:
Métricas do servidor
Servidores de inferência LLM conhecidos, como TGI, vLLM e NVIDIA Triton, emitem métricas de desempenho específicas da carga de trabalho. O GKE simplifica a raspagem de dados e o escalonamento automático de cargas de trabalho com base nessas métricas no nível do servidor. Você pode usar essas métricas para ter visibilidade de indicadores de desempenho, como tamanho do lote, o tamanho da fila e as latências de decodificação.
Com base nessas métricas, é possível direcionar o escalonamento automático para os indicadores de desempenho mais relevantes. As principais métricas no nível do servidor para escalonamento automático incluem:
- Tamanho da fila: o número de solicitações aguardando processamento na fila do servidor. Use o tamanho da fila para maximizar a capacidade de processamento e minimizar os custos dentro de um determinado limite de latência de destino. Para saber mais, consulte a seção de práticas recomendadas relacionada.
- Tamanho do lote: o número de solicitações em processo de inferência. Use o tamanho do lote para atingir limites de latência de destino menores do que o tamanho da fila. Para saber mais, consulte a seção de práticas recomendadas relacionada.
Essas métricas geralmente são resilientes à performance e às variações de tráfego, o que faz delas um ponto de partida confiável para escalonamento automático em várias GPUs e configurações de hardware.
Métricas da GPU
As GPUs emitem várias métricas de uso e desempenho, oferecendo escalonamento automático independente de cargas de trabalho para qualquer tarefa baseada em GPU, incluindo a inferência de cargas de trabalho sem métricas personalizadas. Para saber como configurar a coleção DCGM, consulte Configurar a coleção DCGM.
Estas são algumas métricas comuns da GPU para o GKE:
Métrica da GPU | Uso | Limitações |
---|---|---|
Uso de GPU (DCGM_FI_DEV_GPU_UTIL ) |
Mede o ciclo de trabalho, que é a quantidade de tempo que a GPU está ativa. | Não mede quanto trabalho está sendo feito enquanto a GPU está ativa. Isso dificulta o mapeamento de métricas de desempenho baseadas em inferência, como latência e capacidade de processamento, até um limite de utilização da GPU. |
Uso da memória da GPU (DCGM_FI_DEV_FB_USED ) |
Mede quanta memória de GPU está sendo usada em um determinado momento. Isso é útil para cargas de trabalho que implementam a alocação dinâmica de memória da GPU. | Para cargas de trabalho que pré-alocam a memória da GPU ou nunca desalocam a memória (como cargas de trabalho em execução no TGI e vLLM), essa métrica só funciona para escalonar verticalmente e não reduz a escala vertical quando o tráfego diminui. |
Métricas de CPU
No GKE, o HPA funciona imediatamente com CPU e escalonamento automático baseado na memória. Para cargas de trabalho executadas em CPUs, CPU e métricas de uso de memória são normalmente a métrica principal de escalonamento automático.
Para cargas de trabalho de inferência em execução em GPUs, não recomendamos o uso de CPU e memória como os únicos indicadores da quantidade de recursos que um job consome porque a inferência de cargas de trabalho depende principalmente dos recursos da GPU. Portanto, ao usar somente as métricas de CPU para escalonamento automático pode levar a custos e desempenho abaixo do ideal.
Considerações para escolher métricas de escalonamento automático
Use as considerações e práticas recomendadas a seguir para selecionar a melhor métrica para escalonamento automático no GKE a fim de atender às metas de performance de carga de trabalho de inferência.
Prática recomendada: use o tamanho da fila para maximizar a capacidade de processamento e minimizar o custo dentro de um determinado limite de latência de destino
Recomendamos o escalonamento automático de tamanho de fila ao otimizar a capacidade de processamento e o custo e quando as metas de latência forem alcançáveis com a capacidade de processamento máxima do seu tamanho máximo do lote do servidor de modelo.
O tamanho da fila está diretamente relacionado à latência da solicitação. As solicitações recebidas enfileiram no servidor de modelo antes de serem processados, e o tempo na fila aumenta a latência geral. O tamanho da fila é um indicador sensível de picos de carga, na medida em que a carga rapidamente preenche a fila.
O escalonamento automático com base no tamanho da fila minimiza o tempo da fila ao escalonar verticalmente sob carga, e reduzindo a escala vertical quando a fila está vazia. Essa abordagem é relativamente fácil de implementar e não depende da carga de trabalho, porque o tamanho da fila é independente do tamanho da solicitação, modelo ou hardware.
Considere se concentrar no tamanho da fila se quiser maximizar a capacidade de processamento enquanto respeita a configuração do servidor de modelo. Faixas de tamanho de fila pendentes, não processando solicitações. O vLLM e o TGI usam lotes contínuos, o que maximiza solicitações simultâneas e mantém a fila baixa quando há espaço em lote disponível. A fila cresce visivelmente quando o espaço do lote é limitado, portanto, use o ponto de crescimento um sinal para iniciar o escalonamento vertical. Ao combinar o escalonamento automático de tamanho de fila com a capacidade de processamento em lote otimizada, é possível maximizar a capacidade de processamento das solicitações.
Determinar o limite ideal do tamanho da fila para o HPA
Tenha atenção à tolerância de HPA, cujo padrão é um intervalo sem ação de 0,1 ao redor do valor de destino para reduzir a oscilação.
Para escolher o limite correto de tamanho da fila, comece com um valor entre 3 e 5 e
aumente gradualmente até que as solicitações atinjam a latência preferencial. Use
a ferramenta locust-load-inference
para testes. Para limites abaixo de 10,
ajuste as configurações de escalonamento vertical do HPA para lidar com picos de tráfego.
Também é possível criar um painel personalizado do Cloud Monitoring para visualizar o comportamento da métrica.
Limitações
O tamanho da fila não controla diretamente solicitações simultâneas, portanto, o limite não pode garantir uma latência menor do que o tamanho máximo do lote permite. Como solução alternativa, você pode reduzir manualmente o tamanho máximo do lote ou escalonar automaticamente com base no tamanho do lote.
Prática recomendada: use o tamanho do lote para alcançar limites de latência de destino menores do que o tamanho da fila
Recomendamos escolher o escalonamento automático baseado em tamanho de lote se você tiver cargas de trabalho sensíveis à latência em que o escalonamento baseado em fila não é rápido o suficiente para atender aos seus requisitos.
O tamanho do lote está diretamente relacionado à capacidade de processamento e latência de uma solicitação recebida. O tamanho do lote é um bom indicador de picos de carga, porque um aumento na carga faz com que mais solicitações sejam adicionadas ao lote existente, causando um tamanho de lote maior. Em geral, quanto maior o tamanho do lote, maior é a latência. O escalonamento automático no tamanho do lote garante que sua carga de trabalho escalone verticalmente para maximizar o número de solicitações processadas em paralelo de uma só vez, e reduz a escala vertical quando menos solicitações são processadas em paralelo.
Se o tamanho da fila já atender às metas de latência, priorize-a para escalonamento automático. Isso maximiza a capacidade de processamento e a eficiência de custos. No entanto, o tamanho do lote é útil para cargas de trabalho sensíveis à latência. Tamanhos de lotes maiores aumentam a capacidade de processamento, mas também aumentam a latência devido à fase de preenchimento inicial de algumas solicitações interrompendo a fase de decodificação de outras em servidores de modelo de lotes contínuos. É possível monitorar padrões de tamanho de lote e usar o escalonamento automático para minimizar solicitações simultâneas durante picos de carga.
Se seu servidor de modelo permitir, recomendamos personalizar o tamanho máximo do lote como um mecanismo de ajuste adicional. Também é possível combinar isso com o escalonamento automático baseado em fila.
Determinar o limite ideal do tamanho de lote para o HPA
Tenha atenção à tolerância de HPA, que é um intervalo padrão sem ação de 0,1 em torno do valor de destino para reduzir a oscilação.
Para escolher o limite certo de tamanho de lote, aumente de forma experimental a carga no
seu servidor e observe onde o tamanho do lote atinge o seu pico. Também recomendamos o uso da
ferramenta locust-load-inference
para testes. Depois de identificar o tamanho de lote máximo, defina o valor de destino inicial um pouco abaixo desse máximo e diminua-o
até alcançar a latência preferencial.
Também é possível criar um painel personalizado do Cloud Monitoring para visualizar o comportamento da métrica.
Limitações
O escalonamento automático no tamanho do lote é útil para controlar a latência, mas tem limitações. Vários tamanhos de solicitações e restrições de hardware fazem com que seja difícil encontrar o limite de tamanho do lote certo.
Prática recomendada: otimizar a configuração do HPA
Recomendamos definir estas opções de configuração do HPA:
- Janela de estabilização: use essa opção de configuração do HPA para evitar mudanças rápidas na contagem de réplicas devido à flutuação das métricas. O padrão é 5 minutos para redução da escala vertical (evitando redução prematura) e 0 para escalonamento vertical (garantindo capacidade de resposta). Ajuste o valor com base na volatilidade da carga de trabalho e capacidade de resposta preferencial.
- Políticas de escalonamento: use essa opção de configuração do HPA para ajustar o comportamento de escalonamento vertical e horizontal. É possível definir o limite de política de "Pods" para especificar o número absoluto de réplicas alteradas por unidade de tempo, e o limite de política de "Percentual" a ser especificado pela alteração percentual.
Para saber mais sobre essas opções, consulte Escalonamento automático horizontal de pods na documentação do Kubernetes de código aberto.