Fornecer metadados de conjunto de dados para trabalhos de treinamento com um arquivo de Manifesto aumentado - 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á.

Fornecer metadados de conjunto de dados para trabalhos de treinamento com um arquivo de Manifesto aumentado

Para incluir metadados com seu conjunto de dados em um trabalho de treinamento, use um arquivo manifesto aumentado. Quando usar um arquivo manifesto aumentado, seu conjunto de dados deve ser armazenado no Amazon Simple Storage Service (Amazon S3) e você deve configurar seu trabalho de treinamento para usar o conjunto de dados armazenado nele. Especifique a localização e o formato desse conjunto de dados para um ou mais Channel. Os manifestos aumentados só oferecem suporte ao modo de entrada Pipe. Consulte a seção, InputModeem Channelpara saber mais sobre o modo de entrada de tubulação.

Ao especificar os parâmetros de um canal, você especifica um caminho para o arquivo, denominado S3Uri. A Amazon SageMaker interpreta esse URI com base no especificado S3DataType em S3DataSource. A opção AugmentedManifestFile define um formato de manifesto que inclui metadados com os dados de entrada. Usar um arquivo manifesto aumentado é uma alternativa ao pré-processamento quando você rotula dados. Para treinar trabalhos usando dados rotulados, você normalmente precisa pré-processar o conjunto de dados para combinar dados de entrada com metadados antes do treinamento. Se o conjunto de dados de treinamento for grande, o pré-processamento poderá ser demorado e caro.

Formato de arquivo manifesto aumentado

Um arquivo manifesto aumentado deve ser formatado em JSON Lines. No formato JSON Lines, cada linha no arquivo é um objeto JSON completo seguido por um separador de nova linha.

Durante o treinamento, SageMaker analisa cada linha JSON e envia alguns ou todos os seus atributos para o algoritmo de treinamento. Você especifica qual conteúdo de atributo deve ser transmitido e a ordem de transmissão com o parâmetro AttributeNames da API CreateTrainingJob. O AttributeNames parâmetro é uma lista ordenada de nomes de atributos que SageMaker procura no objeto JSON para usar como entrada de treinamento.

Por exemplo, se você listar ["line", "book"] para AttributeNames, os dados de entrada deverão incluir os nomes de atributos line e book na ordem especificada. Para este exemplo, o seguinte conteúdo do arquivo manifesto aumentado é válido:

{"author": "Herman Melville", "line": "Call me Ishmael", "book": "Moby Dick"} {"line": "It was love at first sight.", "author": "Joseph Heller", "book": "Catch-22"}

SageMaker ignora nomes de atributos não listados, mesmo que eles precedam, sigam ou estejam entre os atributos listados.

Ao usar arquivos manifestos aumentados, observe as seguintes diretrizes:

  • A ordem dos atributos listados no parâmetro AttributeNames determina a ordem dos atributos transmitidos ao algoritmo no trabalho de treinamento.

  • A lista AttributeNames pode ser um subconjunto de todos os atributos na linha JSON. SageMaker ignora atributos não listados no arquivo.

  • Você pode especificar qualquer tipo de dado permitido pelo formato JSON no AttributeNames, incluindo texto, numérico, matrizes de dados ou objetos.

  • Para incluir um URI do S3 como um nome de atributo, adicione o sufixo -ref a ele.

Se um nome de atributo contiver o sufixo -ref, o valor do atributo deverá ser um URI do S3 para um arquivo de dados acessível ao trabalho de treinamento. Por exemplo, se AttributeNames contiver ["image-ref", "is-a-cat"], o exemplo a seguir mostra um arquivo de manifesto aumentado válido:

{"image-ref": "s3://mybucket/sample01/image1.jpg", "is-a-cat": 1} {"image-ref": "s3://mybucket/sample02/image2.jpg", "is-a-cat": 0}

No caso da primeira linha JSON desse arquivo de manifesto, SageMaker recupera o image1.jpg arquivo s3://mybucket/sample01/ e a representação em cadeia de caracteres do is-a-cat atributo "1" para classificação da imagem.

dica

Para criar um arquivo de manifesto aumentado, use o Amazon SageMaker Ground Truth e crie um trabalho de rotulagem. Para obter mais informações sobre o resultado de um trabalho de rotulagem, consulte Dados de saída.

Streaming de dados de arquivos de manifesto aumentado

O formato de manifesto aumentado permite que você faça treinamentos no modo Pipe usando arquivos de imagem, sem precisar criar arquivos RecordIO. Você precisa especificar ambos os canais de treinamento e de validação como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Arquivos manifestos aumentados são compatíveis apenas para canais que usam o modo de entrada Pipe. Para cada canal, os dados são extraídos de seu arquivo manifesto aumentado e transmitidos (em ordem) ao algoritmo por meio do Pipe nomeado do canal. O modo Pipe usa o método FIFO (o primeiro a entrar é o primeiro a sair) e, portanto, os registros são processados na ordem em que estão enfileirados. Para obter informações sobre o modo de entrada Pipe, consulte Input Mode.

Nomes de atributos com um sufixo "-ref" apontam para dados binários pré-formatados. Em alguns casos, o algoritmo sabe como analisar os dados. Em outros casos, pode ser necessário encapsular os dados para que os registros sejam delimitados pelo algoritmo. Se o algoritmo for compatível com dados formatados em RecordIO, especificar RecordIO para RecordWrapperType resolverá esse problema. Se o algoritmo for incompatível com o formato RecordIO, especifique None para RecordWrapperType e certifique-se de que seus dados sejam analisados corretamente para o seu algoritmo.

Usando o exemplo ["image-ref", "is-a-cat"], se você usar o encapsulamento de RecordIO, o seguinte fluxo de dados será enviado à fila:

recordio_formatted(s3://mybucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://mybucket/bar/image2.jpg)recordio_formatted("0")

Imagens que não forem encapsuladas com o formato RecordIO serão transmitidas com o valor de atributo is-a-cat correspondente como um único registro. Isso pode causar um problema, pois o algoritmo pode não delimitar corretamente as imagens e os atributos. Para obter mais informações sobre o uso de arquivos manifesto aumentados para classificação de imagens, consulte Treinar com o formato de imagem de manifesto aumentado.

Em geral, com o modo Pipe e os arquivos de manifesto aumentado, os limites de tamanho de volumes do EBS não se aplicam. Isso inclui configurações que, de outra forma, devem estar dentro do limite de tamanho do volume do EBS, como S3DataDistributionType . Para obter mais informações sobre o modo Pipe e como usá-lo, consulte Usar seus próprios algoritmos de treinamento - Configuração de dados de entrada.

Usar um arquivo de manifesto aumentado (console)

Para concluir este procedimento, você precisa:

  • Da URL do bucket do S3 onde armazenou o arquivo manifesto aumentado.

  • Armazenar os dados listados no arquivo manifesto aumentado em um bucket do S3.

  • O URL do bucket do S3 no qual o resultado do trabalho deve ser armazenado.

Usar um arquivo manifesto aumentado em um trabalho de treinamento (console)
  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação, escolha Treinamento e Trabalhos de treinamento.

  3. Escolha Criar trabalho de treinamento.

  4. Forneça um nome para o trabalho de treinamento. O nome deve ser exclusivo dentro de uma AWS região em uma AWS conta. Ele pode ter de 1 a 63 caracteres. Caracteres válidos: a-z, A-Z, 0-9 e . : + = @ _ % - (hífen).

  5. Escolha o algoritmo que você deseja usar. Para obter informações sobre algoritmos integrados com suporte, consulte Use algoritmos SageMaker integrados da Amazon ou modelos pré-treinados. Se quiser usar um algoritmo personalizado, verifique se ele é compatível com o modo Pipe.

  6. (Opcional) Em Configuração de recursos, aceite os valores padrão ou, para reduzir o tempo de computação, aumente o consumo de recursos.

    1. (Opcional) Em Tipo de instância, escolha o tipo de instância de computação de ML que você deseja usar. Na maioria dos casos, ml.m4.xlarge é suficiente.

    2. Para Contagem de instâncias, use o padrão, 1.

    3. (Opcional) Em Volume adicional por instância (GB), escolha o tamanho do volume de armazenamento de ML que você deseja provisionar. Na maioria dos casos, você pode usar o padrão, 1. Se estiver usando um conjunto de dados grande, use um tamanho maior.

  7. Forneça informações sobre os dados de entrada para o conjunto de dados de treinamento.

    1. Em Nome do canal, aceite o padrão (train) ou insira um nome mais significativo, como training-augmented-manifest-file.

    2. Para InputMode, escolha Pipe.

    3. Para o tipo de distribuição de dados S3, escolha FullyReplicated. Quando o treinamento é incremental, a replicação completa faz com que cada instância de computação de ML use uma cópia completa do conjunto de dados expandido. Para algoritmos baseados em neural, como Algoritmo de Modelo de tópicos neurais (NTM), escolha ShardedByS3Key.

    4. Se os dados especificados no arquivo manifesto aumentado estiverem descompactados, defina o Tipo de compressão como Nenhum. Se os dados estiverem compactados usando gzip, defina-os como Gzip.

    5. (Opcional) Em Tipo de conteúdo, especifique o tipo MIME apropriado. O Tipo de conteúdo é o tipo MIME (Multipurpose Internet Mail Extension) dos dados.

    6. Para Wrapper de registro, se o conjunto de dados especificado no arquivo manifesto aumentado for salvo no formato RecordIO, escolha RecordIO. Se o seu conjunto de dados não estiver salvo como um arquivo formatado com RecordIO, escolha Nenhum.

    7. Para o tipo de dados S3, escolha AugmentedManifestFile.

    8. Para Localização do S3, forneça o caminho para o bucket onde você armazenou o arquivo manifesto aumentado.

    9. Para nomes de AugmentedManifestFile atributos, especifique o nome de um atributo que você deseja usar. O nome do atributo deve estar presente no arquivo manifesto aumentado e faz distinção entre maiúsculas e minúsculas.

    10. (Opcional) Para adicionar mais nomes de atributos, escolha Adicionar linha e especifique outro nome de atributo para cada atributo.

    11. (Opcional) Para ajustar a ordem dos nomes de atributos, escolha os botões para cima ou para baixo ao lado dos nomes. Ao usar um arquivo manifesto aumentado, a ordem dos nomes de atributos especificados é importante.

    12. Escolha Concluído.

  8. Para Configuração dos dados de saída, forneça as seguintes informações:

    1. Para Localização do S3, digite o caminho para o bucket do S3 no qual você deseja armazenar os dados de saída.

    2. (Opcional) Você pode usar sua chave de criptografia AWS Key Management Service (AWS KMS) para criptografar os dados de saída em repouso. Para Chave de criptografia, forneça o ID da chave ou seu número de recurso da Amazon (ARN). Para obter mais informações, consulte Chaves de criptografia gerenciadas por KMS.

  9. (Opcional) Para Tags, adicione uma ou mais tags ao trabalho de treinamento. Uma tag é um metadado que você pode definir e atribuir a recursos AWS . Nesse caso, você pode usar tags para ajudá-lo a gerenciar seus trabalhos de treinamento. Uma tag consiste em uma chave e um valor que você define. Por exemplo, você pode querer criar uma tag com Project como uma chave e um valor que faça referência a um projeto relacionado ao trabalho de treinamento, como Home value forecasts.

  10. Escolha Criar trabalho de treinamento. SageMaker cria e executa o trabalho de treinamento.

Após a conclusão do trabalho de treinamento, SageMaker armazena os artefatos do modelo no bucket cujo caminho você forneceu para o caminho de saída do S3 no campo Configuração de dados de saída. Para implantar o modelo e obter previsões, consulte Etapa 5: Implantar o modelo do Amazon EC2.

Usar um arquivo manifesto aumentado (API)

Veja a seguir como treinar um modelo com um arquivo de manifesto aumentado usando a biblioteca SageMaker Python de alto nível:

import sagemaker # Create a model object set to using "Pipe" mode. model = sagemaker.estimator.Estimator( training_image, role, instance_count=1, instance_type='ml.p3.2xlarge', volume_size = 50, max_run = 360000, input_mode = 'Pipe', output_path=s3_output_location, sagemaker_session=session ) # Create a train data channel with S3_data_type as 'AugmentedManifestFile' and attribute names. train_data = sagemaker.inputs.TrainingInput( your_augmented_manifest_file, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='AugmentedManifestFile', attribute_names=['source-ref', 'annotations'], input_mode='Pipe', record_wrapping='RecordIO' ) data_channels = {'train': train_data} # Train a model. model.fit(inputs=data_channels, logs=True)

Após a conclusão do trabalho de treinamento, SageMaker armazena os artefatos do modelo no bucket cujo caminho você forneceu para o caminho de saída do S3 no campo Configuração de dados de saída. Para implantar o modelo e obter previsões, consulte Etapa 5: Implantar o modelo do Amazon EC2.