Fornitura dei metadati dei set di dati ai processi di addestramento con un file manifest aumentato - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fornitura dei metadati dei set di dati ai processi di addestramento con un file manifest aumentato

Per includere i metadati con il set di dati in un processo di addestramento, utilizza un file manifest aumentato. Quando utilizzi un file manifest aumentato, il set di dati deve essere archiviato in Amazon Simple Storage Service (Amazon S3) e devi configurare il processo di addestramento per l'utilizzo di questo set di dati. Puoi specificare il percorso e il formato di questo set di dati per uno o più Channel. I manifest aumentati possono supportare solo la modalità di input Pipe. Vedi la sezione, InputModein Channelper saperne di più sulla modalità di input pipe.

Quando specifichi i parametri di un canale, devi specificare un percorso per il file, denominato S3Uri. Amazon SageMaker interpreta questo URI in base a quanto specificato S3DataType in S3DataSource. L'opzione AugmentedManifestFile definisce un formato manifest che include i metadati con i dati di input. L'utilizzo di un file manifest aumentato è un'alternativa alla pre-elaborazione quando si hanno dati etichettati. Per i processi di addestramento che utilizzano dati etichettati, in genere devi pre-elaborare il set di dati per combinare i dati di input con i metadati prima dell’addestramento. Se il set di dati di addestramento è di grandi dimensioni, la pre-elaborazione può essere lunga e costosa.

Formato del file manifest aumentato

Un file manifest aumentato deve essere formattato con un formato JSON Lines. Nel formato JSON Lines, ogni riga del file è un oggetto JSON completo seguito da un separatore di nuova riga.

Durante l'allenamento, SageMaker analizza ogni riga JSON e invia alcuni o tutti i suoi attributi all'algoritmo di addestramento. Puoi specificare i contenuti degli attributi da passare e l'ordine con cui passarli con il parametro AttributeNames dell'API CreateTrainingJob. Il AttributeNames parametro è un elenco ordinato di nomi di attributi che viene cercato SageMaker nell'oggetto JSON da utilizzare come input di addestramento.

Ad esempio, se specifichi ["line", "book"] per AttributeNames, i dati di input devono includere i nomi attributo di line e book nell'ordine specificato. Per questo esempio, è valido il contenuto del file manifest aumentato seguente:

{"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 i nomi degli attributi non elencati anche se precedono, seguono o si trovano tra gli attributi elencati.

Quando utilizzi i file manifest aumentati, osserva le seguenti indicazioni:

  • L'ordine degli attributi elencati nel parametro AttributeNames determina l'ordine degli attributi passati all'algoritmo nel processo di addestramento.

  • L'elenco AttributeNames può essere un sottoinsieme di tutti gli attributi nella riga JSON. SageMaker ignora gli attributi non elencati nel file.

  • Puoi specificare qualsiasi tipo di dati consentito dal formato JSON in AttributeNames, inclusi testo, numeri, array di dati o oggetti.

  • Per includere un URI S3 come nome attributo, aggiungi il suffisso -ref.

Se un nome attributo contiene il suffisso -ref, il valore dell'attributo deve essere un URI S3 per un file di dati accessibile al processo di addestramento. Ad esempio, se AttributeNames contiene ["image-ref", "is-a-cat"], l'esempio seguente mostra un file manifest aumentato valido:

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

Nel caso della prima riga JSON di questo file manifest, SageMaker recupera il file s3://mybucket/sample01/ e la rappresentazione in image1.jpg formato stringa dell'is-a-catattributo "1" per la classificazione delle immagini.

Suggerimento

Per creare un file manifesto aumentato, usa Amazon SageMaker Ground Truth e crea un processo di etichettatura. Per ulteriori informazioni sull'output di un processo di etichettatura, consulta Dati di output.

Streaming dei dati dei file manifest aumentati

Il formato di manifest aumentato ti consente di eseguire l’addestramento in modalità Pipe usando i file senza dover creare file RecordIO. È necessario specificare i canali di addestramento e di convalida come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. I file manifest aumentati sono supportati solo per i canali che utilizzano la modalità di input Pipe. Per ogni canale, i dati vengono estratti dal relativo file manifest aumentato e trasmessi (in ordine) all'algoritmo attraverso la named pipe del canale. La modalità Pipe utilizza il metodo FIFO (first-in-first-out), quindi i record vengono elaborati nell'ordine di accodamento. Per informazioni sulla modalità di input Pipe, consulta Input Mode.

I nomi degli attributi con un suffisso "-ref" puntano a dati binari preformattati. In alcuni casi, l'algoritmo sa come analizzare i dati. In altri casi, può essere necessario organizzare i dati in modo che i record vengano delimitati per l'algoritmo. Se l'algoritmo è compatibile con i dati in formato RecordIO, se specifichi RecordIO per RecordWrapperType il problema viene risolto. Se l'algoritmo non è compatibile con il formato RecordIO, specifica None per RecordWrapperType e verifica che i dati vengano analizzati in modo corretto per l'algoritmo.

Se utilizzi l'esempio ["image-ref", "is-a-cat"] e il wrapping RecordIO, il seguente flusso di dati viene inviato alla coda:

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

Se alle immagini non è applicato il formato RecordIO, vengono trasmesse come singolo record con il valore dell'attributo is-a-cat corrispondente. Questo può causare un problema perché l'algoritmo potrebbe non delimitare correttamente le immagini e gli attributi. Per ulteriori informazioni sull'utilizzo dei file manifest aumentati per la classificazione delle immagini, consulta Addestramento con il formato di immagine manifest aumentato.

Con i file manifest aumentati e la modalità Pipe in generale, i limiti delle dimensioni del volume EBS non si applicano. Ciò include le impostazioni che devono altrimenti essere comprese nei limiti delle dimensioni del volume EBS, come S3DataDistributionType . Per ulteriori informazioni sulla modalità Pipe e su come utilizzarla, consulta Utilizzo degli algoritmi di addestramento personalizzati - Configurazione dei dati di input.

Utilizzo di un file manifest aumentato (console)

Per completare questa procedura, avrai bisogno di:

  • L'URL del bucket S3 dove hai archiviato il file manifest aumentato.

  • Archiviare i dati elencati nel file manifest aumentato in un bucket S3.

  • L'URL del bucket S3 dove desideri archiviare l'output del processo.

Per utilizzare un file manifest aumentato in un processo di addestramento (console)
  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione, scegliere Addestramento, quindi Processi di addestramento.

  3. Scegliere Crea processo di addestramento.

  4. Fornire un nome per il processo di addestramento. Il nome deve essere univoco all'interno di una AWS regione di un AWS account. Può contenere da 1 a 63 caratteri. I caratteri validi sono a-z, A-Z, 0-9 e . : + = @ _ % - (trattino).

  5. Scegliere l'algoritmo da utilizzare. Per informazioni sugli algoritmi integrati supportati, consulta Usa algoritmi SageMaker integrati o modelli preaddestrati di Amazon. Per utilizzare un algoritmo personalizzato, verificare che sia compatibile con la modalità Pipe.

  6. (Facoltativo) Per Resource configuration (Configurazione delle risorse), accettare i valori predefiniti oppure, per ridurre il tempo di calcolo, aumentare l'utilizzo delle risorse.

    1. (Facoltativo) Per Tipo di istanza, scegliere il tipo di istanza di calcolo ML da utilizzare. Nella maggior parte dei casi, ml.m4.xlarge è sufficiente.

    2. Per Instance count (Conteggio istanze), utilizzare l'impostazione predefinita 1.

    3. (Facoltativo) Per Volume aggiuntivo per istanza in GB, scegliere le dimensioni del volume di storage ML da assegnare. Nella maggior parte dei casi, è possibile utilizzare l'impostazione predefinita 1. Se si utilizza un set di dati più grande, scegliere una dimensione maggiore.

  7. Fornire informazioni sui dati di input per il set di dati di addestramento.

    1. Per Channel name (Nome canale), accettare l'impostazione predefinita (train) oppure inserire un nome più significativo, ad esempio training-augmented-manifest-file.

    2. Per InputMode, scegli Pipe.

    3. Per il tipo di distribuzione dei dati S3, scegli FullyReplicated. Se si esegue l’addestramento incrementale, la replica completa comporta che ogni istanza di calcolo ML utilizza una copia completa del set di dati espanso. Per gli algoritmi basati su reti neurali, ad esempio Algoritmo Modello neurale di argomenti (NTM), scegliere ShardedByS3Key.

    4. Se i dati specificati nel file manifest aumentato non sono compressi, impostare Compression type (Tipo di compressione) su None (Nessuno). Se i dati sono stati compressi con gzip, impostarli Gzip.

    5. (Facoltativo) Per Content type (Tipo di contenuti), specificare il tipo MIME appropriato. Il tipo di contenuto corrisponde al tipo di dati Multipurpose Internet Mail Extensions (MIME).

    6. Per Record wrapper (Wrapper dei record), se il set di dati specificato nel file manifest aumentato viene salvato in formato RecordIO, scegliere RecordIO. Se il set di dati non viene salvato come file in formato RecordIO, scegliere None (Nessuno).

    7. Per il tipo di dati S3, scegli. AugmentedManifestFile

    8. Per S3 location (Percorso S3), fornire il percorso del bucket dove è archiviato il file manifest aumentato.

    9. Per i nomi AugmentedManifestFile degli attributi, specifica il nome di un attributo che desideri utilizzare. Il nome attributo deve essere presente all'interno del file manifest aumentato e prevede una distinzione tra lettere maiuscole e minuscole.

    10. (Facoltativo) Per aggiungere più nomi attributo, scegliere Add row (Aggiungi riga) e specificare un altro nome per ogni attributo.

    11. (Facoltativo) Per regolare l'ordine dei nomi attributo, scegliere i pulsanti SU e GIÙ accanto ai nomi. Quando si utilizza un file manifest aumentato, l'ordine dei nomi attributo specificato è importante.

    12. Seleziona Fatto.

  8. Per Configurazione dei dati di output, specificare le seguenti informazioni:

    1. Per Percorso S3, digitare il percorso del bucket S3 in cui archiviare i dati di output.

    2. (Facoltativo) È possibile utilizzare la chiave di crittografia AWS Key Management Service (AWS KMS) per crittografare i dati di output inattivi. Per Encryption key (Chiave di crittografia) fornire l'ID della chiave o l'Amazon Resource Number (ARN). Per ulteriori informazioni, consulta KMS-Managed Encryption Keys.

  9. (Facoltativo) Per Tag, aggiungere uno o più tag per gestire il processo di addestramento. Un tag è costituito da metadati che è possibile definire e assegnare alle risorse AWS . In questo caso, è possibile utilizzare i tag per semplificare la gestione dei processi di addestramento. Un tag è composto da una chiave e da un valore definiti dall'utente. Ad esempio, è possibile creare un tag con Project come chiave e un valore che si riferisce a un progetto correlato al processo di addestramento, ad esempio Home value forecasts.

  10. Scegli Crea un lavoro di formazione. SageMaker crea e gestisce il processo di formazione.

Al termine del processo di formazione, SageMaker memorizza gli artefatti del modello nel bucket il cui percorso è stato fornito per il percorso di output S3 nel campo di configurazione dei dati di output. Per distribuire il modello per ottenere le previsioni, consulta Fase 5: distribuire il modello in Amazon EC2.

Utilizzo di un file manifest aumentato (API)

Quanto segue mostra come addestrare un modello con un file manifest aumentato utilizzando la libreria SageMaker Python di alto livello:

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)

Al termine del processo di formazione, SageMaker memorizza gli artefatti del modello nel bucket il cui percorso è stato fornito per il percorso di output S3 nel campo di configurazione dei dati di output. Per distribuire il modello per ottenere le previsioni, consulta Fase 5: distribuire il modello in Amazon EC2.