Formation distribuée sur Amazon SageMaker - 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.

Formation distribuée sur Amazon SageMaker

SageMaker fournit des bibliothèques de formation distribuées et prend en charge diverses options de formation distribuées pour les tâches d'apprentissage profond telles que la vision par ordinateur (CV) et le traitement du langage naturel (NLP). Grâce à SageMaker ses bibliothèques de formation distribuées, vous pouvez exécuter des tâches de formation personnalisées hautement évolutives et économiques en parallèle avec les données et modéliser le deep learning en parallèle. Vous pouvez également utiliser d'autres frameworks et packages de formation distribués tels que PyTorch DistributedDataParallel (DDP)torchrun, MPI (mpirun) et un serveur de paramètres. La section suivante fournit des informations sur les concepts fondamentaux de formation distribuée. Tout au long de la documentation, des instructions et des exemples se concentrent sur la façon de configurer les options de formation distribuées pour les tâches d'apprentissage profond à l'aide de SageMaker PythonSDK.

Astuce

Pour découvrir les bonnes pratiques en matière de calcul distribué pour l'entraînement au machine learning (ML) et les tâches de traitement en général, consultez Informatique distribuée avec les SageMaker meilleures pratiques.

Concepts de formation distribués

SageMakerles bibliothèques de formation distribuées utilisent les termes et fonctionnalités de formation distribuée suivants.

Jeux de données et lots

  • Jeu de données d'entraînement : toutes les données que vous utilisez pour entraîner le modèle.

  • Taille globale du lot : nombre d'enregistrements sélectionnés dans l'ensemble de données d'apprentissage à chaque itération à envoyer GPUs au cluster. Il s'agit du nombre d'enregistrements sur lesquels le gradient est calculé à chaque itération. Lorsque le parallélisme des données est utilisé, ce nombre est égal au nombre total de réplicas de modèle multiplié par la taille du lot par réplica : global batch size = (the number of model replicas) * (per-replica batch size). La littérature de machine learning utilise souvent le terme de mini-lot pour désigner un lot unique de taille de lot globale.

  • Taille de lot par réplica : lorsque le parallélisme des données est utilisé, ce terme désigne le nombre d'enregistrements envoyés à chaque réplica de modèle. Chaque réplica de modèle effectue une transmission vers l'avant et vers l'arrière avec ce lot pour calculer les mises à jour de poids. Les mises à jour de poids ainsi obtenues sont synchronisées (moyennées) sur tous les réplicas avant le traitement de l'ensemble suivant de lots par réplica.

  • Micro-lot : un sous-ensemble du mini-lot ou, si le modèle hybride et le parallélisme des données sont utilisés, un sous-ensemble du lot dimensionné par réplica. Lorsque vous utilisez SageMaker la bibliothèque de parallélisme de modèles distribués, chaque microlot est introduit dans le pipeline de formation one-by-one et suit un calendrier d'exécution défini par le moteur d'exécution de la bibliothèque.

Entrainement

  • Époque : un cycle d'entraînement sur la totalité du jeu de données. Il est fréquent que chaque époque comprenne plusieurs itérations. Le nombre d'époques que vous utilisez dans l'entraînement est unique pour votre modèle et votre cas d'utilisation.

  • Itération : une seule transmission vers l'avant et vers l'arrière effectuée à l'aide d'un lot dimensionné par rapport à la taille de lot globale (un mini-lot) de données d'entraînement. Le nombre d'itérations effectuées pendant l'entraînement est déterminé par la taille de lot globale et le nombre d'époques utilisées pour l'entraînement. Par exemple, si un jeu de données comprend 5 000 échantillons et que vous utilisez une taille de lot globale de 500, 10 itérations seront nécessaires pour terminer une seule époque.

  • Taux d'apprentissage : une variable qui agit sur l'ampleur de changement des poids en réponse à l'erreur calculée du modèle. Le taux d'apprentissage joue un rôle important dans la capacité du modèle à converger, ainsi que dans la rapidité et l'optimalité de la convergence.

Instances et GPUs

  • Instances : une instance de calcul basée sur le AWS machine learning. Les instances sont également appelées nœuds.

  • Taille du cluster : lorsque vous utilisez SageMaker la bibliothèque de formation distribuée, il s'agit du nombre d'instances multiplié par le nombre de GPUs dans chaque instance. Par exemple, si vous utilisez deux instances ml.p3.8xlarge dans une tâche de formation, qui en ont 4 GPUs chacune, la taille du cluster est de 8. Bien que l'augmentation de la taille du cluster puisse réduire les durées d'entraînement, il est nécessaire d'optimiser la communication entre les instances afin d'éviter que la communication entre les nœuds n'ajoute un surdébit et n'allonge les durées d'entraînement. La bibliothèque de formation SageMaker distribuée est conçue pour optimiser la communication entre les instances de calcul Amazon EC2 ML, afin d'augmenter l'utilisation des appareils et d'accélérer les temps de formation.

Solutions d'entraînement distribué

  • Parallélisme des données : stratégie de formation distribuée dans le cadre de laquelle un ensemble de données de formation est divisé GPUs en plusieurs au sein d'un cluster de calcul composé de plusieurs instances Amazon EC2 ML. Chacun GPU contient une réplique du modèle, reçoit différents lots de données d'entraînement, effectue un passage en avant et en arrière et partage les mises à jour du poids avec les autres nœuds à des fins de synchronisation avant de passer au lot suivant et, finalement, à une autre époque.

  • Parallélisme des modèles : stratégie de formation distribuée selon laquelle le modèle est partitionné GPUs en plusieurs au sein d'un cluster de calcul composé de plusieurs instances Amazon EC2 ML. La complexité et le grand nombre de couches et de poids cachés du modèle peuvent l'empêcher de tenir dans la mémoire d'une seule instance. Chacune GPU contient un sous-ensemble du modèle, à travers lequel les flux de données et les transformations sont partagés et compilés. L'efficacité du parallélisme des modèles, en termes d'GPUutilisation et de temps de formation, dépend fortement de la manière dont le modèle est partitionné et du calendrier d'exécution utilisé pour effectuer des passes en avant et en arrière.

  • Calendrier d'exécution du pipeline (Pipelining) : le calendrier d'exécution du pipeline détermine l'ordre dans lequel les calculs (micro-lots) sont effectués et les données sont traitées entre les périphériques pendant l'entraînement du modèle. Le pipeline est une technique permettant d'obtenir une véritable parallélisation dans le parallélisme des modèles et de surmonter la perte de performance due au calcul séquentiel en effectuant le GPUs calcul simultanément sur différents échantillons de données. Pour en savoir plus, consultez Calendrier d'exécution du pipeline.

Concepts avancés

Les professionnels du Machine Learning (ML) sont généralement confrontés à deux défis de mise à l'échelle lorsqu'ils forment des modèles : la mise à l'échelle de la taille du modèle et la mise à l'échelle des données de formation. Bien que la taille et la complexité du modèle puissent améliorer la précision, il existe une limite à la taille du modèle que vous pouvez intégrer dans un seul CPU ouGPU. En outre, la mise à l'échelle de la taille du modèle peut augmenter le volume de calculs et allonger les durées d'entraînement.

Tous les modèles ne gèrent pas la mise à l'échelle des données d'entraînement de la même façon, car ils doivent utiliser toutes les données d'entraînement dans la mémoire pour l'entraînement. La mise à l'échelle se fait verticalement seulement, et sur des types d'instances toujours plus grands. Dans la plupart des cas, la mise à l'échelle des données d'entraînement allonge les temps d'entraînement.

Le deep learning (DL) est une famille spécifique d'algorithmes ML composée de plusieurs couches de réseaux neuronaux artificiels. La méthode d'entraînement la plus courante consiste à utiliser la descente stochastique à gradient par mini-lots (). SGD En mini-batchSGD, le modèle est entraîné en effectuant de petites modifications itératives de ses coefficients dans le sens de la réduction de son erreur. Ces itérations sont effectuées sur des sous-échantillons de taille égale du jeu de données d'entraînement appelés mini-lots. Pour chaque mini-lot, le modèle est exécuté dans chaque enregistrement du mini-lot, son erreur est mesurée et le gradient de l'erreur est estimé. Ensuite, le gradient moyen est mesuré sur tous les enregistrements du mini-lot et fournit une direction de mise à jour pour chaque coefficient du modèle. Une transmission complète sur le jeu de données d'entraînement est appelée époque. Les entraînements de modèle comprennent généralement plusieurs dizaines à plusieurs centaines d'époques. Le mini-batch SGD présente plusieurs avantages : tout d'abord, sa conception itérative rend le temps d'apprentissage théoriquement linéaire par rapport à la taille du jeu de données. Ensuite, dans un mini-lot donné, chaque enregistrement est traité individuellement par le modèle, sans autre communication entre enregistrements que la moyenne finale du gradient. Le traitement d'un mini-lot est donc particulièrement adapté à la parallélisation et à la distribution. 

La parallélisation de l'SGDentraînement en distribuant les enregistrements d'un mini-lot sur différents appareils informatiques est appelée entraînement distribué en parallèle avec les données. Il s'agit du paradigme de distribution DL le plus couramment utilisé. L'entraînement parallèle des données est une stratégie de distribution pertinente pour mettre à l'échelle la taille du mini-lot et le traiter plus rapidement. Cependant, l'entraînement parallèle des données s'accompagne de la complexité supplémentaire de devoir calculer la moyenne de gradient de mini-lots avec des gradients provenant de tous les employés et de la communiquer à tous les employés, une étape appelée allreduce (tout réduire). Cela peut provoquer un surdébit, dû à la mise à l'échelle du cluster d'entraînement, et pénaliser considérablement la durée d'entraînement s'il est mal mis en œuvre ou mis en œuvre sur des soustractions matérielles inappropriées. 

Data parallel nécessite SGD toujours que les développeurs soient capables d'intégrer au moins le modèle et un seul enregistrement dans un appareil informatique, tel qu'un seul CPU ouGPU. Lorsque vous entraînez de très grands modèles tels que de grands transformateurs en traitement automatique du langage (NLP) ou des modèles de segmentation sur des images haute résolution, cela peut s'avérer impossible dans certaines situations. Une autre façon de décomposer l'application consiste à partitionner le modèle entre plusieurs périphériques informatiques, une approche appelée entraînement distribué pour le parallélisme des modèles.