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 de ML 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 aux infrastructures populaires, PyTorch et TensorFlow. Les deux infrastructures utilisent le parallélisme des données pour la formation distribuée et peuvent exploiter horovod pour optimiser les vitesses de calcul.

Pour les modèles de ML qui ne nécessitent pas de formation distribuée, consultez Effectuer l’apprentissage de modèles avec Azure Machine Learning pour les 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 Worker 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 doit s’adapter entièrement à chaque nœud. Le diagramme suivant fournit une démonstration visuelle de cette approche.

Data-parallelism-concept-diagram

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. Cela signifie que 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 l’apprentissage 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écutera 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.

Étapes suivantes