Lorsque la quantité de données est très grande et que l'architecture de votre réseau de neurones est complexe, la question du temps d'entraînement et de la capacité de votre machine deviennent primordiales. Un entraînement de modèle peut vite prendre plusieurs heures voire jours, ou même ne pas tenir en mémoire. Il est alors temps de parler de Deep Learning distribué !
Au cours de cette présentation, nous allons voir différentes solutions et bonnes pratiques pour accélérer l'entraînement de modèles de Deep Learning en les distribuant sur un cluster ou sur des plateformes multi-GPUs.
Par Yoann Benoit, Data Scientist et Technical Officer chez Xebia
Toutes les informations sur xebicon.fr
13. @Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism vs Model Parallelism
Data Parallelism
Réplication du modèle sur plusieurs machines
Model Parallelism
Opérations du modèle réparties entre
plusieurs machines
Op. 1
Op. 2.1 Op. 2.2
Op. 3
18. @Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Propriétés
Copie du même modèle sur chaque machine
Une partie du batch à chaque itération
Pas de communication entre les différents threads en phase
d’inférence
Calcul des gradients indépendamment pour chaque copie
26. @Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Quand l’utiliser ?
Peu de paramètres
Calculs de gradients complexes
Ex : Couches convolutionnelles ou réseaux de neurones récurrents
30. @Xebiconfr #Xebicon18 @YoannBENOIT
Model Parallelism - Propriétés
Opérations et poids répartis sur chaque machine
Tout le batch est utilisé à chaque itération
Communication constante entre les différents threads
Synchroniser des poids après chaque produit matriciel
31. @Xebiconfr #Xebicon18 @YoannBENOIT
Model Parallelism - Quand l’utiliser ?
Beaucoup de paramètres
Ne tient pas en mémoire
Ex : Réseau de neurones très profond ou stacking de couches denses
43. @Xebiconfr #Xebicon18 @YoannBENOIT
Quand l’utiliser ?
Réseaux de neurones avec contraintes de poids partagés
Réseaux de neurones qui ne tiennent pas en mémoire
Très grande volumétrie de données
Tuning de paramètres intensif