Este documento oferece uma vista geral dos conceitos de escala automática para cargas de trabalho de IA/ML no Google Kubernetes Engine (GKE).
Este documento destina-se a engenheiros de aprendizagem automática (ML) que estão a usar o GKE pela primeira vez. Recomendamos que leia os seguintes documentos da série para começar a usar o GKE para cargas de trabalho de IA/ML:
- Por que motivo usar o GKE para a inferência de IA/ML
- Acerca da inferência de modelos de IA/ML no GKE
- Conceitos de escala automática simplificados para cargas de trabalho de IA/ML no GKE (este documento)
Antes de começar
Deve ter conhecimentos básicos dos seguintes conceitos:
- Objetos fundamentais do Kubernetes: compreenda o que são contentores, pods e nós, e como se relacionam entre si.
- Arquitetura básica do cluster do GKE: compreenda como os vários componentes do cluster do GKE interagem entre si.
O desafio: satisfazer o pico da procura
A Cymbal Shops, um retalhista online fictício, está a preparar o seu evento de vendas anual. O motor de recomendações da loja com tecnologia de IA tem de fornecer sugestões personalizadas em tempo real a um grande afluxo de compradores online.
Se o motor de recomendações ficar mais lento, a experiência do utilizador é afetada e perdem-se vendas. No entanto, o aprovisionamento de capacidade excessiva do servidor não é rentável durante os períodos de tráfego normal. O objetivo é que os recursos sejam dimensionados automaticamente em resposta à procura, garantindo uma boa experiência do utilizador e mantendo os custos sob controlo.
A solução: o redimensionamento automático a pedido
A escala automática do GKE funciona como um gerente de loja a preparar-se para um pico de vendas. Em vez de manter um edifício enorme com pessoal e energia a funcionar em pleno todo o tempo, o gestor ajusta dinamicamente toda a capacidade da loja (pessoal, espaço físico e equipamento) para corresponder às necessidades dos compradores em qualquer momento.
O GKE aplica este mesmo princípio: dimensiona automaticamente os recursos atribuídos à sua aplicação (carga de trabalho e infraestrutura) com base na procura em tempo real.
Vantagens empresariais da escala automática do GKE
Ao combinar estratégias de escalabilidade horizontal e vertical, o GKE oferece uma abordagem robusta que proporciona três vantagens principais:
- Otimização de custos: paga apenas pelos recursos de computação que usa e evita a despesa de aprovisionamento excessivo. O dimensionamento automático do GKE evita o desperdício ao dimensionar automaticamente as suas aplicações de acordo com os requisitos reais de CPU e memória. Também pode aprovisionar hardware especializado e dispendioso (como GPUs) apenas para os momentos em que são necessários e removê-los quando a tarefa estiver concluída.
- Fiabilidade e desempenho melhorados: a sua aplicação pode ser dimensionada automaticamente (adicionar mais cópias) para processar picos de tráfego súbitos, garantindo a estabilidade para os seus utilizadores. Ao mesmo tempo, o dimensionamento automático do GKE ajuda a evitar erros comuns de "Sem memória" (OOM) que podem falhar as aplicações. Para as tarefas exigentes de IA/ML, ajuda a garantir que o hardware de alto desempenho necessário está disponível para serem executadas de forma eficiente e concluídas a tempo.
- Despesas gerais operacionais reduzidas: a estratégia de escalabilidade automática multidimensional do GKE simplifica significativamente a gestão de recursos. O GKE automatiza as tarefas complexas de ajuste dos pedidos de recursos e gestão de pools de nós especializados para hardware diferente. Esta automatização permite que as suas equipas de engenharia se concentrem no desenvolvimento de aplicações em vez de na otimização da infraestrutura.
Escala automática da carga de trabalho
A criação de uma escala automática da carga de trabalho ajusta automaticamente a potência da sua aplicação para corresponder à procura. O GKE usa um sistema de escalamento automático de dois níveis para gerir os recursos da sua aplicação de forma eficiente.
Redimensionador automático horizontal de pods (HPA): adicionar mais recursos
O redimensionador automático horizontal de pods (HPA) monitoriza a utilização de recursos dos pods da sua aplicação. Na nossa analogia, os pods são os "representantes comerciais" e o HPA é o "gestor de equipa" que observa o quão ocupados estão os representantes comerciais.
Quando a procura nos pods aumenta, o HPA aprovisiona automaticamente mais pods para distribuir a carga. Quando a procura diminui, o HPA termina os pods inativos para conservar recursos.
Para mais informações, consulte o artigo Escala automática horizontal de pods.
Escala automática vertical de pods (VPA): tornar os recursos mais poderosos
Embora o escalamento horizontal se foque no aumento da quantidade de recursos, o escalamento vertical é uma estratégia complementar que se foca no aumento do poder dos recursos existentes. No contexto da nossa analogia da loja offline, não se trata de contratar mais funcionários, mas de melhorar as capacidades da equipa atual para melhorar a respetiva eficiência individual.
Esta abordagem de escalabilidade vertical ao nível do pod é gerida pelo redimensionador automático vertical de pods (VPA). O VPA analisa o consumo de recursos da sua aplicação e ajusta os pedidos de CPU e memória do pod para cima ou para baixo, de modo a corresponder à sua utilização real.
O VPA pode ajustar os pedidos e os limites de recursos de um pod, por exemplo, ao reabastecer o pod para escalar de 1 CPU e 16 GB para 4 CPUs e 64 GB. Este processo envolve o reinício do Pod com a sua nova configuração mais capaz para processar melhor a respetiva carga de trabalho.
Para obter mais informações, consulte os seguintes recursos:
O HPA e o VPA são complementares. O HPA ajusta o número de pods em resposta a alterações no tráfego e o VPA ajuda a garantir que cada um desses pods tem o tamanho correto para a respetiva tarefa. Estas estratégias de escalabilidade evitam o desperdício de recursos, evitam custos desnecessários e ajudam a garantir que a sua app permanece reativa e disponível durante as flutuações de tráfego. No entanto, não recomendamos a utilização do HPA e do VPA nas mesmas métricas (CPU e memória), uma vez que podem entrar em conflito. Para mais informações, consulte o artigo Limitações do dimensionamento automático horizontal de pods.
Escala automática da infraestrutura
O escalamento automático da infraestrutura adiciona ou remove automaticamente hardware para corresponder às exigências das suas cargas de trabalho.
Redimensionador automático de clusters: o gestor de edifícios
O escalador automático de clusters ajuda a garantir que existe uma infraestrutura subjacente suficiente (VMs ou nós no contexto do GKE) para acomodar os pods. Os nós podem ser comparados aos "pisos" de uma loja, onde o redimensionador automático de cluster é o "gestor do edifício".
Se o HPA precisar de adicionar mais pods, mas os nós existentes não tiverem capacidade disponível, o escalador automático do cluster aprovisiona um novo nó. Por outro lado, se algum nó for subutilizado, o redimensionador automático de clusters move os pods desse nó para outros nós e termina o nó agora vazio.
Para mais informações, consulte o artigo Ajuste de escala automático do cluster.
Criação automática de node pools: o especialista em automatização
Embora o redimensionador automático de cluster adicione nós a node pools existentes, a criação automática de node pools expande a capacidade do redimensionador automático de cluster, permitindo-lhe criar automaticamente novos node pools que correspondam às necessidades específicas dos seus pods.
Determinadas cargas de trabalho de IA/ML requerem hardware especializado de elevado desempenho, como GPUs ou TPUs, que não estão disponíveis em pools de nós de uso geral. A criação automática de pools de nós automatiza totalmente o aprovisionamento deste hardware especializado quando as suas cargas de trabalho o exigem. Isto ajuda a garantir que mesmo as tarefas mais exigentes em termos de computação recebem o hardware de que precisam, quando precisam.
Para mais informações, consulte o artigo Acerca da criação automática de conjuntos de nós.
Para ver os aceleradores disponíveis no GKE, consulte o seguinte:
ComputeClasses: o acionador para a criação automática de node pools
Embora a criação automática de pools de nós possa ser acionada pelo pedido de um pod de um tipo de hardware específico (como nvidia-l4-vws), a utilização de uma ComputeClass é o método mais resiliente e moderno. Uma ComputeClass é um recurso do GKE que define e que atua com base num conjunto de regras para controlar e personalizar a forma como o hardware é dimensionado automaticamente. Embora não seja um redimensionador automático, funciona com o redimensionador automático de clusters.
Para ampliar a analogia, pense nas ComputeClasses como um "formulário de requisição inteligente" para o equipamento da sua loja.
Em vez de um associado de vendas (o seu Pod) exigir uma peça de hardware específica e rígida (por exemplo, "Preciso da caixa registadora da marca X, modelo 500"), pede uma capacidade através do formulário de requisição (por exemplo, "Preciso de uma estação de pagamento de alta velocidade"). O formulário, a ComputeClass, contém um conjunto de regras para a equipa de compras (GKE) sobre como processar essa encomenda.
As ComputeClasses separam o pedido de hardware do seu pod da ação de aprovisionamento do GKE. Em vez de o seu pod exigir uma máquina específica (como a3-highgpu-8g), pode pedir uma ComputeClass. A ComputeClass define a lógica "inteligente", uma lista de regras com prioridade que indica ao GKE como satisfazer esse pedido.
Para mais informações, consulte o artigo Acerca das ComputeClasses do GKE.
Para uma análise detalhada das ComputeClasses com exemplos reais e configurações YAML, consulte o guia técnico: Otimizar cargas de trabalho do GKE com ComputeClasses personalizadas.
Principais métricas e acionadores para a escala automática
Para tomar decisões de escalabilidade informadas, os componentes de escalabilidade automática monitorizam diferentes sinais. A tabela seguinte mostra a comparação dos acionadores de dimensionamento automático baseados em métricas.
| Componente | Reage a | Origem do sinal | Processo de pensamento | Ação do GKE |
|---|---|---|---|---|
| HPA | Carga atual | Consumo em tempo real, por exemplo, a CPU está a 90% neste momento. | "Os Pods atuais estão sobrecarregados. Temos de distribuir este tráfego imediatamente." | Aumenta ou diminui a escala: altera o número de réplicas de pods para satisfazer a procura. |
| VPA | Eficiência do dimensionamento | Consumo do histórico, por exemplo, utilização média da RAM nas últimas 24 horas. | "Os requisitos de recursos deste pod foram alterados ou as nossas estimativas iniciais estavam incorretas. Temos de ajustar a respetiva atribuição de recursos para corresponder à utilização real" | Aumenta ou diminui a escala: altera o tamanho (limites de CPU ou RAM) do pod para o ajustar ao tamanho certo. |
| Criação automática de node pools | Disponibilidade de hardware | Pedidos não preenchidos, por exemplo, o pod está no estado "Pendente" porque não existem nós de GPU. | "Não é possível iniciar este Pod porque o hardware físico que pediu está em falta." | Aprovisiona a infraestrutura: cria novos conjuntos de nós com o hardware específico. |
Acionadores do redimensionador automático horizontal de pods (HPA): reagir à carga
O HPA dimensiona o número de pods (aumenta ou diminui) através da monitorização das métricas de desempenho em tempo real. Por exemplo, a utilização de CPU e memória, as métricas fundamentais que indicam a carga de processamento nos seus pods, estão disponíveis imediatamente para o HPA.
No entanto, algumas métricas precisam de configurações explícitas, como as seguintes:
- Métricas do equilibrador de carga (pedidos por segundo [RPS]): uma medida direta do tráfego da aplicação que permite respostas de escalabilidade mais rápidas. Para usar esta métrica, consulte o artigo Ative o equilíbrio de carga baseado na utilização e o perfil de HPA de desempenho.
- Métricas personalizadas: configure a criação de escala automática com base em métricas empresariais personalizadas, como o "número de utilizadores ativos", para gerir proativamente os recursos com base na procura prevista. Para usar métricas personalizadas, tem de configurar um pipeline de métricas para as expor ao HPA. Para mais informações, consulte o serviço gerido do Google Cloud para Prometheus.
Acionadores da escala automática vertical de pods (VPA): reagir às necessidades de recursos
O VPA ajusta o tamanho do pod (aumenta ou diminui) monitorizando o consumo de recursos histórico:
- Utilização de CPU e memória: o VPA analisa a utilização anterior de um pod para determinar se o respetivo pedido de recursos está correto. O objetivo principal do VPA é evitar a contenção de recursos, aumentando ou diminuindo os pedidos de memória e CPU de um pod para corresponder às suas necessidades reais.
Acionadores de criação automática de node pools: reagir a pedidos de hardware
A criação automática de node pools aprovisiona novos node pools com hardware especializado. Não é acionado por métricas de desempenho, como a carga da CPU. Em alternativa, é acionado por um pedido de recurso do agrupamento:
- Pedido de recurso não agendável: um acionador principal. Quando é criado um pod, este pede hardware específico. Se o cluster não conseguir satisfazer este pedido porque nenhum nó existente tem esse hardware, a criação automática do conjunto de nós entra em ação.
- Pedido ComputeClass: um agrupamento pede uma ComputeClass, por exemplo,
cloud.google.com/compute-class: premium-gpu. Se nenhum nó no cluster puder fornecer as capacidades "premium-gpu", a criação automática do conjunto de nós cria automaticamente um novo conjunto de nós que pode fornecer essas capacidades.
Para saber como usar métricas personalizadas, do Prometheus e externas para alcançar o dimensionamento automático, consulte o artigo Acerca do dimensionamento automático de cargas de trabalho com base em métricas.
Conclusão
Ao aplicar estas estratégias de dimensionamento automático, pode gerir eficazmente as cargas de trabalho de IA/ML flutuantes. Tal como o gestor da loja Cymbal Shops navegou no seu evento de pico de vendas gerindo os recursos de forma flexível, pode usar o dimensionamento automático do GKE para expandir e contrair automaticamente os recursos da infraestrutura e da carga de trabalho. Isto ajuda a garantir que os seus modelos mantêm o desempenho durante os picos de tráfego e são rentáveis durante os períodos de menor atividade, mantendo o seu ambiente dimensionado corretamente.
O que se segue?
- Obtenha uma vista geral das cargas de trabalho de inferência de IA/ML no GKE.
- Saiba como servir MDIs abertos no GKE com uma arquitetura pré-configurada.
- Saiba como aplicar ComputeClasses aos pods por predefinição.