Accéder aux données d'entraînement - 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.

Accéder aux données d'entraînement

Lorsque vous créez une tâche d'entraînement, vous spécifiez l'emplacement du jeu de données d'entraînement et le mode d'entrée pour accéder à ces données. Pour la localisation des données, Amazon SageMaker prend en charge Amazon Simple Storage Service (Amazon S3), Amazon Elastic File System (Amazon EFS) et Amazon FSx for Lustre. Les modes d'entrée déterminent s'il faut diffuser les fichiers de données du jeu de données en temps réel ou télécharger le jeu de données complet au début de la tâche d'entraînement.

Note

Votre jeu de données d'entrée doit être dans la même Région AWS que votre tâche d'entraînement.

SageMaker Modes de saisie et stockage AWS dans le cloud

Cette section résume les modes de SageMaker saisie pour Amazon S3 et les systèmes de fichiers dans Amazon EFS et Amazon FSx for Lustre.

  • Le mode Fichier présente une vue du système de fichiers du jeu de données dans le conteneur d'entraînement. Il s'agit du mode d'entrée par défaut si vous ne spécifiez pas explicitement l'une des deux autres options. Si vous utilisez le mode fichier, SageMaker télécharge les données d'entraînement depuis l'emplacement de stockage vers un répertoire local du conteneur Docker. L'entraînement commence une fois que le jeu de données complet a été téléchargé. En mode fichier, l'instance d'entraînement doit disposer d'un espace de stockage suffisant pour contenir l'ensemble du jeu de données. La vitesse de téléchargement du mode fichier dépend de la taille du jeu de données, de la taille moyenne des fichiers et du nombre de fichiers. Vous pouvez configurer le jeu de données pour le mode fichier en fournissant un préfixe Amazon S3, un fichier manifeste ou un fichier manifeste augmenté. Vous devez utiliser un préfixe S3 lorsque tous les fichiers de votre jeu de données se trouvent dans un préfixe S3 commun. Le mode fichier est compatible avec le mode SageMaker local (démarrage interactif d'un conteneur d' SageMaker entraînement en quelques secondes). Pour les formations distribuées, vous pouvez partager le jeu de données entre plusieurs instances avec l'option ShardedByS3Key.

  • Le mode Fichier rapide fournit un accès au système de fichiers à une source de données Amazon S3 tout en tirant parti de l'avantage de performance du mode tube. Au début de l'entraînement, le mode Fichier rapide identifie les fichiers de données, mais ne les télécharge pas. L'entraînement peut commencer sans attendre le téléchargement du jeu de données. Cela signifie que le kit SDK prend moins de temps lorsque le préfixe Amazon S3 fourni contient moins de fichiers.

    Contrairement au mode tube, le mode Fichier rapide fonctionne avec un accès aléatoire aux données. Cependant, il fonctionne mieux lorsque les données sont lues de manière séquentielle. Le mode Fichier rapide ne prend pas en charge les fichiers manifestes augmentés.

    Le mode Fichier rapide expose les objets S3 à l'aide d'une interface de système de fichiers compatible POSIX, comme si les fichiers étaient disponibles sur le disque local de votre instance d'entraînement. Il diffuse du contenu S3 à la demande alors que votre script d'entraînement consomme des données. Cela signifie que votre jeu de données n'a plus besoin de tenir dans l'espace de stockage de l'instance d'entraînement dans son ensemble et que vous n'avez pas besoin d'attendre que le jeu de données soit téléchargé sur l'instance d'entraînement avant de commencer l'entraînement. Fichier rapide ne prend actuellement en charge que les préfixes S3 (il ne prend pas en charge les manifestes et les manifestes augmentés). Le mode fichier rapide est compatible avec le mode SageMaker local.

  • Le mode Canal diffuse les données directement à partir d'une source de données Amazon S3. Le streaming peut fournir des temps de démarrage plus rapides et un meilleur débit que le mode .

    Lorsque vous diffusez les données directement, vous pouvez réduire la taille des volumes Amazon EBS utilisés par l'instance d'entraînement. En mode Canal, l'espace disque doit être suffisant pour stocker votre artefact de modèle final.

    Il s'agit d'un autre mode de streaming qui est largement remplacé par le mode fichier plus récent et simpler-to-use rapide. En mode Canal, les données sont préextraites d'Amazon S3 avec une simultanéité et un débit élevés, puis diffusées dans un canal nommé, également connu sous le nom de canal FIFO (First-In-First-Out) pour son comportement. Chaque canal ne peut être lu que par un seul processus. Une extension SageMaker spécifique permettant d'intégrer TensorFlow facilement le mode Pipe dans le chargeur de TensorFlow données natif pour le streaming de texte, les formats de fichiers TFRecords ou Recordio. Le mode Canal prend également en charge le partitionnement et le brassage gérés des données.

  • Amazon S3 Express One Zone est une classe de stockage haute performance à zone de disponibilité unique capable de fournir un accès aux données cohérent à un chiffre en millisecondes pour les applications les plus sensibles à la latence, y compris la formation des modèles. SageMaker Amazon S3 Express One Zone permet aux clients de regrouper leurs ressources de stockage d'objets et de calcul dans une seule zone de AWS disponibilité, optimisant à la fois les performances de calcul et les coûts grâce à une vitesse de traitement des données accrue. Pour augmenter encore la vitesse d'accès et prendre en charge des centaines de milliers de demandes par seconde, les données sont stockées dans un nouveau type de compartiment, un compartiment d'annuaire Amazon S3.

    SageMaker model training prend en charge les compartiments de répertoire Amazon S3 Express One Zone à hautes performances en tant qu'emplacement d'entrée de données pour le mode fichier, le mode fichier rapide et le mode canal. Pour utiliser Amazon S3 Express One Zone, saisissez l'emplacement du compartiment de répertoire Amazon S3 Express One Zone au lieu d'un compartiment Amazon S3. Fournissez l'ARN du rôle IAM avec la politique de contrôle d'accès et d'autorisation requise. Pour plus d'informations, consultez AmazonSageMakerFullAccesspolicy. Pour plus d'informations, consultez S3 Express One Zone.

  • Amazon FSx pour Lustre — FSx for Lustre peut évoluer jusqu'à des centaines de gigaoctets de débit et des millions d'IOPS avec une récupération de fichiers à faible latence. Lorsque vous démarrez une tâche de formation, SageMaker monte le système de fichiers FSx for Lustre sur le système de fichiers de l'instance de formation, puis lance votre script de formation. Le montage lui-même est une opération relativement rapide qui ne dépend pas de la taille du jeu de données stocké dans FSx for Lustre.

    Pour accéder à FSx for Lustre, votre stage de formation doit se connecter à un Amazon Virtual Private Cloud (VPC), DevOps ce qui nécessite une configuration et une implication. Pour éviter les coûts de transfert de données, le système de fichiers utilise une seule zone de disponibilité et vous devez spécifier un sous-réseau VPC qui correspond à cet ID de zone de disponibilité lors de l'exécution de la tâche d'entraînement.

  • Amazon EFS — Pour utiliser Amazon EFS comme source de données, les données doivent déjà se trouver dans Amazon EFS avant la formation. SageMaker monte le système de fichiers Amazon EFS spécifié sur l'instance de formation, puis lance votre script de formation. Votre entraînement doit être connecté à un VPC pour accéder à Amazon EFS.

    Astuce

    Pour en savoir plus sur la façon de spécifier votre configuration VPC aux SageMaker estimateurs, consultez la section Utiliser les systèmes de fichiers comme entrées d'apprentissage dans la documentation du SDK PythonSageMaker.

Choix du mode de saisie des données à l'aide du SDK SageMaker Python

SageMaker Le SDK Python fournit la classe générique Estimator et ses variantes pour les frameworks ML destinés au lancement de tâches de formation. Vous pouvez spécifier l'un des modes de saisie des données lors de la configuration de la SageMaker Estimator classe ou de la Estimator.fit méthode. Les modèles de code suivants montrent les deux manières de spécifier les modes d'entrée.

Pour spécifier le mode d'entrée à l'aide de la classe Estimateur

from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput estimator = Estimator( checkpoint_s3_uri='s3://my-bucket/checkpoint-destination/', output_path='s3://my-bucket/output-path/', base_job_name='job-name', input_mode='File' # Available options: File | Pipe | FastFile ... ) # Run the training job estimator.fit( inputs=TrainingInput(s3_data="s3://my-bucket/my-data/train") )

Pour plus d'informations, consultez la classe SageMaker.estimator.Estimator dans la documentation du SDK Python. SageMaker

Pour spécifier le mode d'entrée via la méthode d'ajustement de l'estimateur

from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput estimator = Estimator( checkpoint_s3_uri='s3://my-bucket/checkpoint-destination/', output_path='s3://my-bucket/output-path/', base_job_name='job-name', ... ) # Run the training job estimator.fit( inputs=TrainingInput( s3_data="s3://my-bucket/my-data/train", input_mode='File' # Available options: File | Pipe | FastFile ) )

Pour plus d'informations, consultez la méthode de classe SageMaker.estimator.fit et la méthode sagemaker.inputs. TrainingInputclasse dans la documentation du SDK SageMaker Python.

Astuce

Pour en savoir plus sur la façon de configurer Amazon FSx for Lustre ou Amazon EFS avec votre configuration VPC à l'aide des estimateurs du SDK SageMaker Python, consultez la section Utiliser des systèmes de fichiers comme entrées d'apprentissage dans la documentation du SDK Python. SageMaker

Astuce

Les intégrations du mode d'entrée de données avec Amazon S3, Amazon EFS et FSx for Lustre sont des méthodes recommandées pour configurer de manière optimale la source de données selon les meilleures pratiques. Vous pouvez améliorer de manière stratégique les performances de chargement des données SageMaker à l'aide des options de stockage géré et des modes de saisie, mais cela n'est pas strictement limité. Vous pouvez écrire votre propre logique de lecture de données directement dans votre conteneur d'entraînement. Par exemple, vous pouvez configurer pour lire à partir d'une source de données différente, écrire votre propre classe de chargeur de données S3 ou utiliser les fonctions de chargement de données de cadres tiers dans votre script d'entraînement. Cependant, vous devez vous assurer que vous spécifiez les bons chemins qui SageMaker peuvent être reconnus.

Astuce

Si vous utilisez un conteneur de formation personnalisé, assurez-vous d'installer la boîte à outils de SageMaker formation qui permet de configurer l'environnement pour les tâches de SageMaker formation. Sinon, vous devez spécifier les variables d'environnement explicitement dans votre fichier Docker. Pous plus amples informations, consultez Création d'un conteneur avec vos propres algorithmes et modèles

Pour plus d'informations sur la façon de définir les modes de saisie des données à l'aide SageMaker des API de bas niveauComment Amazon SageMaker fournit des informations de formation, consultez les sections CreateTrainingJobAPI et TrainingInputMode in AlgorithmSpecification.

Configuration du canal d'entrée de données pour utiliser Amazon FSx pour Lustre

Découvrez comment utiliser Amazon FSx pour Lustre comme source de données pour un débit plus élevé et un entraînement plus rapide en réduisant le temps de chargement des données.

Synchroniser Amazon S3 et Amazon FSx pour Lustre

Pour associer votre Amazon S3 à Amazon FSx pour Lustre et charger vos jeux de données d'entraînement, procédez comme suit.

  1. Préparez votre jeu de données et chargez-le sur un compartiment Amazon S3. Supposons, par exemple, que les chemins Amazon S3 d'un jeu de données d'entraînement et d'un jeu de données de test soient au format suivant.

    s3://my-bucket/data/train s3://my-bucket/data/test
  2. Pour créer un système de fichiers FSx for Lustre lié au compartiment Amazon S3 contenant les données d'entraînement, suivez les étapes de la section Linking your file system to an Amazon S3 bucket (Lier votre système de fichiers à un compartiment Amazon S3) dans le guide de l'utilisateur Amazon FSx pour Lustre. Assurez-vous d'ajouter un point de terminaison à votre VPC permettant l'accès à Amazon S3. Pour plus d’informations, consultez Création d'un point de terminaison d'un VPC Amazon S3. Lorsque vous spécifiez Data repository path (Chemin du référentiel de données), fournissez l'URI du compartiment Amazon S3 du dossier contenant vos jeux de données. Par exemple, sur la base des exemples de chemins S3 de l'étape 1, le chemin du référentiel de données doit être le suivant.

    s3://my-bucket/data
  3. Une fois le système de fichiers FSx for Lustre créé, vérifiez les informations de configuration en exécutant les commandes suivantes.

    aws fsx describe-file-systems && \ aws fsx describe-data-repository-association

    Ces commandes renvoient FileSystemId, MountName, FileSystemPath et DataRepositoryPath. Le résultat doit ressembler à l'exemple qui suit.

    # Output of aws fsx describe-file-systems "FileSystemId": "fs-0123456789abcdef0" "MountName": "1234abcd" # Output of aws fsx describe-data-repository-association "FileSystemPath": "/ns1", "DataRepositoryPath": "s3://my-bucket/data/"

    Une fois la synchronisation entre Amazon S3 et Amazon FSx terminée, vos jeux de données sont enregistrés dans Amazon FSx dans les répertoires suivants.

    /ns1/train # synced with s3://my-bucket/data/train /ns1/test # synced with s3://my-bucket/data/test

Définissez le chemin du système de fichiers Amazon FSx comme canal d'entrée de données pour la formation SageMaker

Les procédures suivantes vous guident tout au long du processus de configuration du système de fichiers Amazon FSx comme source de données pour les tâches de SageMaker formation.

Using the SageMaker Python SDK

Pour définir correctement le système de fichiers Amazon FSx comme source de données, configurez les classes d' SageMakerestimateurs FileSystemInput en suivant les instructions suivantes.

  1. Configurez un objet FileSystemInput de classe.

    from sagemaker.inputs import FileSystemInput train_fs = FileSystemInput( file_system_id="fs-0123456789abcdef0", file_system_type="FSxLustre", directory_path="/1234abcd/ns1/", file_system_access_mode="ro", )
    Astuce

    Lorsque vous spécifiez directory_path, veillez à fournir le chemin du système de fichiers Amazon FSx en commençant par MountName.

  2. Configurez un SageMaker estimateur avec la configuration VPC utilisée pour le système de fichiers Amazon FSx.

    from sagemaker.estimator import Estimator estimator = Estimator( ... role="your-iam-role-with-access-to-your-fsx", subnets=["subnet-id"], # Should be the same as the subnet used for Amazon FSx security_group_ids="security-group-id" )
  3. Lancez la tâche d'entraînement en exécutant la méthode estimator.fit avec le système de fichiers Amazon FSx.

    estimator.fit(train_fs)

Pour trouver d'autres exemples de code, consultez la section Utiliser des systèmes de fichiers comme entrées d'apprentissage dans la documentation du SDK SageMaker Python.

Using the SageMaker CreateTrainingJob API

Dans le cadre de la CreateTrainingJobrequête JSON, configurez InputDataConfig comme suit.

"InputDataConfig": [ { "ChannelName": "string", "DataSource": { "FileSystemDataSource": { "DirectoryPath": "/1234abcd/ns1/", "FileSystemAccessMode": "ro", "FileSystemId": "fs-0123456789abcdef0", "FileSystemType": "FSxLustre" } } } ],
Astuce

Lorsque vous spécifiez DirectoryPath, veillez à fournir le chemin du système de fichiers Amazon FSx en commençant par MountName.

Conseils et considérations lors de la configuration de FSx for Lustre

  1. Lorsque vous utilisez des instances compatibles avec l'EFA, telles que P4d et P3dn, veillez à définir des règles d'entrée et de sortie appropriées dans le groupe de sécurité. En particulier, l'ouverture de ces ports est nécessaire SageMaker pour accéder au système de fichiers Amazon FSx pendant la formation. Pour plus d'informations, consultez File System Access Control with Amazon VPC (Contrôle d'accès aux systèmes de fichiers avec Amazon VPC).

  2. Assurez-vous que le rôle IAM utilisé pour lancer la tâche de SageMaker formation a accès à Amazon FSx.

Bonnes pratiques pour choisir la source de données et le mode d'entrée

La meilleure source de données pour votre travail de formation dépend des caractéristiques de la charge de travail telles que la taille de l'ensemble du jeu de données, le format de fichier, la taille moyenne des fichiers, la durée de l’entraînement, un modèle de lecture séquentiel ou aléatoire du chargeur de données et la vitesse à laquelle votre modèle peut consommer les données d'entraînement. Les bonnes pratiques suivantes fournissent des directives pour démarrer avec le mode d'entrée et le stockage de données les plus adaptés à votre cas d'utilisation.

This flowchart summarizes and visualizes best practices of choosing the best storage as the data source and input file mode. All of the cases in the flowchart are described in the following sections.

Quand utiliser Amazon EFS

Si votre jeu de données est stocké dans Amazon Elastic File System, vous disposez peut-être d'une application de prétraitement ou d'annotation qui utilise Amazon EFS pour le stockage. Vous pouvez exécuter une tâche de formation configurée avec un canal de données qui pointe vers le système de fichiers Amazon EFS. Pour plus d'informations, consultez Accélérer la formation sur Amazon à SageMaker l'aide des systèmes de fichiers Amazon FSx for Lustre et Amazon EFS. Si vous ne parvenez pas à obtenir de meilleures performances, vérifiez vos options d'optimisation en suivant le Guide de performance Amazon Elastic File System ou envisagez d'utiliser différents modes d'entrée ou de stockage de données.

Utiliser le mode fichier pour les petits ensembles de jeu de données

Si le jeu de données est stocké dans Amazon Simple Storage Service et que son volume global est relativement faible (par exemple, inférieur à 50 à 100 Go), essayez d'utiliser le mode Fichier. La surcharge liée au téléchargement d'un jeu de données de 50 Go peut varier en fonction du nombre total de fichiers. Par exemple, cela prend environ 5 minutes si un jeu de données est fragmenté en partitions de 100 Mo. L'acceptation de cette surcharge de démarrage dépend principalement de la durée globale de votre travail d'entraînement, car une phase d'entraînement plus longue signifie une phase de téléchargement proportionnellement plus petite.

Sérialisation de nombreux petits fichiers

Si la taille de votre jeu de données est petite (moins de 50 à 100 Go), mais qu'il est composé de nombreux petits fichiers (moins de 50 Mo par fichier), la surcharge de téléchargement du mode Fichier augmente, car chaque fichier doit être téléchargé individuellement depuis Amazon Simple Storage Service vers le volume de l'instance d'entraînement. Pour réduire cette surcharge et le temps de transmission des données en général, envisagez de sérialiser des groupes de fichiers aussi petits dans des conteneurs de fichiers moins volumineux (150 Mo par fichier, par exemple) en utilisant des formats de fichier tels que TFRecord for TensorFlow, for PyTorch et WebDatasetRecordio for MXnet.

Quand utiliser le mode Fichier rapide

Pour les jeux de données plus volumineux contenant des fichiers plus volumineux (plus de 50 Mo par fichier), la première option consiste à essayer le mode Fichier rapide, qui est plus simple à utiliser que FSx for Lustre car il ne nécessite pas de créer de système de fichiers ou de se connecter à un VPC. Le mode Fichier rapide est idéal pour les conteneurs de fichiers volumineux (plus de 150 Mo) et peut également fonctionner avec des fichiers de plus de 50 Mo. Comme le mode Fichier rapide fournit une interface POSIX, il prend en charge les lectures aléatoires (lecture de plages d'octets non séquentielles). Cependant, ce n'est pas le cas d'utilisation idéal et votre débit peut être inférieur à celui des lectures séquentielles. Toutefois, si vous disposez d'un modèle ML relativement volumineux et gourmand en ressources informatiques, le mode Fichier rapide peut toujours saturer la bande passante effective du pipeline d'entraînement et ne pas entraîner de goulot d'étranglement d'E/S. Vous aurez besoin d'effectuer des tests pour voir. Pour passer du mode fichier au mode fichier rapide (et vice versa), il suffit d'ajouter (ou de supprimer) le input_mode='FastFile' paramètre lors de la définition de votre canal d'entrée à l'aide du SDK SageMaker Python :

sagemaker.inputs.TrainingInput(S3_INPUT_FOLDER, input_mode = 'FastFile')

Quand utiliser Amazon FSx pour Lustre

Si votre jeu de données est trop volumineux pour le mode Fichier, contient de nombreux petits fichiers que vous ne pouvez pas sérialiser facilement ou utilise un modèle d'accès en lecture aléatoire, FSx for Lustre est une bonne option à envisager. Son système de fichiers s'adapte à des centaines de gigaoctets par seconde (Go/s) de débit et à des millions d'IOPS, ce qui est idéal lorsque vous avez de nombreux petits fichiers. Cependant, notez qu'il peut y avoir un problème de démarrage à froid dû au chargement différé et à la surcharge de configuration et d'initialisation du système de fichiers FSx for Lustre.

Astuce

Pour en savoir plus, consultez Choisir la meilleure source de données pour votre SageMaker formation Amazon. Ce blog sur le machine learning AWS présente des études de cas et des performances comparatives des sources de données et des modes d'entrée.