

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

# Como a Amazon SageMaker AI fornece informações de treinamento
<a name="your-algorithms-training-algo-running-container"></a>

Esta seção explica como a SageMaker IA disponibiliza informações de treinamento, como dados de treinamento, hiperparâmetros e outras informações de configuração, para seu contêiner do Docker. 

Ao enviar uma [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)solicitação à SageMaker IA para iniciar o treinamento do modelo, você especifica o caminho do Amazon Elastic Container Registry (Amazon ECR) da imagem do Docker que contém o algoritmo de treinamento. Você também especifica o local do Amazon Simple Storage Service (Amazon S3) onde os dados de treinamento são armazenados e os parâmetros específicos do algoritmo. SageMaker A IA disponibiliza essas informações para o contêiner do Docker para que seu algoritmo de treinamento possa usá-las. Esta seção explica como disponibilizamos essas informações para o seu contêiner do Docker. Para obter informações sobre como criar um trabalho de treinamento, consulte `CreateTrainingJob`. Para obter mais informações sobre como os contêineres de SageMaker IA organizam as informações, consulte[SageMaker Kits de ferramentas de treinamento e inferência](amazon-sagemaker-toolkits.md).

**Topics**
+ [Hiperparâmetros](#your-algorithms-training-algo-running-container-hyperparameters)
+ [Variáveis de ambiente](#your-algorithms-training-algo-running-container-environment-variables)
+ [Configuração dos dados de entrada](#your-algorithms-training-algo-running-container-inputdataconfig)
+ [Dados de treinamento](#your-algorithms-training-algo-running-container-trainingdata)
+ [Configuração do treinamento distribuído](#your-algorithms-training-algo-running-container-dist-training)

## Hiperparâmetros
<a name="your-algorithms-training-algo-running-container-hyperparameters"></a>

 SageMaker A IA disponibiliza os hiperparâmetros em uma `CreateTrainingJob` solicitação no contêiner do Docker no `/opt/ml/input/config/hyperparameters.json` arquivo.

A seguir está um exemplo de uma configuração de hiperparâmetros `hyperparameters.json` para especificar os `eta` hiperparâmetros `num_round` e na `CreateTrainingJob` operação para. [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) 

```
{
    "num_round": "128",
    "eta": "0.001"
}
```

Para obter uma lista completa dos hiperparâmetros que podem ser usados para o XGBoost algoritmo integrado de SageMaker IA, consulte [XGBoostHiperparâmetros](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost_hyperparameters.html).

Os hiperparâmetros que você pode ajustar dependem do algoritmo que você está treinando. Para obter uma lista dos hiperparâmetros disponíveis para um algoritmo integrado de SageMaker IA, encontre-os listados em **Hiperparâmetros** no link do algoritmo em Use [Amazon SageMaker AI Built-in Algorithms or Pre-Trained](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) Models.

## Variáveis de ambiente
<a name="your-algorithms-training-algo-running-container-environment-variables"></a>

SageMaker A IA define as seguintes variáveis de ambiente em seu contêiner:
+ TRAINING\$1JOB\$1NAME: Especificado no parâmetro `TrainingJobName` da solicitação `CreateTrainingJob`.
+ TRAINING\$1JOB\$1ARN o nome do recurso da Amazon (ARN) do trabalho de treinamento retornado como o `TrainingJobArn` na resposta `CreateTrainingJob`.
+ Todas as variáveis de ambiente especificadas no parâmetro de [Ambiente](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#sagemaker-CreateTrainingJob-request-Environment) na solicitação `CreateTrainingJob`.

## Configuração dos dados de entrada
<a name="your-algorithms-training-algo-running-container-inputdataconfig"></a>

SageMaker A IA disponibiliza as informações do canal de dados no `InputDataConfig` parâmetro da sua `CreateTrainingJob` solicitação no `/opt/ml/input/config/inputdataconfig.json` arquivo em seu contêiner do Docker.

Por exemplo, suponha que você especifique três canais de dados (`train``evaluation`, e`validation`) em sua solicitação. SageMaker A IA fornece o seguinte JSON:

```
{
  "train" : {"ContentType":  "trainingContentType",
             "TrainingInputMode": "File",
             "S3DistributionType": "FullyReplicated",
             "RecordWrapperType": "None"},
  "evaluation" : {"ContentType":  "evalContentType",
                  "TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"},
  "validation" : {"TrainingInputMode": "File",
                  "S3DistributionType": "FullyReplicated",
                  "RecordWrapperType": "None"}
}
```

**nota**  
SageMaker A IA fornece somente informações relevantes sobre cada canal de dados (por exemplo, o nome do canal e o tipo de conteúdo) para o contêiner, conforme mostrado no exemplo anterior. `S3DistributionType`será definido como `FullyReplicated` se você especificasse EFS ou FSx Lustre como fontes de dados de entrada.

## Dados de treinamento
<a name="your-algorithms-training-algo-running-container-trainingdata"></a>

O parâmetro `TrainingInputMode` na em `AlgorithmSpecification` na solicitação [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) especifica como o conjunto de dados de treinamento é disponibilizado para seu contêiner. Os seguintes modos de entrada estão disponíveis:
+ **Modo `File`**

  Se você usar o `File` modo como seu `TrainingInputMode` valor, a SageMaker IA definirá os seguintes parâmetros em seu contêiner.
  + O parâmetro `TrainingInputMode` é gravado para o `inputdataconfig.json` como “Arquivo”.
  + O diretório do canal de dados é gravado em `/opt/ml/input/data/channel_name`.

  Se você usa o `File` modo, a SageMaker IA cria um diretório para cada canal. Por exemplo, se você tiver três canais chamados`training`,, e `validation``testing`, a SageMaker AI cria os três diretórios a seguir em seu contêiner do Docker: 
  + `/opt/ml/input/data/training`
  + `/opt/ml/input/data/validation`
  + `/opt/ml/input/data/testing`

  O modo `File` é compatível com as seguintes fontes de dados:
  + Amazon Simple Storage Service (Amazon S3)
  + Amazon Elastic File System (Amazon EFS)
  + Amazon FSx para Lustre
**nota**  
Canais que usam fontes de dados do sistema de arquivos, como Amazon EFS e Amazon, FSx devem usar o `File` modo. Nesse caso, o caminho do diretório fornecido no canal é montado em `/opt/ml/input/data/channel_name`.
+ **Modo `FastFile`**

  Se você usa o `FastFile` modo como seu`TrainingInputNodeParameter`, a SageMaker IA define os seguintes parâmetros em seu contêiner.
  + Semelhante ao modo `File`, no modo `FastFile`, o parâmetro `TrainingInputMode` é gravado para o `inputdataconfig.json` como “Arquivo”.
  + O diretório do canal de dados é gravado em `/opt/ml/input/data/channel_name`.

  O modo `FastFile` é compatível com as seguintes fontes de dados:
  + Amazon S3

  Se você usa o modo `FastFile`, o diretório do canal é montado com permissão somente para leitura.

  Historicamente, o modo `File` precedeu o modo `FastFile`. Para garantir a compatibilidade retroativa, os algoritmos compatíveis com o modo `File` também podem funcionar perfeitamente com o modo `FastFile`, desde que o parâmetro `TrainingInputMode` esteja definido como `File` no `inputdataconfig.json.`.
**nota**  
Os canais que usam o modo `FastFile` devem usar um `S3DataType` do “S3Prefix”.  
O modo `FastFile` apresenta uma visualização de pasta que usa a barra (`/`) como delimitador para agrupar objetos do Amazon S3 em pastas. Os prefixos `S3Uri` não devem corresponder a um nome de pasta parcial. Por exemplo, se um conjunto de dados do Amazon S3 contém `s3://amzn-s3-demo-bucket/train-01/data.csv`, então, nem o `s3://amzn-s3-demo-bucket/train` nem o `s3://amzn-s3-demo-bucket/train-01` são permitidos como prefixos `S3Uri`.  
É recomendável usar uma barra no final para definir um canal correspondente a uma pasta. Por exemplo, o canal `s3://amzn-s3-demo-bucket/train-01/` da pasta `train-01`. Sem a barra final, o canal seria ambíguo se existisse outra pasta `s3://amzn-s3-demo-bucket/train-011/` ou arquivo `s3://amzn-s3-demo-bucket/train-01.txt/`.
+ **Modo `Pipe`**
  + Parâmetro `TrainingInputMode`escrito em `inputdataconfig.json`: “Pipe”
  + Diretório do canal de dados no contêiner do Docker: `/opt/ml/input/data/channel_name_epoch_number`
  + Fontes de dados compatíveis: Amazon S3

  Você precisa ler em um pipe separado para cada canal. Por exemplo, se você tiver três canais denominados `training`, `validation` e `testing`, precisará fazer a leitura dos seguintes pipes:
  + `/opt/ml/input/data/training_0, /opt/ml/input/data/training_1, ...`
  + `/opt/ml/input/data/validation_0, /opt/ml/input/data/validation_1, ...`
  + `/opt/ml/input/data/testing_0, /opt/ml/input/data/testing_1, ...`

  Leia os pipes sequencialmente. Por exemplo, se você tiver um canal denominado `training`, leia os pipes nesta sequência: 

  1. Abra `/opt/ml/input/data/training_0` no modo de leitura e leia para end-of-file (EOF) ou, se você tiver terminado com a primeira época, feche o arquivo pipe mais cedo. 

  1. Depois de fechar o primeiro arquivo pipe, procure `/opt/ml/input/data/training_1` e leia-o até que você tenha concluído o segundo epoch e assim por diante.

  Se o arquivo de um determinado epoch ainda não existir, pode ser que o código precise tentar novamente até que o pipe seja criado. Não há restrição de sequenciamento nos tipos de canais. Ou seja, é possível ler vários epochs para o canal `training` e apenas começar a ler o canal `validation` somente quando você estiver pronto. Alternativamente, será possível lê-los simultaneamente se o algoritmo assim exigir.

  Para ver um exemplo de um notebook Jupyter que mostra como usar o modo Pipe ao trazer seu próprio contêiner, consulte [Traga seu próprio algoritmo de modo de tubulação](https://github.com/aws/amazon-sagemaker-examples/blob/main/advanced_functionality/pipe_bring_your_own/pipe_bring_your_own.ipynb) para a Amazon AI. SageMaker 

  

SageMaker O treinamento do modelo de IA oferece suporte a buckets de diretório S3 Express One Zone de alto desempenho como um local de entrada de dados para o modo de arquivo, modo de arquivo rápido e modo pipe. Para usar o S3 Express One Zone, insira a localização do bucket de diretório do S3 Express One Zone em vez de um bucket de uso geral do Amazon S3. Forneça o ARN para o perfil do IAM com o controle de acesso e a política de permissões necessários. Para mais detalhes, consulte [AmazonSageMakerFullAccesspolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html). Você só pode criptografar seus dados de saída de SageMaker IA em buckets de diretório com criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3). Atualmente, a criptografia do lado do servidor com AWS KMS chaves (SSE-KMS) não é suportada para armazenar dados de saída de SageMaker IA em buckets de diretório. Para obter mais informações, consulte [S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html).

## Configuração do treinamento distribuído
<a name="your-algorithms-training-algo-running-container-dist-training"></a>

Se você estiver realizando um treinamento distribuído com vários contêineres, a SageMaker IA disponibiliza informações sobre todos os contêineres no `/opt/ml/input/config/resourceconfig.json` arquivo.

Para permitir a comunicação entre contêineres, esse arquivo JSON contém informações de todos os contêineres. SageMaker A IA disponibiliza esse arquivo para algoritmos `File` de ambos os `Pipe` modos. O arquivo fornece as seguintes informações:
+ `current_host`: o nome do contêiner atual na rede de contêineres. Por exemplo, .`algo-1` Os valores de host podem ser alterados a qualquer momento. Não escreva código com valores específicos para essa variável.
+ `hosts`: a lista de nomes de todos os contêineres da rede de contêineres, classificados lexicograficamente. Por exemplo, `["algo-1", "algo-2", "algo-3"]` para um cluster de três nós. Os contêineres podem usar esses nomes para tratar outros contêineres da rede. Os valores de host podem ser alterados a qualquer momento. Não escreva código com valores específicos para essas variáveis.
+ `network_interface_name`: o nome da interface de rede exposta ao seu contêiner. Por exemplo, os contêineres que executam Message Passing Interface (MPI) podem usar essas informações para definir o nome da interface de rede.
+ Não use as informações em `/etc/hostname` ou `/etc/hosts` porque elas podem ser imprecisas.
+ Informações do nome de host podem não estar imediatamente disponíveis para o contêiner do algoritmo. Recomendamos adicionar uma política de nova tentativa em operações de resolução de nomes de host à medida que os nós se tornarem disponíveis no cluster.

Veja a seguir um exemplo de arquivo no nó 1 em um cluster de três nós:

```
{
    "current_host": "algo-1",
    "hosts": ["algo-1","algo-2","algo-3"],
    "network_interface_name":"eth1"
}
```