Skip to content
Apresentando escalonamento automático no Amazon SageMaker HyperPod com Karpenter
Source: aws.amazon.com

Apresentando escalonamento automático no Amazon SageMaker HyperPod com Karpenter

Sources: https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod, https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod/, AWS ML Blog

TL;DR

  • O SageMaker HyperPod passa a oferecer escalonamento automático de nós gerenciado com Karpenter para seus clusters EKS.
  • A solução é gerenciada pelo serviço, eliminando a necessidade de instalar ou manter controladores Karpenter por conta própria, com suporte a escala para zero.
  • Integrando provisionamento contínuo e a opção KEDA, você obtém uma arquitetura de escalonamento em dois níveis que ajusta pods e nós conforme a demanda em tempo real.
  • A abordagem enfatiza resiliência, resposta rápida a picos de tráfego e eficiência de custos para cargas de ML em grande escala.
  • Pré-requisitos incluem quotas, uma função IAM para o Karpenter e a habilitação do provisionamento contínuo em um cluster SageMaker HyperPod EKS.

Contexto e antecedentes

O Amazon SageMaker HyperPod oferece uma infraestrutura de alto desempenho, resiliente e moldada para cargas de ML em grande escala, incluindo treinamentos e implantações em escala. À medida que mais clientes passam de treinar modelos de base para inferência em escala, há necessidade de adaptar recursos de GPU automaticamente ao tráfego de produção, mantendo SLAs e controlando custos. O Karpenter é um gerente de ciclo de vida de nós de Kubernetes de código aberto criado pela AWS e é uma escolha popular para escalonamento de clusters, devido à sua capacidade de provisionar e desprovisionar nós rapidamente e otimizar a capacidade. Historicamente, clientes que utilizavam Karpenter de forma independente enfrentavam sobrecarga operacional para instalação, configuração e manutenção dos componentes. O SageMaker HyperPod agora oferece uma experiência de escalonamento automático baseada em Karpenter gerenciada, eliminando esse trabalho pesado, ao mesmo tempo em que oferece integração mais estreita com a resiliência e observabilidade do HyperPod. Uma capacidade-chave desta versão é o suporte a escala para zero, que reduz a necessidade de manter um controlador Karpenter dedicado quando não há demanda de compute, melhorando a eficiência de custos. A combinação da infraestrutura especializada em ML do HyperPod com a gestão de ciclo de vida de nós do Karpenter oferece uma plataforma resiliente e escalável para cargas de ML em grande escala. Clientes como Perplexity, HippocraticAI, H.AI e Articul8 já utilizam o SageMaker HyperPod para treinar e implantar modelos; à medida que o tráfego cresce, o escalonamento automático torna-se essencial para atender às demandas reais de produção.

O que há de novo

Este lançamento introduz uma solução de escalonamento automático baseada em Karpenter totalmente gerenciada, instalada e mantida pelo SageMaker HyperPod. Ela permite o escalonamento automático de clusters do SageMaker HyperPod de capacidade estática para uma infraestrutura dinâmica e otimizada em termos de custos que cresce com a demanda. Os componentes-chave incluem:

  • Uma implantação gerenciada do Karpenter integrada aos clusters SageMaker HyperPod EKS, eliminando a necessidade de configuração e manutenção do Karpenter por parte do cliente.
  • Capacidades de provisionamento contínuo que permitem ao HyperPod provisionar automaticamente a capacidade restante em segundo plano, enquanto as cargas começam em instâncias disponíveis.
  • Repetições automáticas para falhas de provisionamento devido a limites de capacidade, mantendo as operações de escalonamento resilientes e não bloqueantes.
  • HyperpodNodeClass, um recurso personalizado que mapeia para grupos de instâncias pré-criados no SageMaker HyperPod, definindo restrições sobre quais tipos de instâncias e zonas de disponibilidade são suportados para as decisões de escalonamento do Karpenter.
  • NodePool que define o hardware (tipos de instância) e a colocação (Zona de Disponibilidade) para pods, permitindo controle preciso sobre quais nós são criados e onde executam.
  • Integração opcional com Kubernetes Event-driven Autoscaling (KEDA) para escalonamento de nível de pod com base em métricas. Quando integrado com o KEDA, o Karpenter provisiona ou elimina nós conforme necessário, mantendo o desempenho ideal e o controle de custos. Para implementar uma solução completa de escalonamento automático de ponta a ponta, você pode combinar KEDA com Karpenter no SageMaker HyperPod. Essa abordagem em dois níveis garante que os pods escalem com base em sinais de demanda, enquanto o Karpenter provisiona ou desprovisiona nós de acordo com as necessidades de recursos.

Por que isso importa (impacto para desenvolvedores/empresas)

Para cargas de inferência que enfrentam tráfego em tempo real, o escalonamento automático é essencial para cumprir SLAs de latência, mantendo a eficiência de custos. A abordagem gerenciada pelo Karpenter reduz a sobrecarga operacional, acelera as decisões de escalonamento e permite o escalonamento para zero quando não há demanda, minimizando o uso de recursos ociosos. Desenvolvedores e empresas se beneficiam de:

  • Resposta mais rápida a picos de tráfego e tempos de resposta mais estáveis durante a demanda máxima.
  • Menor carga operacional, já que o SageMaker HyperPod gerencia a instalação, configuração e manutenção do Karpenter.
  • Melhor eficiência de custos ao escalar para zero quando ociosos e ao alinhar recursos à demanda real.
  • Uma infraestrutura de ML resiliente com observabilidade e ferramentas otimizadas para treinamento e implantação em grande escala.

Detalhes técnicos ou Implementação

Pré-requisitos e configuração inicial

  • Verifique quotas para os tipos de instância que você planeja criar no cluster SageMaker HyperPod por meio do console de Quotas de Serviço (por exemplo, g5.12xlarge).
  • Crie uma função IAM para autoscaling do HyperPod com Karpenter, seguindo as instruções para habilitar as permissões necessárias.
  • Lançar e configurar seu cluster SageMaker HyperPod EKS com o modo de provisionamento contínuo ativado na criação do cluster. Se preferir, você pode usar um cluster EKS existente em vez de criar um novo. A configuração completa normalmente leva cerca de 20 minutos.
  • Certifique-se de que cada InstanceGroup esteja limitado a uma única zona usando OverrideVpcConfig e selecionando apenas uma sub-rede por InstanceGroup. Habilitando o Karpenter no seu cluster HyperPod
  • Após a criação do cluster, atualize o cluster para habilitar o Karpenter. Isso pode ser feito via AWS CLI (comando UpdateCluster) ou programaticamente com Boto3 (Python). Você configurará suas credenciais da AWS e executará a chamada apropriada para aplicar as alterações, em seguida, verificará se o Karpenter está habilitado com DescribeCluster.
  • A verificação inclui confirmar que o Karpenter está ativo no cluster e que os controladores necessários estão instalados e em execução no ambiente EKS do HyperPod. Configuração de HyperpodNodeClass e NodePool
  • HyperpodNodeClass é um recurso personalizado que mapeia para grupos de instâncias pré-criados no SageMaker HyperPod. Ele define restrições sobre quais tipos de instâncias e zonas de disponibilidade podem ser usados pelas decisões de escalonamento do Karpenter para pods.
  • Para usar HyperpodNodeClass, basta referenciar os nomes dos InstanceGroups que você deseja usar como fonte de recursos de computação da AWS para escalar os nós. O nome do HyperpodNodeClass que você especificar será levado para o NodePool no próximo passo, onde ele será utilizado.
  • O NodePool especifica o hardware (tipo de instância) e a colocação (Zona de Disponibilidade) para os pods. O NodePool atua como uma ponte entre o controlador Karpenter e os grupos de instâncias subjacentes do SageMaker HyperPod, garantindo que os pods sejam programados nos nós apropriados.
  • Um exemplo de configuração de NodePool demonstra incluir ml.g6.xlarge como tipo de instância e limitar a zona a uma única região. Os pods podem ser implantados via deployments do Kubernetes e acionarão o Karpenter para provisionar nós conforme necessário. Observabilidade, autoscaling baseado em eventos e limpeza
  • Para uma solução completa e observável, você pode introduzir o Kubernetes Event-driven Autoscaling (KEDA). O KEDA escala pods com base em métricas (CloudWatch, filas SQS, Prometheus e padrões de utilização de recursos). Quando o KEDA escala os pods, o Karpenter provisiona ou desprovisiona nós para acompanhar a demanda de recursos.
  • Um objeto de exemplo do KEDA ScaledObject pode ajustar a quantidade de pods de inferência com base em métricas do CloudWatch, como o contador de requisições do Application Load Balancer (ALB).
  • Quando não for mais necessário, exclua seu cluster SageMaker HyperPod para evitar cobranças contínuas. Notas de implementação
  • Com o lançamento do escalonamento baseado em Karpenter no SageMaker HyperPod, cargas de ML podem se adaptar automaticamente a alterações na demanda, otimizando a utilização de recursos e ajudando a controlar custos ao escalar exatamente quando necessário.
  • Você também pode integrá-lo a solucionadores de pods baseados em eventos, como o KEDA, para dimensionamento com base em métricas personalizadas.

Principais conclusões

  • O SageMaker HyperPod agora inclui escalonamento automático gerenciado com base no Karpenter para clusters EKS.
  • Há suporte a scale-to-zero, reduzindo custos mantendo prontidão para escalonar conforme demanda.
  • O provisionamento contínuo e as tentativas em segundo plano ajudam a manter o escalonamento sem bloquear workloads.
  • HyperPodNodeClass e NodePool permitem controle fino sobre tipos de instâncias, zonas e colocação de pods.
  • A integração opcional com o KEDA oferece um escalonamento em dois níveis para atender a métricas em tempo real.

FAQ

  • O que faz o novo escalonamento automático com Karpenter no SageMaker HyperPod?

    Fornece uma solução de escalonamento automático baseada em Karpenter, gerenciada pelo HyperPod, para ajustar clusters conforme a demanda, com suporte a escala para zero e provisionamento contínuo.

  • O que preciso configurar antes de habilitar o escalonamento com Karpenter?

    Verifique quotas para as instâncias alvo, crie uma função IAM para autoscaling com Karpenter e ative o provisionamento contínuo no cluster HyperPod EKS.

  • Como habilito o Karpenter no meu cluster HyperPod?

    tualize o cluster para habilitar o Karpenter (via AWS CLI UpdateCluster ou via Boto3) e verifique com DescribeCluster se o Karpenter está ativo.

  • O que são HyperpodNodeClass e NodePool e para que servem?

    HyperpodNodeClass mapeia para grupos de instâncias do HyperPod para restringir tipos de instâncias e zonas; NodePool define o hardware e a colocação para os pods.

  • Posso combinar KEDA com Karpenter no HyperPod?

    Sim. O KEDA escala pods com base em métricas, e o Karpenter provisiona ou remove nós conforme necessário.

Referências

More news

aws.amazon.com

Use AWS Deep Learning Containers com o SageMaker AI gerenciado MLflow

Explore como os AWS Deep Learning Containers (DLCs) se integram ao SageMaker AI gerenciado pelo MLflow para equilibrar controle de infraestrutura e governança robusta de ML. Um fluxo de trabalho de predição de idade de ostra com TensorFlow demonstra rastreamento de ponta a ponta, governança de model