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 cargas de trabalho de computação de alto desempenho (HPC) e aprendizado de máquina. 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 gerais 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 obter informações gerais sobre como a topologia funciona com o Slurm, consulte o guia de topologia na
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 limitado 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 fornece um aumento significativo no 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.
Etiqueta de topologia 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 na qual 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 da rede, os nós da rede são listados em uma ordem hierárquica de cima para baixo. O nó da rede conectado à instância é o último nó da rede na lista. Há até quatro camadas de nós de rede, e cada nó é marcado com um rótulo. As camadas disponíveis são
topology.k8s.aws/network-node-layer-1
,topology.k8s.aws/network-node-layer-2
,topology.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 .
Plugins de topologia de rede 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 para 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 do que o 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 você
slurm.conf
inclua:TopologyPlugin=topology/block
Uso
Ao enviar trabalhos, você pode usar os seguintes argumentos adicionais com srun
comandos sbatch
e:
--segment=N
: especifique o número de nós a serem agrupados. O tamanho do segmento deve ser menor ou igual ao tamanho do bloco de planejamento.--exclusive=topo
: solicite que nenhum outro trabalho seja colocado no mesmo bloco. Isso é útil para aplicativos de benchmarking e sensíveis ao desempenho.
Veja a seguir exemplos de cenários que você pode considerar ao pensar em alocar blocos.
Aloque um bloco inteiro de nós em um sistema vazio
sbatch -N18
Aloque dois blocos de nós em um sistema vazio
sbatch -N36
Aloque 18 nós em um bloco + 6 nós em outro bloco
sbatch -N24
Aloque 12 nós em um bloco e 12 nós em outro bloco
sbatch -N24 —segment=12
Com —exclusive=topo, o trabalho deve ser colocado em um 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=8
, ou--segment=9
comsrun
sbatch
comandos para 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 topology/block
plug-in 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ós
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.