Accéder aux données d'entraînement - Amazon SageMaker

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 l'emplacement des données, Amazon SageMaker prend en charge Amazon Simple Storage Service (Amazon S3), Amazon Elastic File System (Amazon EFS) et Amazon FSx pour 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.

Modes d'entrée et AWS Stockage dans le cloud de SageMaker

Cette section récapitule les modes d'entrée de SageMaker pour Amazon S3 et les systèmes de fichiers dans Amazon EFS et Amazon FSx pour 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. En mode Fichier, SageMaker télécharge les données d'entraînement de l'emplacement de stockage vers un répertoire local dans le 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 local SageMaker (démarrage interactif d'un conteneur d'entraînement SageMaker 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 local de SageMaker.

  • 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 diffusion en continu qui est largement remplacé par le mode Fichier rapide plus récent et plus simple à utiliser. 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 spécifique à SageMaker pour TensorFlow intègre le mode Canal dans le chargeur de données TensorFlow natif pour le streaming de texte, le TFrecords ou les formats de fichier RecordIO. Le mode Canal prend également en charge le partitionnement et le brassage gérés des données.

  • 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 d'entraînement, SageMaker monte le système de fichiers FSx for Lustre sur le système de fichiers de l'instance d'entraînement, puis lance votre script d'entraînement. 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 formation doit se connecter à un Amazon Cloud privé virtuel (VPC), ce qui nécessite une configuration et une implication DevOps. 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à résider dans Amazon EFS avant l'entraînement. SageMaker monte le système de fichiers Amazon EFS spécifié sur l'instance dd'entraînement, puis lance votre script d'entraînement. 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 la configuration de votre VPC aux estimateurs SageMaker, consultez Utiliser les systèmes de fichiers comme entrées d'entraînement dans la documentation SDK Python de SageMaker.

Choix du mode d'entrée de données à l'aide de SDK Python de SageMaker

SDK Python de SageMaker fournit une Classe d'estimateur et ses variations pour les cadres ML pour lancer des tâches d'entraînement. Vous pouvez spécifier l'un des modes d'entrée de données lors de la configuration de la classe Estimator ou de la Estimator.fitméthode SageMaker. 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, veuillez consulter la classe sagemaker.estimator.Estimator dans la documentation SDK Python d'Amazon 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 lé méthode de classe .sagemaker.estimator.estimator.fit et la classe sagemaker.inputs.TrainingInputdans la documentation SDK Python de SageMaker.

Astuce

Pour en savoir plus sur la façon de configurer Amazon FSx pour Lustre ou Amazon EFS avec la configuration de votre VPC à l'aide des estimateurs du SDK Python de SageMaker, consultez Utiliser les systèmes de fichiers comme entrées d'entraînement dans la documentation SDK Python de 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 stratégiquement les performances de chargement des données à l'aide des options de stockage géré et des modes d'entrée de SageMaker, 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 de spécifier les bons chemins que SageMaker peut reconnaître.

Astuce

Si vous utilisez un conteneur de formation personnalisé, assurez-vous d'installer l'outils d'entraînement SageMaker qui aide à configurer l'environnement pour les tâches d'entraînement SageMaker. Sinon, vous devez spécifier les variables d'environnement explicitement dans votre Dockerfile. Pour plus d'informations, consultez Création d'un conteneur avec vos propres algorithmes et modèles.

Pour plus d'informations sur la configuration des modes d'entrée de données à l'aide des API de bas niveau SageMaker, consultez Mise à disposition d'informations d'entraînement par Amazon SageMaker, l'CreateTrainingJobAPI et TrainingInputMode dans AlgorithmSpecification.

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 la formation, 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 de plus amples informations, veuillez consulter Accélérez la formation sur Amazon SageMaker à l'aide des systèmes de fichiers Amazon FSx pour 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 traversée des données en général, envisagez de sérialiser des groupes de ces petits fichiers dans des conteneurs de fichiers moins volumineux (tels que 150 Mo par fichier) en utilisant des formats de fichier, tels que Enregistrement TF pour TensorFlow, WebDataset pour PyTorch, et RecordIO pour MXNet.

Quand utiliser le mode Fichier rapide

Pour les ensembles 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 inversement), 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 kit SDK Python de SageMaker :

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 Choisissez la meilleure source de données pour votre entraînement Amazon SageMaker. 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.