Este guia de práticas recomendadas mostra as métricas disponíveis e como selecionar métricas adequadas para configurar o Horizontal Pod Autoscaler (HPA) para as suas cargas de trabalho de inferência no GKE. O HPA é uma forma eficiente de garantir que os servidores do seu modelo são dimensionados adequadamente com a carga. Ajustar as definições de HPA é a principal forma de alinhar o custo do hardware aprovisionado com as exigências de tráfego para alcançar os objetivos de desempenho do servidor de inferência.
Para ver exemplos de como implementar estas práticas recomendadas, consulte o artigo Configure a escala automática para cargas de trabalho de LLM em GPUs com o GKE.
Objetivos
Este guia destina-se a clientes de IA generativa, utilizadores novos ou existentes do GKE, engenheiros de ML e engenheiros de LLMOps (DevOps) que tenham interesse em otimizar as respetivas cargas de trabalho de MDIs com GPUs e o Kubernetes.
Depois de ler este guia, deve conseguir:
- Compreenda as métricas de escalamento automático para a inferência de MDIs.
- Compreenda as compensações de alto nível quando considerar as métricas para dimensionamento automático.
Vista geral das métricas de escala automática para inferência de MDIs/CEs
As seguintes métricas estão disponíveis no GKE:
Métricas do servidor
Os servidores de inferência de GML populares, como o TGI, o vLLM e o NVIDIA Triton, emitem métricas de desempenho específicas da carga de trabalho. O GKE simplifica a recolha de dados e a escala automática de cargas de trabalho com base nestas métricas ao nível do servidor. Pode usar estas métricas para obter visibilidade dos indicadores de desempenho, como o tamanho do lote, o tamanho da fila e as latências de descodificação.
Com base nestas métricas, pode direcionar o dimensionamento automático para os indicadores de desempenho mais relevantes. As principais métricas ao nível do servidor para a escala automática incluem:
- Tamanho da fila: o número de pedidos a aguardar processamento na fila do servidor. Use o tamanho da fila para maximizar o débito e minimizar o custo dentro de um determinado limite de latência alvo. Para saber mais, consulte a secção de práticas recomendadas relacionada.
- Tamanho do lote: o número de pedidos em inferência. Use o tamanho do lote para atingir limites de latência alvo mais baixos do que o tamanho da fila. Para saber mais, consulte a secção de práticas recomendadas relacionada.
Estas métricas são frequentemente resilientes às flutuações de desempenho e tráfego, o que as torna um ponto de partida fiável para o dimensionamento automático em diversas configurações de hardware de GPU.
Métricas de GPU
As GPUs emitem várias métricas de utilização e desempenho, oferecendo o ajuste automático independente da carga de trabalho para qualquer tarefa baseada em GPU, incluindo cargas de trabalho de inferência que não têm métricas personalizadas. Para saber como configurar a recolha de DCGM, consulte o artigo Configurar a recolha de DCGM.
As métricas comuns de GPU para o GKE incluem:
Métrica de GPU | Utilização | Limitações |
---|---|---|
Utilização da GPU (DCGM_FI_DEV_GPU_UTIL ) |
Mede o ciclo de atividade, que é o tempo durante o qual a GPU está ativa. | Não mede a quantidade de trabalho que está a ser feito enquanto a GPU está ativa. Isto dificulta o mapeamento das métricas de desempenho baseadas em inferências, como a latência e a taxa de transferência, para um limite de utilização da GPU. |
Utilização da memória da GPU (DCGM_FI_DEV_FB_USED ) |
Mede a quantidade de memória da GPU que está a ser usada num determinado momento. Isto é útil para cargas de trabalho que implementam a atribuição dinâmica de memória da GPU. | Para cargas de trabalho que pré-atribuem memória da GPU ou nunca desatribuem memória (como cargas de trabalho executadas no TGI e vLLM), esta métrica só funciona para o aumento da escala e não diminui a escala quando o tráfego diminui. |
Métricas da CPU
No GKE, o HPA funciona imediatamente com o ajuste de escala automático baseado na CPU e na memória. Para cargas de trabalho executadas em CPUs, as métricas de utilização da CPU e da memória são normalmente a principal métrica de escala automática.
Para cargas de trabalho de inferência executadas em GPUs, não recomendamos a utilização da CPU e da memória como os únicos indicadores da quantidade de recursos que uma tarefa consome, porque as cargas de trabalho de inferência dependem principalmente dos recursos da GPU. Por conseguinte, usar apenas métricas de CPU para o dimensionamento automático pode levar a um desempenho e custos abaixo do ideal.
Considerações para escolher as métricas de escala automática
Use as seguintes considerações e práticas recomendadas para selecionar a melhor métrica para a escala automática no GKE de modo a atingir os seus objetivos de desempenho de carga de trabalho de inferência.
Prática recomendada: use o tamanho da fila para maximizar o débito e minimizar o custo dentro de um determinado limite de latência alvo
Recomendamos o dimensionamento automático do tamanho da fila quando otimizar o débito e o custo, e quando os seus alvos de latência forem alcançáveis com o débito máximo do tamanho máximo do lote do servidor do modelo.
O tamanho da fila está diretamente correlacionado com a latência dos pedidos. Os pedidos recebidos são colocados em fila no servidor do modelo antes de serem processados, e este tempo de fila aumenta a latência geral. O tamanho da fila é um indicador sensível de picos de carga, uma vez que o aumento da carga preenche rapidamente a fila.
A escala automática baseada no tamanho da fila minimiza o tempo de espera na fila ao aumentar a escala sob carga e diminuir a escala quando a fila está vazia. Esta abordagem é relativamente fácil de implementar e, em grande medida, independente da carga de trabalho, porque o tamanho da fila é independente do tamanho do pedido, do modelo ou do hardware.
Considere focar-se no tamanho da fila se quiser maximizar o débito respeitando a configuração do servidor do modelo. O tamanho da fila monitoriza os pedidos pendentes, não os pedidos em processamento. O vLLM e o TGI usam o processamento em lote contínuo, o que maximiza os pedidos simultâneos e mantém a fila baixa quando o espaço de processamento em lote está disponível. A fila aumenta significativamente quando o espaço de lotes é limitado. Por isso, use o ponto de crescimento como um sinal para iniciar o aumento da escala. Ao combinar o ajuste automático do tamanho da fila com a capacidade de processamento em lote otimizada, pode maximizar a capacidade de processamento de pedidos.
Determine o valor de limite do tamanho da fila ideal para o HPA
Tenha em atenção a tolerância de HPA, que tem por predefinição um intervalo de 0,1 sem ação em torno do valor alvo para reduzir a oscilação.
Para escolher o limite de tamanho da fila correto, comece com um valor entre 3 e 5 e aumente-o gradualmente até que os pedidos atinjam a latência preferida. Use a ferramenta
locust-load-inference
para testes. Para limites inferiores a 10,
ajuste as definições de aumento da escala do HPA para processar picos de tráfego.
Também pode criar um painel de controlo personalizado do Cloud Monitoring para visualizar o comportamento das métricas.
Limitações
O tamanho da fila não controla diretamente os pedidos simultâneos, pelo que o respetivo limite não pode garantir uma latência inferior à permitida pelo tamanho máximo do lote. Como solução alternativa, pode reduzir manualmente o tamanho máximo do lote ou dimensionar automaticamente o tamanho do lote.
Prática recomendada: use o tamanho do lote para atingir limites de latência alvo mais baixos do que o tamanho da fila
Recomendamos que escolha o ajuste de escala automático baseado no tamanho do lote se tiver cargas de trabalho sensíveis à latência em que o ajuste de escala baseado na fila não seja suficientemente rápido para satisfazer os seus requisitos.
O tamanho do lote está diretamente correlacionado com o débito e a latência de um pedido recebido. O tamanho do lote é um bom indicador de picos no carregamento, uma vez que um aumento no carregamento faz com que sejam adicionados mais pedidos ao lote existente, o que resulta num tamanho do lote maior. Em geral, quanto maior for o tamanho do lote, maior é a latência. O dimensionamento automático do tamanho do lote garante que a sua carga de trabalho é dimensionada para maximizar o número de pedidos processados em paralelo de uma só vez e é reduzida quando há menos pedidos processados em paralelo.
Se a dimensão da fila já cumprir os seus objetivos de latência, dê-lhe prioridade para o dimensionamento automático. Isto maximiza o débito e a rentabilidade. No entanto, o tamanho do lote é valioso para cargas de trabalho sensíveis à latência. Os tamanhos dos lotes maiores aumentam o débito, mas também aumentam a latência devido à fase de preenchimento de alguns pedidos que interrompem a fase de descodificação de outros em servidores de modelos de processamento em lote contínuo. Pode monitorizar padrões de tamanho do lote e usar o dimensionamento automático para minimizar os pedidos simultâneos durante picos de carga.
Se o servidor do modelo o permitir, recomendamos que personalize o tamanho máximo do lote como um mecanismo de ajuste adicional. Também pode associar esta funcionalidade ao escalamento automático baseado em filas.
Determine o valor de limite do tamanho do lote ideal para o HPA
Tenha em atenção a tolerância de HPA, que é um intervalo de 0,1 sem ação predefinido em torno do valor alvo para reduzir a oscilação.
Para escolher o limite do tamanho do lote correto, aumente experimentalmente a carga no servidor e observe onde o tamanho do lote atinge o pico. Também recomendamos que use a ferramenta locust-load-inference
para testes. Depois de identificar o tamanho máximo do lote, defina o valor alvo inicial ligeiramente abaixo deste máximo e diminua-o até atingir a latência preferida.
Também pode criar um painel de controlo personalizado do Cloud Monitoring para visualizar o comportamento das métricas.
Limitações
O dimensionamento automático com base no tamanho do lote, embora seja útil para o controlo da latência, tem limitações. A variação dos tamanhos dos pedidos e as restrições de hardware dificultam a determinação do limite do tamanho do lote adequado.
Prática recomendada: otimize a configuração do HPA
Recomendamos que defina estas opções de configuração do HPA:
- Período de estabilização: use esta opção de configuração do HPA para evitar alterações rápidas ao número de réplicas devido a métricas flutuantes. As predefinições são 5 minutos para a redução (evitando a redução prematura) e 0 para o aumento (garantindo a capacidade de resposta). Ajuste o valor com base na volatilidade da carga de trabalho e na capacidade de resposta preferida.
- Políticas de escalabilidade: use esta opção de configuração do HPA para ajustar o comportamento de aumento e diminuição da escala. Pode definir o limite da política "Pods" para especificar o número absoluto de réplicas alteradas por unidade de tempo e o limite da política "Percentagem" para especificar pela percentagem de alteração.
Para saber mais acerca destas opções, consulte o artigo Escala automática horizontal de pods na documentação do Kubernetes de código aberto.