Fournir des métadonnées d'ensembles de données à des tâches d'entraînement avec un fichier manifeste augmenté - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fournir des métadonnées d'ensembles de données à des tâches d'entraînement avec un fichier manifeste augmenté

Pour inclure des métadonnées avec votre jeu de données dans une tâche d'entraînement, utilisez un fichier manifeste augmenté. Lorsque vous utilisez un fichier manifeste augmenté, votre jeu de données doit être stocké dans Amazon Simple Storage Service (Amazon S3), et vous devez configurer votre tâche d'entraînement de sorte à utiliser le jeu de données ainsi stocké. Spécifiez l'emplacement et le format de cet ensemble de données pour un ou plusieurs Channel. Les manifestes augmentés ne peuvent prendre en charge que le mode d'entrée Pipe. Consultez la section ci-dessous Channelpour InputModeen savoir plus sur le mode d'entrée pipe.

Lorsque vous spécifiez les paramètres d'un canal, vous indiquez un chemin d'accès au fichier, appelé S3Uri. Amazon SageMaker interprète cet URI en fonction de ce qui est spécifié S3DataType dans S3DataSource. L'option AugmentedManifestFile définit un format de manifeste qui inclut les métadonnées avec les données d'entrée. L'utilisation d'un fichier manifeste augmenté constitue une solution équivalente au prétraitement lorsque vous avez des données étiquetées. Pour les tâches d'entraînement qui utilisent des données étiquetées, il convient généralement de prétraiter le jeu de données pour combiner les données d'entrée et les métadonnées avant l'entraînement. Si votre jeu de données de formation est volumineux, le prétraitement peut s'avérer long et onéreux.

Format de fichier manifeste augmenté

Un fichier manifeste augmenté doit être au format JSON Lines. Dans ce format, chaque ligne du fichier correspond à un objet JSON complet suivi d'un séparateur de saut ligne.

Pendant l'entraînement, SageMaker analyse chaque ligne JSON et envoie une partie ou la totalité de ses attributs à l'algorithme d'entraînement. Vous devez spécifier les contenus d'attributs à transmettre et l'ordre dans lequel les transmettre avec le paramètre AttributeNames de l'API CreateTrainingJob. Le AttributeNames paramètre est une liste ordonnée de noms d'attributs qui SageMaker sont recherchés dans l'objet JSON à utiliser comme entrée d'apprentissage.

Par exemple, si vous référencez ["line", "book"] pour AttributeNames, les données d'entrée doivent inclure les noms d'attribut de line et de book dans l'ordre spécifié. Pour cet exemple, le contenu du fichier manifeste augmenté suivant est valide :

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

SageMaker ignore les noms d'attributs non répertoriés, même s'ils précèdent, suivent ou se situent entre les attributs listés.

Lorsque vous utilisez des fichiers manifestes augmentés, respectez les instructions suivantes :

  • L'ordre des attributs répertoriés dans le paramètre AttributeNames détermine l'ordre des attributs transmis à l'algorithme dans la tâche d'entraînement.

  • La liste AttributeNames peut être un sous-ensemble de tous les attributs de la ligne JSON. SageMaker ignore les attributs non répertoriés dans le fichier.

  • Vous pouvez spécifier n'importe quel type de données autorisées par le format JSON dans AttributeNames, y compris des données numériques, du texte, des tableaux ou des objets.

  • Pour inclure un URI S3 comme un nom d'attribut, ajoutez-lui le suffixe -ref.

Si un nom d'attribut contient le suffixe -ref, la valeur de l'attribut doit être un URI S3 vers un fichier de données qui est accessible à la tâche d'entraînement. Par exemple, si AttributeNames contient ["image-ref", "is-a-cat"], l'exemple suivant illustre un fichier manifeste augmenté valide :

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

Dans le cas de la première ligne JSON de ce fichier manifeste, SageMaker extrait le image1.jpg fichier s3://mybucket/sample01/ et la représentation sous forme de chaîne de l'is-a-catattribut "1" pour la classification des images.

Astuce

Pour créer un fichier manifeste augmenté, utilisez Amazon SageMaker Ground Truth et créez une tâche d'étiquetage. Pour de plus amples informations sur les résultats d'une tâche d'étiquetage, veuillez consulter Données de sortie.

Diffusion des données de fichier manifeste augmenté

Le format manifeste augmenté permet de procéder à l'entraînement en mode Pipe en utilisant des fichiers image sans créer de fichiers RecordIO. Vous devez spécifier les canaux d'entraînement et de validation en tant que valeurs du paramètre InputDataConfig de la demande CreateTrainingJob. Les fichiers manifestes augmentés sont uniquement pris en charge pour les canaux qui utilisent le mode d'entrée Pipe (Tube). Pour chaque canal, les données sont extraites à partir du fichier manifeste augmenté et diffusées (dans l'ordre) à l'algorithme via le tube nommé du canal. Le mode Pipe (Tube) utilise la méthode du premier entré, premier sorti (FIFO), de sorte que les enregistrements sont traités dans l'ordre dans lequel ils ont été placés en file d'attente. Pour de plus amples informations sur le mode d'entrée Pipe, veuillez consulter Input Mode.

Les noms d'attribut avec un suffixe "-ref" pointent vers des données binaires préformatées. Dans certains cas, l'algorithme sait comment analyser les données. Dans d'autres cas, vous pouvez avoir besoin d'encapsuler les données afin de délimiter les enregistrements pour l'algorithme. Si l'algorithme est compatible avec les données au format RecordIO, la spécification de RecordIO pour RecordWrapperType résout le problème. Si l'algorithme n'est pas compatible avec le format RecordIO, spécifiez None pour RecordWrapperType et assurez-vous que vos données sont analysées correctement pour votre algorithme.

Si nous reprenons l'exemple ["image-ref", "is-a-cat"], l'utilisation du type d'encapsulage RecordIO entraîne l'envoi du flux de données suivant à la file d'attente :

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

Les images qui ne sont pas encapsulées au format RecordIO sont envoyées avec la valeur d'attribut is-a-cat correspondante sous la forme d'un enregistrement. Cela peut entraîner un problème, car l'algorithme peut ne pas délimiter correctement les images et les attributs. Pour plus d'informations sur l'utilisation de fichiers manifestes augmentés pour la classification d'images, consultez la section Train with Augmented Manifest Image Format (Entraînement avec le format d'image Manifeste augmenté).

Avec les fichiers manifeste augmenté et le mode Pipe en général, les limites de taille du volume EBS ne s'appliquent pas. Cela concerne également les paramètres dont la taille doit, autrement, respecter les limites de taille du volume EBS, comme S3DataDistributionType . Pour plus d'informations sur le mode Pipe et la façon de l'utiliser, consultez la section Using Your Own Training Algorithms - Input Data Configuration (Utilisation de vos propres algorithmes d'entraînement - Configuration des données d'entrée).

Utilisation d'un fichier manifeste augmenté (console)

Pour réaliser cette procédure, il vous faut :

  • disposer de l'URL du compartiment S3 dans lequel vous avez stocké le fichier de manifeste augmenté ;

  • pouvoir stocker les données qui sont répertoriées dans le fichier manifeste augmenté dans un compartiment S3 ;

  • L'URL du compartiment S3 où vous souhaitez stocker la sortie de la tâche.

Pour utiliser un fichier manifeste augmenté dans une tâche d'entraînement (console)
  1. Ouvrez la SageMaker console Amazon à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau de navigation, choisissez Training (Entraînement), puis Training jobs (Tâches d'entraînement).

  3. Choisissez Create training job (Créer une tâche d'entraînement).

  4. Indiquez un nom pour la tâche d'entraînement. Le nom doit être unique au sein d'une AWS région d'un AWS compte. Il peut comporter de 1 à 63 caractères. Les caractères valides sont a-z, A-Z, 0-9 et . : + = @ _ % - (trait d'union).

  5. Choisissez l'algorithme à utiliser. Pour de plus amples informations sur les algorithmes intégrés pris en charge, veuillez consulter Utilisez les algorithmes SageMaker intégrés d'Amazon ou des modèles pré-entraînés. Si vous souhaitez utiliser un algorithme personnalisé, assurez-vous qu'il est compatible avec le mode Pipe (Tube).

  6. (Facultatif) Pour Configuration des ressources, acceptez les valeurs par défaut ou, pour réduire les temps de calcul, augmentez la consommation des ressources.

    1. (Facultatif) Pour Type d'instance, choisissez le type d'instance de calcul ML à utiliser. Dans la plupart des cas, ml.m4.xlarge est suffisant.

    2. Pour Nombre d'instances, utilisez la valeur par défaut 1.

    3. (Facultatif) Pour Taille du volume par instance (Go), choisissez la taille du volume de stockage ML que vous souhaitez allouer. Dans la plupart des cas, vous pouvez utiliser la valeur par défaut 1. Si votre jeu de données est volumineux, utilisez une taille supérieure.

  7. Fournissez les informations sur les données d'entrée pour le jeu de données d'entraînement.

    1. Pour Nom du canal, acceptez la valeur par défaut (train) ou saisissez un nom plus descriptif, tel que training-augmented-manifest-file.

    2. Pour InputMode, choisissez Pipe.

    3. Pour le type de distribution de données S3, choisissez FullyReplicated. Pour un entraînement incrémentiel, la réplication complète fait en sorte que chaque instance de calcul ML utilise une copie complète du jeu de données étendu. Pour les algorithmes basés sur les réseaux neuronaux, comme par exemple Algorithme NTM (Neural Topic Model), choisissez ShardedByS3Key.

    4. Si les données spécifiées dans le fichier manifeste augmenté ne sont pas compressées, définissez le Type de compression sur Aucun. Si les données sont compressées à l'aide de GZIP, définissez-le sur Gzip.

    5. (Facultatif) Pour Type de contenu, spécifiez le type MIME approprié. Le type de contenu correspond au type Multipurpose Internet Mail Extensions (MIME) des données.

    6. Pour Type d'habillage des enregistrements, si le jeu de données spécifié dans le fichier manifeste augmenté est enregistré au format RecordIO, choisissez RecordIO. Si votre jeu de données n'est pas enregistré en tant que fichier au format RecordIO, choisissez Aucun.

    7. Pour le type de données S3, choisissez AugmentedManifestFile.

    8. Pour Emplacement S3, fournissez le chemin d'accès au compartiment dans lequel vous avez enregistré le fichier manifeste augmenté.

    9. Pour les noms d'AugmentedManifestFile attributs, spécifiez le nom de l'attribut que vous souhaitez utiliser. Le nom d'attribut doit être présent dans le fichier manifeste augmenté ; en outre, il est sensible à la casse.

    10. (Facultatif) Pour ajouter d'autres noms d'attributs, choisissez Ajouter une ligne et spécifiez un autre nom d'attribut pour chaque attribut.

    11. (Facultatif) Pour modifier l'ordre des noms d'attribut, choisissez les boutons pointant vers le haut ou vers le bas en regard des noms. Lorsque vous utilisez un fichier manifeste augmenté, l'ordre des noms d'attributs spécifié est important.

    12. Sélectionnez Exécuté.

  8. Pour Configuration des données de sortie, fournissez les informations suivantes :

    1. Pour Emplacement S3, tapez le chemin d'accès au compartiment S3 dans lequel vous souhaitez stocker la sortie de données.

    2. (Facultatif) Vous pouvez utiliser votre clé de chiffrement AWS Key Management Service (AWS KMS) pour chiffrer les données de sortie au repos. Pour Clé de chiffrement, fournissez l'ID de la clé ou son Amazon Resource Number (ARN). Pour plus d'informations, consultez Clés de chiffrement gérées par KMS.

  9. (Facultatif) Pour Balises, ajoutez une ou plusieurs balises à la tâche d'entraînement. On appelle balise les métadonnées que vous pouvez définir et affecter à des ressources AWS . Dans ce cas, vous pouvez utiliser des balises pour vous aider à gérer vos tâches d'entraînement. Une balise est composée d'une clé et d'une valeur que vous définissez. Vous pouvez, par exemple, créer une balise avec Project comme clé et une valeur qui fait référence à un projet lié à la tâche d'entraînement, tel que Home value forecasts.

  10. Choisissez Créer un poste de formation. SageMaker crée et gère le poste de formation.

Une fois la tâche de formation terminée, SageMaker stocke les artefacts du modèle dans le compartiment dont vous avez indiqué le chemin pour le chemin de sortie S3 dans le champ Configuration des données de sortie. Pour déployer le modèle afin d'obtenir des prédictions, consultez Étape 5 : déployer le modèle sur Amazon EC2.

Utilisation d'un fichier manifeste augmenté (API)

Ce qui suit montre comment entraîner un modèle avec un fichier manifeste augmenté à l'aide de la bibliothèque Python de SageMaker haut niveau :

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)

Une fois la tâche de formation terminée, SageMaker stocke les artefacts du modèle dans le compartiment dont vous avez indiqué le chemin pour le chemin de sortie S3 dans le champ Configuration des données de sortie. Pour déployer le modèle afin d'obtenir des prédictions, consultez Étape 5 : déployer le modèle sur Amazon EC2.