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 o agendamento com reconhecimento de topologia na Amazon SageMaker HyperPod
A eficiência da transferência de dados é um fator crítico nas workloads de machine learning e de computação de alta performance (HPC). Ao usar UltraServers com a Amazon SageMaker HyperPod, aplica SageMaker HyperPod automaticamente rótulos de topologia aos seus recursos. O agendamento com reconhecimento de topologia ajuda a alocar recursos para minimizar as despesas indiretas de transferência de dados, considerando tanto a topologia da instância (como os recursos são conectados dentro de uma instância) quanto a topologia da rede (como as instâncias estão conectadas umas às outras). Para obter mais informações sobre topologia de instâncias, consulte Topologia de EC2 instâncias da Amazon.
O agendamento com reconhecimento de topologia funciona com clusters no Slurm e no Amazon EKS. Para ter informações gerais sobre como a topologia funciona com o Slurm, consulte Topology Guide
Na Amazon SageMaker HyperPod, as despesas gerais de transferência de dados geralmente vêm de três fontes principais:
-
GPU-to-GPU transferência de dados: tecnologias modernas, como NVLink switches NVLink e switches, permitem a transferência de dados de alto rendimento GPUs sem envolver outros recursos computacionais. Isso é extremamente eficiente, mas geralmente limita-se a uma única instância.
-
GPU-to-CPU transferência de dados: os sistemas de acesso não uniforme à memória (NUMA) têm vários barramentos de sistema em uma única placa-mãe. Em uma arquitetura de EC2 instância típica, como p5.48xlarge, há dois barramentos de sistema diferentes, cada um com uma CPU e 4. GPUs Para um desempenho ideal, os processos que carregam ou lêem dados to/from GPUs devem ser executados em uma CPU conectada ao mesmo barramento de sistema da GPU.
-
Comunicações de rede entre instâncias: as instâncias transferem dados por meio de uma cadeia de comutadores de rede. O caminho mais curto normalmente corresponde à menor latência.
UltraServer arquitetura
SageMaker HyperPod oferece suporte à UltraServer arquitetura com instâncias p6e-gb200.36xlarge. E UltraServer contém até 18 instâncias p6e-gb200.36xlarge, com 4 em cada instância. GPUs Todos os GPUs nós são interconectados por meio de NVLink switches, permitindo a transferência de dados entre dois GPUs sem usar interfaces de rede.
Essa arquitetura oferece um aumento significativo de desempenho em comparação com instâncias individuais. Para aproveitar essa arquitetura de forma eficaz, os trabalhos devem ser enviados aos nós de computação a partir de um único UltraServer.
Rótulo de topologia do EKS
De acordo com a topologia da EC2 instância, rotula HyperPod automaticamente seus nós com os seguintes rótulos:
-
topology.kubernetes.io/region - o local em que o nó reside. Região da AWS
-
topology.kubernetes.io/zone: a zona de disponibilidade em que o nó reside.
-
topology.k8s.aws/ network-node-layer - NetworkNodes descreve o conjunto de nós de rede de uma instância. Em cada conjunto de nós de rede, os respectivos nós são listados em ordem hierárquica decrescente. O nó de rede conectado à instância é o último nó de rede na lista. Há até quatro camadas de nós de rede, e cada um é marcado com um rótulo. As camadas disponíveis são
topology.k8s.aws/network-node-layer-1,topology.k8s.aws/network-node-layer-2etopology.k8s.aws/network-node-layer-3. -
topology.k8s.aws/ultraserver-id - Um identificador usado para rotular cada uma das instâncias pertencentes ao mesmo domínio em um Ultraserver. NVLink Para saber mais sobre como usar UltraServers com SageMaker HyperPod, consulteUsando UltraServers na Amazon SageMaker HyperPod.
Usando esses rótulos, você pode usar o agendamento com reconhecimento de topologia na governança de HyperPod tarefas para aplicar rótulos e anotações de topologia para otimizar a eficiência do treinamento de suas cargas de trabalho. Para obter mais informações, consulte Usando o agendamento com reconhecimento de topologia na governança de tarefas da Amazon SageMaker HyperPod .
Plug-ins de topologia de rede do Slurm
O Slurm fornece plug-ins integrados para reconhecimento da topologia de rede. UltraServer arquitetura em SageMaker HyperPod suporta o plugin de bloco.
Usando o topology/block plug-in
A NVIDIA desenvolveu um topology/block plug-in que fornece agendamento hierárquico em blocos de nós com as seguintes características:
Um bloco é um intervalo consecutivo de nós.
Os blocos não podem se sobrepor uns aos outros.
Todos os nós em um bloco são alocados a uma tarefa antes que o próximo bloco seja usado.
O tamanho do bloco de planejamento é o menor tamanho de bloco configurado.
Cada tamanho de nível de bloco maior é uma potência de dois em relação ao anterior.
Esse plug-in aloca nós com base na topologia de rede definida.
Configuração
Para configurar o agendamento com reconhecimento de topologia com o plug-in, topology/block
-
SageMaker HyperPod configura automaticamente o topology/block plugin. Se você quiser configurar o plug-in, especifique o seguinte no arquivo topology.conf em seu diretório de configuração do Slurm:
BlockName=us1 Nodes=ultraserver1-[0-17] BlockName=us2 Nodes=ultraserver2-[0-17] BlockSizes=18 -
Garanta que
slurm.confinclua:TopologyPlugin=topology/block
Usage
Ao enviar trabalhos, você pode usar os seguintes argumentos adicionais com os comandos sbatch e srun:
--segment=N: especifique o número de nós a serem agrupados. O tamanho do segmento deve ser menor que ou igual ao tamanho do bloco de planejamento.--exclusive=topo: solicite que nenhum outro trabalho seja colocado no mesmo bloco. Isso é útil para aplicações de avaliação comparativa e sensíveis ao desempenho.
Veja a seguir cenários de exemplo que você pode considerar ao pensar em alocar blocos.
Alocar um bloco inteiro de nós em um sistema vazio
sbatch -N18
Alocar dois blocos inteiro de nós em um sistema vazio
sbatch -N36
Alocar 18 nós em um bloco e mais 6 nós em outro bloco
sbatch -N24
Alocar 12 nós em um bloco e mais 12 nós em outro bloco
sbatch -N24 —segment=12
Com —exclusive=topo, o trabalho deve ser colocado em bloco sem outros trabalhos
sbatch -N12 —exclusive=topo
Práticas recomendadas para UltraServer topologia
Para um desempenho ideal com UltraServer arquitetura em SageMaker HyperPod:
-
Defina os tamanhos de bloco apropriados: configure
BlockSizes=18(ou 17 se um nó estiver sobressalente) para corresponder à UltraServer arquitetura. -
Use segmentos para melhorar a disponibilidade: use
--segment=16,--segment=8ou--segment=9com os comandosrunesbatchpara melhorar a flexibilidade do agendamento de trabalhos. -
Considere o tamanho do trabalho e o tamanho do segmento:
Se
BlockSizes=18, trabalhos com até 18 instâncias sempre serão executados em uma única UltraServer.Se
BlockSizes=16, trabalhos com menos de 16 instâncias sempre serão executados em uma única UltraServer, enquanto trabalhos com 18 instâncias poderão ser executados em uma ou duas UltraServers.
Ao pensar em segmentar, considere o seguinte:
Com
--segment=1, cada instância pode ser executada separadamente UltraServer.Com
-N 18 --segment 9, 9 nós serão colocados em um UltraServer e outros 9 nós poderão ser colocados no mesmo ou em outro UltraServer.Com
-N 24 --segment 8, o trabalho pode ser executado em 2 ou 3 UltraServers, com cada 8 nós colocados juntos no mesmo servidor.
Limitações na programação com reconhecimento de SageMaker HyperPod topologia
O plug-in topology/block tem limitações com clusters heterogêneos (clusters com diferentes tipos de instância):
Somente os nós listados em blocos são programáveis pelo Slurm.
Cada bloco deve ter pelo menos
BlockSizes[0]nó.
Para clusters heterogêneos, considere estas alternativas:
Não use o plug-in de bloco com clusters heterogêneos. Em vez disso, isole UltraServer os nós em uma partição diferente.
Crie um cluster separado UltraServers somente na mesma VPC e use a configuração multicluster do Slurm.