Formation distribuée avec Azure Machine Learning
Dans cet article, vous allez découvrir la formation distribuée et la façon dont Azure Machine Learning la prend en charge pour les modèles de Deep Learning.
Dans la formation distribuée, la charge de travail visant à effectuer l’apprentissage d’un modèle est fractionnée et partagée entre plusieurs mini-processeurs, appelés nœuds Worker. Ces nœuds Worker fonctionnent en parallèle pour accélérer la formation du modèle. La formation distribuée peut être utilisée pour les modèles Machine Learning traditionnels, mais elle est mieux adaptée aux tâches gourmandes en ressources de calcul et en temps, par exemple le Deep Learning pour la formation de réseaux neuronaux profonds.
Deep Learning et formation distribuée
Il existe deux principaux types de formation distribuée : le parallélisme des données et le parallélisme de modèle. Pour la formation distribuée sur des modèles de Deep Learning, le Kit de développement logiciel (SDK) Azure Machine Learning dans Python prend en charge les intégrations à PyTorch et TensorFlow. Ces deux infrastructures populaires utilisent le parallélisme des données pour la formation distribuée et peuvent utiliser Horovod pour optimiser les vitesses de calcul.
Pour les modèles Machine Learning qui ne nécessitent pas de formation distribuée, consultez Effectuer l’apprentissage de modèles avec Azure Machine Learning pour différentes façons d’effectuer l’apprentissage des modèles à l’aide du Kit de développement logiciel (SDK) Python.
Parallélisme des données
De ces deux approches de formation distribuée, le parallélisme des données est la plus facile à mettre en œuvre et suffit pour la plupart des cas d’usage.
Dans cette approche, les données sont divisées en partitions, où le nombre de partitions est égal au nombre total de nœuds disponibles dans le cluster de calcul ou le calcul serverless. Le modèle est copié dans chacun de ces nœuds Worker, et chaque noeud opère sur son propre sous-ensemble de données. Gardez à l’esprit que chaque nœud doit avoir la capacité de prendre en charge le modèle en cours de formation, c’est-à-dire que le modèle entier doit tenir sur chaque nœud.
Le diagramme qui suit montre cette topologie.
Chaque nœud calcule indépendamment les erreurs entre ses prédictions pour ses exemples de formation et les sorties étiquetées. À son tour, chaque nœud met à jour son modèle en fonction des erreurs et doit communiquer toutes ses modifications aux autres nœuds pour mettre à jour les modèles correspondants. Les nœuds Worker doivent synchroniser les paramètres de modèle, ou gradients, à la fin du calcul par lot pour s’assurer qu’ils effectuent la formation d’un modèle cohérent.
Parallélisme de modèle
Dans le parallélisme de modèle, également appelé parallélisme de réseau, le modèle est segmenté en différentes parties qui peuvent s’exécuter simultanément dans des nœuds différents, et chacune s’exécute sur les mêmes données. L’extensibilité de cette méthode dépend du degré de parallélisation des tâches de l’algorithme et elle est plus complexe à implémenter que le parallélisme des données.
Dans le parallélisme de modèle, les nœuds Worker doivent uniquement synchroniser les paramètres partagés, généralement une fois pour chaque étape de propagation ascendante ou descendante. En outre, les modèles plus volumineux ne sont pas un problème puisque chaque nœud opère sur une sous-section du modèle sur les mêmes données de formation.