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 fornece informações de treinamento
Esta seção explica como SageMaker disponibilizar informações de treinamento, como dados de treinamento, hiperparâmetros e outras informações de configuração, para seu contêiner Docker.
Ao enviar uma CreateTrainingJob
solicitação SageMaker para iniciar o treinamento do modelo, você especifica o caminho do Amazon Elastic Container Registry (AmazonECR) 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 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 SageMaker contêineres organizam as informações, consulteSageMaker Kits de ferramentas de treinamento e inferência.
Tópicos
Hiperparâmetros
SageMaker 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
{ "num_round": "128", "eta": "0.001" }
Para obter uma lista completa dos hiperparâmetros que podem ser usados para o XGBoost algoritmo SageMaker incorporado, consulte XGBoostHiperparâmetros.
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 SageMaker integrado, encontre-os listados em Hiperparâmetros no link do algoritmo em Use Amazon SageMaker Built-in Algorithms or Pre-training Models.
Variáveis de ambiente
SageMaker define as seguintes variáveis de ambiente em seu contêiner:
-
TRAINING_ JOB _ NAME — Especificado no
TrainingJobName
parâmetro daCreateTrainingJob
solicitação. -
TRAINING_ JOB _ ARN — O Amazon Resource Name (ARN) do trabalho de treinamento retornado como
TrainingJobArn
naCreateTrainingJob
resposta. -
Todas as variáveis de ambiente especificadas no parâmetro de Ambiente na solicitação
CreateTrainingJob
.
Configuração dos dados de entrada
SageMaker 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
, evalidation
) em sua solicitação. SageMakerfornece o seguinteJSON:
{ "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 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ão definidas como FullyReplicated
se você especificasse EFS ou FSxLustre como fontes de dados de entrada.
Dados de treinamento
O parâmetro TrainingInputMode
na CreateTrainingJob
solicitação especifica como o conjunto AlgorithmSpecification
de dados de treinamento é disponibilizado para seu contêiner. Os seguintes modos de entrada estão disponíveis:
-
Modo
File
Se você usar
File
mode como seuTrainingInputMode
valor, SageMaker defina os seguintes parâmetros em seu contêiner.-
O parâmetro
TrainingInputMode
é gravado para oinputdataconfig.json
como “Arquivo”. -
O diretório do canal de dados é gravado em
/opt/ml/input/data/
.channel_name
Se você usa o
File
modo, SageMaker cria um diretório para cada canal. Por exemplo, se você tiver três canais chamadostraining
,, evalidation
testing
, SageMaker crie 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 (AmazonEFS)
-
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ê usar o
FastFile
modo como seuTrainingInputNodeParameter
, SageMaker defina os seguintes parâmetros em seu contêiner.-
Semelhante ao modo
File
, no modoFastFile
, o parâmetroTrainingInputMode
é gravado para oinputdataconfig.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 modoFastFile
. Para garantir a compatibilidade retroativa, os algoritmos compatíveis com o modoFile
também podem funcionar perfeitamente com o modoFastFile
, desde que o parâmetroTrainingInputMode
esteja definido comoFile
noinputdataconfig.json.
.nota
Os canais que usam o modo
FastFile
devem usar umS3DataType
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 prefixosS3Uri
não devem corresponder a um nome de pasta parcial. Por exemplo, se um conjunto de dados do Amazon S3 contéms3://amzn-s3-demo-bucket/train-01/data.csv
, então, nem os3://amzn-s3-demo-bucket/train
nem os3://amzn-s3-demo-bucket/train-01
são permitidos como prefixosS3Uri
.É 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 pastatrain-01
. Sem a barra final, o canal seria ambíguo se existisse outra pastas3://amzn-s3-demo-bucket/train-011/
ou arquivos3://amzn-s3-demo-bucket/train-01.txt/
. -
-
Modo
Pipe
-
Parâmetro
TrainingInputMode
escrito eminputdataconfig.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
etesting
, 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:-
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. -
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 canalvalidation
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
para a Amazon. SageMaker -
SageMaker o treinamento de modelos 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 ARN para a IAM função o controle de acesso e a política de permissões necessários. Para mais detalhes, consulte AmazonSageMakerFullAccesspolicy. Você só pode criptografar seus dados de SageMaker saída em buckets de diretório com criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (-S3). SSE Atualmente, a criptografia do lado do servidor com AWS KMS chaves (SSE-KMS) não é suportada para armazenar dados de SageMaker saída em compartimentos de diretório. Para obter mais informações, consulte S3 Express One Zone.
Configuração do treinamento distribuído
Se você estiver realizando um treinamento distribuído com vários contêineres, SageMaker disponibiliza as informações sobre todos os contêineres no /opt/ml/input/config/resourceconfig.json
arquivo.
Para habilitar a comunicação entre contêineres, esse JSON arquivo contém informações de todos os contêineres. SageMaker disponibiliza esse arquivo para ambos os algoritmos File
e para Pipe
o modo. 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, contêineres que executam a Interface de Passagem de Mensagens (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" }