Agende um trabalho do Slurm em um cluster SageMaker HyperPod - Amazon SageMaker

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á.

Agende um trabalho do Slurm em um cluster SageMaker HyperPod

Você pode iniciar trabalhos de treinamento usando o Slurm sbatch ou srun os comandos padrão. Por exemplo, para iniciar um trabalho de treinamento de 8 nós, você pode executar um treinamento de srun -N 8 --exclusive train.sh SageMaker HyperPod suporte em uma variedade de ambientesconda, incluindovenv,docker, e. enroot Você pode configurar um ambiente de ML executando scripts de ciclo de vida em seus SageMaker HyperPod clusters. Você também tem a opção de anexar um sistema de arquivos compartilhado, como o Amazon FSx, que também pode ser usado como um ambiente virtual.

O exemplo a seguir mostra como executar um trabalho para treinar o Llama-2 com a técnica Fully Sharded Data Parallelism (FSDP) em um cluster com SageMaker HyperPod um sistema de arquivos compartilhado Amazon FSx. Você também pode encontrar mais exemplos no GitHub repositório Awsome Distributed Training.

dica

Todos os SageMaker HyperPod exemplos estão disponíveis na 3.test_cases pasta do GitHub repositório do Awsome Distributed Training.

  1. Clone o GitHub repositório Awsome Distributed Training e copie os exemplos de trabalhos de treinamento para o seu sistema de arquivos Amazon FSx.

    $ TRAINING_DIR=/fsx/users/my-user/fsdp $ git clone https://github.com/aws-samples/awsome-distributed-training/
  2. Execute o script create_conda_env.sh. Isso cria um conda ambiente no seu sistema de arquivos Amazon FSx. Certifique-se de que o sistema de arquivos esteja acessível a todos os nós do cluster.

  3. Crie o ambiente virtual Conda iniciando um trabalho de slurm de nó único da seguinte forma.

    $ srun -N 1 /path_to/create_conda_env.sh
  4. Depois que o ambiente for criado, você poderá iniciar um trabalho de treinamento apontando para o caminho do ambiente no volume compartilhado. Você pode iniciar trabalhos de treinamento de nó único e de vários nós com a mesma configuração. Para iniciar uma tarefa, crie um script inicializador de tarefas (também chamado de script de ponto de entrada) da seguinte forma.

    #!/usr/bin/env bash set -ex ENV_PATH=/fsx/users/my_user/pytorch_env TORCHRUN=$ENV_PATH/bin/torchrun TRAINING_SCRIPT=/fsx/users/my_user/pt_train.py WORLD_SIZE_JOB=$SLURM_NTASKS RANK_NODE=$SLURM_NODEID PROC_PER_NODE=8 MASTER_ADDR=(`scontrol show hostnames \$SLURM_JOB_NODELIST | head -n 1`) MASTER_PORT=$(expr 10000 + $(echo -n $SLURM_JOBID | tail -c 4)) DIST_ARGS="--nproc_per_node=$PROC_PER_NODE \ --nnodes=$WORLD_SIZE_JOB \ --node_rank=$RANK_NODE \ --master_addr=$MASTER_ADDR \ --master_port=$MASTER_PORT \ " $TORCHRUN $DIST_ARGS $TRAINING_SCRIPT
    dica

    Se você quiser tornar seu trabalho de treinamento mais resiliente contra falhas de hardware usando o recurso de retomada automática do SageMaker HyperPod, você precisa configurar adequadamente a variável de ambiente MASTER_ADDR no script do ponto de entrada. Para saber mais, consulte Retoma automático.

    Este tutorial pressupõe que esse script seja salvo como/fsx/users/my_user/train.sh.

  5. Com esse script no volume compartilhado em/fsx/users/my_user/train.sh, execute o srun comando a seguir para agendar o trabalho do Slurm.

    $ cd /fsx/users/my_user/ $ srun -N 8 train.sh