Usando UltraServers na Amazon SageMaker HyperPod - SageMaker Inteligência Artificial da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando UltraServers na Amazon SageMaker HyperPod

SageMaker HyperPod o suporte para Ultraservers fornece recursos de computação de GPU de alto desempenho para cargas de trabalho de IA e aprendizado de máquina. Construídos com base na NVL72 arquitetura NVIDIA GB2 00, esses Ultraservers fornecem NVLink conectividade em GB2 1800 instâncias em uma configuração de rack duplo, totalizando 72 B200. GPUs Essa NVLink estrutura permite que as cargas de trabalho usem comunicações de GPU que aumentam a capacidade utilizável da GPU e a memória endereçável além do que é possível com instâncias discretas, suportando modelos de IA mais complexos e que consomem muitos recursos. A NVLink conectividade é habilitada pela tecnologia NVIDIA IMEX, que gerencia a configuração de baixo nível para conexões seguras de malha de GPU entre instâncias dentro do mesmo rack.

HyperPod simplifica a implantação e o gerenciamento desses clusters de GPU por meio do reconhecimento inteligente da topologia e da configuração automatizada. A plataforma descobre e rotula automaticamente os nós com suas informações de localização física e bloco de capacidade, o que oferece suporte ao agendamento com reconhecimento de topologia para cargas de trabalho distribuídas. HyperPod abstrai os complexos requisitos de configuração do IMEX, permitindo que você se concentre na implantação da carga de trabalho em vez da configuração de estrutura de GPU de baixo nível. Você pode escolher opções flexíveis de implantação, incluindo nós autogerenciados e grupos de nós gerenciados pelo EKS. O Amazon EKS fornece soluções otimizadas AMIs que incluem drivers NVIDIA pré-configurados, Fabric Manager, drivers IMEX e todo o software de sistema necessário para uma operação perfeita.

A integração inclui recursos de posicionamento de pods que garantem que as cargas de trabalho distribuídas sejam programadas de forma ideal em todos os NVL72 domínios usando rótulos de topologia padrão do Kubernetes. Os recursos integrados de monitoramento e recuperação automatizada fornecem suporte operacional, em que o agente de integridade da AMI detecta erros de GPU nos registros do kernel e pode corrigir problemas automaticamente ou substituir nós defeituosos em grupos de nós gerenciados. Essa combinação de escala de GPU, posicionamento inteligente da carga de trabalho e operações automatizadas ajuda você a se concentrar em suas AI/ML inovações e não na complexidade da infraestrutura, ao mesmo tempo em que obtém o máximo desempenho de seus investimentos em GPU.

Para configurar o uso UltraServers com seu HyperPod cluster, consulte as etapas a seguir:

  1. Crie um cluster baseado em EKS HyperPod . Ao escolher um grupo de instâncias, certifique-se de escolher um UltraServer.

  2. Depois que seu cluster for criado, use os seguintes comandos para instalar plug-ins operacionais:

    Plug-in de dispositivo NVIDIA v0.17.2

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/nvidia-device-plugin.yml

    FD DaemonSet v0.17.3

    kubectl apply -k "https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=v0.17.3"

    Descoberta de recursos de GPU

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/gpu-feature-discovery-daemonset.yaml

Agora você pode executar trabalhos. O exemplo a seguir demonstra como criar um domínio, configurar um domínio IMEX e habilitar a alocação de canais. Essas etapas também permitem criar um pod para provisionar um canal para comunicação NCCL.

  1. Crie um arquivo de especificação de recursos para usar com o Kubectl.

    cat <<EOF > imex-channel-injection.yaml --- apiVersion: resource.nvidia.com/v1beta1 kind: ComputeDomain metadata: name: imex-channel-injection spec: numNodes: 1 channel: resourceClaimTemplate: name: imex-channel-0 --- apiVersion: v1 kind: Pod metadata: name: imex-channel-injection spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: nvidia.com/gpu.clique operator: Exists - key: topology.k8s.aws/ultraserver-id operator: In values: - <UltraServer-ID> containers: - name: ctr image: ubuntu:22.04 command: ["bash", "-c"] args: ["ls -la /dev/nvidia-caps-imex-channels; trap 'exit 0' TERM; sleep 9999 & wait"] resources: claims: - name: imex-channel-0 resourceClaims: - name: imex-channel-0 resourceClaimTemplateName: imex-channel-0 EOF
  2. Aplique a configuração que você criou.

    kubectl apply -f imex-channel-injection.yaml
  3. Para verificar se seu pod foi criado, execute os get pods comandos.

    kubectl get pods kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
  4. Você também pode verificar os registros do pod para ver se ele alocou um canal de comunicação.

    kubectl logs imex-channel-injection
    total 0 drwxr-xr-x 2 root root 60 Feb 19 10:43 . drwxr-xr-x 6 root root 380 Feb 19 10:43 .. crw-rw-rw- 1 root root 507, 0 Feb 19 10:43 channel0
  5. Você também pode verificar os registros para verificar se a configuração automatizada do IMEX está sendo executada com um canal alocado.

    kubectl logs -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain --tail=-1 /etc/nvidia-imex/nodes_config.cfg:
    IMEX Log initializing at: 8/8/2025 14:23:12.081 [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX version 570.124.06 is running with the following configuration options [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging level = 4 [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging file name/path = /var/log/nvidia-imex.log [Aug 8 2025 14:23:12] [INFO] [tid 39] Append to log file = 0 [Aug 8 2025 14:23:12] [INFO] [tid 39] Max Log file size = 1024 (MBs) [Aug 8 2025 14:23:12] [INFO] [tid 39] Use Syslog file = 0 [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX Library communication bind interface = [JAug 8 2025 14:23:12] [INFO] [tid 39] IMEX library communication bind port = 50000 [Aug 8 2025 14:23:12] [INFO] [tid 39] Identified this node as ID 0, using bind IP of '10.115.131.8', and network interface of enP5p9s0 [Aug 8 2025 14:23:120] [INFO] [tid 39] nvidia-imex persistence file /var/run/nvidia-imex/persist.dat does not exist. Assuming no previous importers. [Aug 8 2025 14:23:12] [INFO] [tid 39] NvGpu Library version matched with GPU Driver version [Aug 8 2025 14:23:12] [INFO] [tid 63] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 64] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 65] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 39] Creating gRPC channels to all peers (nPeers = 1). [Aug 8 2025 14:23:12] [INFO] [tid 66] Started processing of incoming messages. [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX_WAIT_FOR_QUORUM != FULL, continuing initialization without waiting for connections to all nodes. [Aug 8 2025 14:23:12] [INFO] [tid 67] Connection established to node 0 with ip address 10.115.131.8. Number of times connected: 1 [Aug 8 2025 14:23:12] [INFO] [tid 39] GPU event successfully subscribed
  6. Depois de verificar tudo, exclua a carga de trabalho e remova a configuração.

    kubectl delete -f imex-channel-injection.yaml