@Xebiconfr #Xebicon18 @YoannBENOIT
Build the future
Boostez vos modèles avec du Deep Learning distribué
Yoann BENOIT, Data Scientist
Xebia
@Xebiconfr #Xebicon18 @YoannBENOIT
Yoann BENOIT
Data Scientist
@YoannBENOIT
@Xebiconfr #Xebicon18 @YoannBENOIT
Deep Learning
@Xebiconfr #Xebicon18 @YoannBENOIT
Un vaste champ des possibilités
@Xebiconfr #Xebicon18 @YoannBENOIT
Deep Learning … sur mon laptop
modèle
transfert de
connaissance modèle
Réseaux de neurones
peu profonds
Transfer Learning
@Xebiconfr #Xebicon18 @YoannBENOIT
Les limites de mon laptop
Temps
d’entraînement
trop long
@Xebiconfr #Xebicon18 @YoannBENOIT
Les limites de mon laptop
Tuning difficile
@Xebiconfr #Xebicon18 @YoannBENOIT
Les limites de mon laptop
Taille du
modèle trop
grande
@Xebiconfr #Xebicon18 @YoannBENOIT
Du CPU … au GPU
@Xebiconfr #Xebicon18 @YoannBENOIT
Du CPU … au GPU
Distributed Deep Learning
@Xebiconfr #Xebicon18 @YoannBENOIT
Distributed Deep Learning
@Xebiconfr #Xebicon18 @YoannBENOIT
Un réseau de neurones est composé d’opérations mathématiques enchaînées
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@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
@Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism
@Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Duplication du modèle sur chaque machine
Machine 1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 4
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 2
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Duplication du modèle sur chaque machine
Machine 1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 4
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 2
Op. 1
Op. 2.1 Op. 2.2
Op. 3
N images
@Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Duplication du modèle sur chaque machine
Machine 1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 4
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 2
Op. 1
Op. 2.1 Op. 2.2
Op. 3
N images
N/4 N/4 N/4 N/4
@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
@Xebiconfr #Xebicon18 @YoannBENOIT
Data Parallelism - Combiner les résultats
Synchronisation
poids gradients
synchrone asynchrone
centralisée distribuée
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Synchronisation
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Synchronisation
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Serveur de paramètres
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Synchronisation des poids
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Serveur de paramètres
Wi Wi Wi Wi
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Synchronisation des poids
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Serveur de paramètres
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Moyenne des poids
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Serveur de paramètres : Wi+1 = ¼ ∑Wi+1,j
Wi+1,1 Wi+1,2 Wi+1,3 Wi+1,4
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4Machine 3Machine 2Machine 1
Data Parallelism - Descente de gradient stochastique synchrone / asynchrone
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Serveur de paramètres : Wi+1 = Wi - ƛ*∑ΔWi,j
ΔWi,1 ΔWi,2 ΔWi,3 ΔWi,4
@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
@Xebiconfr #Xebicon18 @YoannBENOIT
Model Parallelism
@Xebiconfr #Xebicon18 @YoannBENOIT
Model Parallelism
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@Xebiconfr #Xebicon18 @YoannBENOIT
Machine 4
Machine 2 Machine 3
Machine 1
Model Parallelism
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@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
@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
@Xebiconfr #Xebicon18 @YoannBENOIT
Data + Model Parallelism
@Xebiconfr #Xebicon18 @YoannBENOIT
Data + Model Parallelism
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@Xebiconfr #Xebicon18 @YoannBENOIT
Data + Model Parallelism
G4
G2 G3
G1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
Machine 3Machine 2Machine 1
G4
G2 G3
G1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
G4
G2 G3
G1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
G4
G2 G3
G1
Op. 1
Op. 2.1 Op. 2.2
Op. 3
@Xebiconfr #Xebicon18 @YoannBENOIT
Distributed Deep Learning
@Xebiconfr #Xebicon18 @YoannBENOIT
Machines multi-GPU
@Xebiconfr #Xebicon18 @YoannBENOIT
Frameworks pour le Deep Learning distribué
@Xebiconfr #Xebicon18 @YoannBENOIT
Clusters Hadoop
@Xebiconfr #Xebicon18 @YoannBENOIT
Deep Learning distribué sur des clusters Hadoop
➔ Elephas
➔ Distributed Keras
➔ TensorFlowOnSpark
@Xebiconfr #Xebicon18 @YoannBENOIT
Deep Learning distribué sur des clusters Hadoop
➔ Deep Learning Pipelines
➔ DeepLearning4j
@Xebiconfr #Xebicon18 @YoannBENOIT
Cloud
@Xebiconfr #Xebicon18 @YoannBENOIT
Distributed Deep Learning
@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
@Xebiconfr #Xebicon18 @YoannBENOIT
Que choisir ?
Multi-GPU
Distribué
Distribué
Machine seule
Multi-GPU
Distribué
Data Size
NetworkSize
@Xebiconfr #Xebicon18 @YoannBENOIT
Build the future
MERCI
@Xebiconfr #Xebicon18 @YoannBENOIT
Références
➔ http://timdettmers.com/2014/10/09/deep-learning-data-parallelism/
➔ https://medium.com/rocketml/put-tensorflow-keras-and-mxnet-deeplearning-models-on-steroids-c34
0586989b5
➔ https://www.slideshare.net/insideHPC/tutorial-on-deep-learning
➔ https://www.slideshare.net/hustwj/cikm-keynotenov2014
➔ http://timdettmers.com/2014/10/09/deep-learning-data-parallelism/
➔ http://timdettmers.com/2014/11/09/model-parallelism-deep-learning/
➔ https://xiandong79.github.io/Intro-Distributed-Deep-Learning
➔ https://blog.skymind.ai/distributed-deep-learning-part-1-an-introduction-to-distributed-training-of-neur
al-networks/
➔ https://arxiv.org/pdf/1404.5997v2.pdf
➔ https://www.analytics-link.com/single-post/2017/10/09/INTEREST-Scaling-Deep-Learning-Highlights
-From-The-Startupml-Workshop
➔ https://medium.com/@ntenenz/distributed-tensorflow-2bf94f0205c3
➔ https://medium.com/netflix-techblog/distributed-neural-networks-with-gpus-in-the-aws-cloud-ccf71e8
2056b
@Xebiconfr #Xebicon18 @YoannBENOIT
Frameworks
➔ http://maxpumperla.com/elephas/
➔ https://github.com/yahoo/TensorFlowOnSpark
➔ https://github.com/cerndb/dist-keras
➔ https://docs.databricks.com/applications/deep-learning/deep-learning-pipelines.html
➔ https://github.com/uber/horovod

XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué