Horovod 

Outils d’optimisation

Horovod a été développé à l’origine par Uber pour rendre l’apprentissage profond distribué rapide et facile à utiliser, réduisant le temps de formation des modèles de quelques jours et semaines à des heures et des minutes. Avec Horovod, un script de formation existant peut être étendu pour s’exécuter sur des centaines de GPU en quelques lignes de code Python seulement. Horovod peut être installé sur site ou exécuté directement sur des plateformes cloud, notamment AWS, Azure et Databricks. Horovod peut également fonctionner sur Apache Spark, ce qui permet d’unifier le traitement des données et la formation des modèles dans un seul pipeline. Une fois Horovod configuré, la même infrastructure peut être utilisée pour entraîner des modèles avec n’importe quel framework, facilitant ainsi le basculement entre TensorFlow, PyTorch, MXNet et les futurs frameworks à mesure que les piles technologiques d’apprentissage automatique continuent d’évoluer.

Caractéristiques

Les principes fondamentaux d’Horovod sont basés sur les concepts MPI de taille, de rang, de rang local, d’allreduce, d’allgather, de diffusion et d’alltoall. Ceux-ci sont mieux expliqués par un exemple. Disons que nous avons lancé un script de formation sur 4 serveurs, chacun disposant de 4 GPU. Si nous lançons une copie du script par GPU :

La taille serait le nombre de processus, dans ce cas, 16.

Le rang serait l’ID de processus unique de 0 à 15 (taille – 1).

Le rang local serait l’ID de processus unique au sein du serveur de 0 à 3.

Allreduce est une opération qui regroupe les données entre plusieurs processus et leur distribue les résultats. Allreduce est utilisé pour faire la moyenne des tenseurs denses.

Site officiel

Tutoriel et documentation

Enter your contact information to continue reading