

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

# Começando a SageMaker HyperPod usar o AWS CLI
<a name="smcluster-getting-started-slurm-cli"></a>

Crie seu primeiro SageMaker HyperPod cluster usando os AWS CLI comandos para HyperPod.

## Crie seu primeiro SageMaker HyperPod cluster com o Slurm
<a name="smcluster-getting-started-slurm-cli-create-cluster"></a>

[O tutorial a seguir demonstra como criar um novo SageMaker HyperPod cluster e configurá-lo com o Slurm por meio dos AWS CLI comandos para. SageMaker HyperPod](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-cli) Seguindo o tutorial, você criará um HyperPod cluster com três nós do Slurm: `my-controller-group``my-login-group`, e. `worker-group-1`

Com a abordagem de configuração orientada por API, você define os tipos de nós do Slurm e as atribuições de partição diretamente na solicitação da API usando. CreateCluster `SlurmConfig` Isso elimina a necessidade de um `provisioning_parameters.json` arquivo separado e fornece validação, detecção de desvios e per-instance-group FSx configuração integradas.

1. Primeiro, prepare e faça upload de scripts de ciclo de vida em um bucket do Amazon S3. Durante a criação do cluster, eles são HyperPod executados em cada grupo de instâncias. Faça upload de scripts de ciclo de vida no Amazon S3 usando o comando a seguir.

   ```
   aws s3 sync \
       ~/{{local-dir-to-lifecycle-scripts}}/* \
       s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}
   ```
**nota**  
O caminho do bucket do S3 deve começar com um prefixo`sagemaker-`, porque a [função do IAM para SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) with `AmazonSageMakerClusterInstanceRolePolicy` só permite o acesso aos buckets do Amazon S3 que começam com o prefixo específico.

   Se você está começando do zero, use exemplos de scripts de ciclo de vida fornecidos no repositório do [Awsome Distributed Training](https://github.com/aws-samples/awsome-distributed-training/). GitHub As subetapas a seguir mostram como baixar e carregar os exemplos de scripts de ciclo de vida em um bucket do Amazon S3.

   1. Faça download de uma cópia dos exemplos de scripts do ciclo de vida em um diretório local do computador local.

      ```
      git clone https://github.com/aws-samples/awsome-distributed-training/
      ```

   1. Acesse o diretório [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config), em que você pode encontrar um conjunto de scripts de ciclo de vida.

      ```
      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
      ```

      Para saber mais sobre os exemplos de scripts do ciclo de vida, consulte. [Personalização de SageMaker HyperPod clusters usando scripts de ciclo de vida](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)

   1. Faça o upload de scripts em `s3://sagemaker-{{<unique-s3-bucket-name>}}/{{<lifecycle-script-directory>}}/src`. Você pode fazer isso no console do Amazon S3 ou executando o seguinte comando da AWS CLI do Amazon S3:

      ```
      aws s3 sync \
          ~/{{local-dir-to-lifecycle-scripts}}/* \
          s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}
      ```
**nota**  
Com a configuração orientada por API, você não precisa criar ou carregar um `provisioning_parameters.json` arquivo. A configuração do Slurm é definida diretamente na solicitação da CreateCluster API na próxima etapa.

1. Prepare um arquivo de [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)solicitação no formato JSON e salve como`create_cluster.json`.

   Com a configuração orientada por API, você especifica o tipo de nó do Slurm e a atribuição de partição para cada grupo de instâncias usando o campo. `SlurmConfig` Você também define as configurações do Slurm em nível de cluster usando. `Orchestrator.Slurm`

   Para `ExecutionRole`, forneça o ARN do perfil do IAM que você criou com o `AmazonSageMakerClusterInstanceRolePolicy` gerenciado em [Pré-requisitos para usar SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md).

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole",
               "InstanceStorageConfigs": [
                   {
                       "EbsVolumeConfig": {
                           "VolumeSizeInGB": 500
                       }
                   }
               ]
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       }
   }
   ```

   **SlurmConfig campos**:    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Campos do Orchestrator.Slurm:**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **SlurmConfigStrategy opções:**
   + `Managed`(recomendado): gerencia `slurm.conf` e detecta HyperPod totalmente alterações não autorizadas (detecção de desvios). As atualizações falharão se um desvio for detectado.
   + `Overwrite`: HyperPod substitui `slurm.conf` as atualizações, ignorando quaisquer alterações manuais.
   + `Merge`: HyperPod preserva as alterações manuais e as mescla com a configuração da API.

   **Adicionando FSx para Lustre (opcional):**

   Para montar um FSx sistema de arquivos for Lustre em seus nós de computação, adicione-o `FsxLustreConfig` ao grupo for the `InstanceStorageConfigs` instance. Isso requer uma configuração de VPC personalizada.

   ```
   {
       "InstanceGroupName": "worker-group-1",
       "InstanceType": "ml.trn1.32xlarge",
       "InstanceCount": 1,
       "SlurmConfig": {
           "NodeType": "Compute",
           "PartitionNames": ["partition-1"]
       },
       "InstanceStorageConfigs": [
           {
               "FsxLustreConfig": {
                   "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                   "MountPath": "/fsx",
                   "MountName": "abcdefgh"
               }
           }
       ],
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
   }
   ```

   **Adicionando FSx para o OpenZFS (opcional):**

   Você também pode montar FSx para sistemas de arquivos OpenZFS:

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com",
               "MountPath": "/shared"
           }
       }
   ]
   ```
**nota**  
Cada grupo de instâncias pode ter no máximo um FSx para o Lustre e outro FSx para a configuração do OpenZFS. Grupos de instâncias diferentes podem montar sistemas de arquivos diferentes.

   **Adicionar a configuração de VPC (necessária para FSx):**

   Se estiver usando FSx, você deve especificar uma configuração de VPC personalizada:

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           },
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "VpcConfig": {
           "SecurityGroupIds": ["sg-0abc123def456789a"],
           "Subnets": ["subnet-0abc123def456789a"]
       }
   }
   ```

1. Use o seguinte comando para criar o cluster:

   ```
   aws sagemaker create-cluster --cli-input-json {{file://complete/path/to/create_cluster.json}}
   ```

   Isso deve retornar o ARN do cluster criado.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster"
   }
   ```

   Se você receber um erro devido a limites de recurso, altere o tipo de instância para uma com cotas suficientes em sua conta ou solicite cotas adicionais seguindo [SageMaker HyperPod cotas](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

   **Erros comuns de validação:**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

1. Execute `describe-cluster` para verificar o status do cluster.

   ```
   aws sagemaker describe-cluster --cluster-name {{my-hyperpod-cluster}}
   ```

   Exemplo de resposta:

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster",
       "ClusterName": "my-hyperpod-cluster",
       "ClusterStatus": "Creating",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "CreationTime": "2024-01-15T10:30:00Z"
   }
   ```

   Depois que o status do cluster for alterado para **InService**, avance para a próxima etapa. A criação do cluster normalmente leva de 10 a 15 minutos.

1. Execute `list-cluster-nodes` para verificar os detalhes dos nós do cluster.

   ```
   aws sagemaker list-cluster-nodes --cluster-name {{my-hyperpod-cluster}}
   ```

   Exemplo de resposta:

   ```
   {
       "ClusterNodeSummaries": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceId": "i-0abc123def456789a",
               "InstanceType": "ml.c5.xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceId": "i-0abc123def456789b",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceId": "i-0abc123def456789c",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:36:00Z"
           }
       ]
   }
   ```

   `InstanceId`É isso que os usuários do seu cluster precisam para fazer login (`aws ssm`) neles. Para mais informações sobre como fazer login nos nós do cluster e executar workloads de ML, consulte [Trabalhos em SageMaker HyperPod clusters](sagemaker-hyperpod-run-jobs-slurm.md).

1. Conecte-se ao seu cluster usando o Gerenciador de AWS Systems Manager Sessões.

   ```
   aws ssm start-session \
       --target sagemaker-cluster:{{my-hyperpod-cluster}}_{{my-login-group}}-{{i-0abc123def456789b}} \
       --region {{us-west-2}}
   ```

   Depois de conectado, verifique se o Slurm está configurado corretamente:

   ```
   # Check Slurm nodes
   sinfo
   
   # Check Slurm partitions
   sinfo -p partition-1
   
   # Submit a test job
   srun -p partition-1 --nodes=1 hostname
   ```

## Exclua o cluster e limpe os recursos.
<a name="smcluster-getting-started-slurm-cli-delete-cluster-and-clean"></a>

Depois de testar com êxito a criação de um SageMaker HyperPod cluster, ele continua sendo executado no `InService` estado até que você exclua o cluster. Recomendamos que você exclua todos os clusters criados usando a capacidade de SageMaker IA sob demanda quando não estiverem em uso para evitar cobranças de serviço contínuas com base nos preços sob demanda. Neste tutorial, você criou um cluster que consiste em três grupos de instâncias. Certifique-se de excluir o cluster executando o comando a seguir.

```
aws sagemaker delete-cluster --cluster-name {{my-hyperpod-cluster}}
```

Para limpar os scripts de ciclo de vida do bucket do Amazon S3 usados neste tutorial, acesse o bucket do Amazon S3 que você usou durante a criação do cluster e remova completamente os arquivos.

```
aws s3 rm s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}} --recursive
```

Se você testou a execução de qualquer modelo de carga de trabalho de treinamento no cluster, verifique também se você carregou algum dado ou se seu trabalho salvou algum artefato em diferentes buckets do Amazon S3 ou serviços do sistema de arquivos, como Amazon for Lustre e FSx Amazon Elastic File System. Para evitar cobranças, exclua todos os artefatos e dados do armazenamento ou do sistema de arquivos.

## Tópicos relacionados
<a name="smcluster-getting-started-slurm-cli-related-topics"></a>
+ [SageMaker HyperPod Configuração do Slurm](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-configuration)
+ [Personalização de SageMaker HyperPod clusters usando scripts de ciclo de vida](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [FSx configuração via InstanceStorageConfigs](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-fsx-config)
+ [SageMaker HyperPod Operações de cluster do Slurm](sagemaker-hyperpod-operate-slurm.md)