Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

26 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. @Xebiconfr #Xebicon18 @YoannBENOIT Build the future Boostez vos modèles avec du Deep Learning distribué Yoann BENOIT, Data Scientist Xebia
  2. 2. @Xebiconfr #Xebicon18 @YoannBENOIT Yoann BENOIT Data Scientist @YoannBENOIT
  3. 3. @Xebiconfr #Xebicon18 @YoannBENOIT Deep Learning
  4. 4. @Xebiconfr #Xebicon18 @YoannBENOIT Un vaste champ des possibilités
  5. 5. @Xebiconfr #Xebicon18 @YoannBENOIT Deep Learning … sur mon laptop modèle transfert de connaissance modèle Réseaux de neurones peu profonds Transfer Learning
  6. 6. @Xebiconfr #Xebicon18 @YoannBENOIT Les limites de mon laptop Temps d’entraînement trop long
  7. 7. @Xebiconfr #Xebicon18 @YoannBENOIT Les limites de mon laptop Tuning difficile
  8. 8. @Xebiconfr #Xebicon18 @YoannBENOIT Les limites de mon laptop Taille du modèle trop grande
  9. 9. @Xebiconfr #Xebicon18 @YoannBENOIT Du CPU … au GPU
  10. 10. @Xebiconfr #Xebicon18 @YoannBENOIT Du CPU … au GPU Distributed Deep Learning
  11. 11. @Xebiconfr #Xebicon18 @YoannBENOIT Distributed Deep Learning
  12. 12. @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
  13. 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
  14. 14. @Xebiconfr #Xebicon18 @YoannBENOIT Data Parallelism
  15. 15. @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
  16. 16. @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
  17. 17. @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
  18. 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
  19. 19. @Xebiconfr #Xebicon18 @YoannBENOIT Data Parallelism - Combiner les résultats Synchronisation poids gradients synchrone asynchrone centralisée distribuée
  20. 20. @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
  21. 21. @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
  22. 22. @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
  23. 23. @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
  24. 24. @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
  25. 25. @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
  26. 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
  27. 27. @Xebiconfr #Xebicon18 @YoannBENOIT Model Parallelism
  28. 28. @Xebiconfr #Xebicon18 @YoannBENOIT Model Parallelism Op. 1 Op. 2.1 Op. 2.2 Op. 3
  29. 29. @Xebiconfr #Xebicon18 @YoannBENOIT Machine 4 Machine 2 Machine 3 Machine 1 Model Parallelism Op. 1 Op. 2.1 Op. 2.2 Op. 3
  30. 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. 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
  32. 32. @Xebiconfr #Xebicon18 @YoannBENOIT Data + Model Parallelism
  33. 33. @Xebiconfr #Xebicon18 @YoannBENOIT Data + Model Parallelism Op. 1 Op. 2.1 Op. 2.2 Op. 3
  34. 34. @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
  35. 35. @Xebiconfr #Xebicon18 @YoannBENOIT Distributed Deep Learning
  36. 36. @Xebiconfr #Xebicon18 @YoannBENOIT Machines multi-GPU
  37. 37. @Xebiconfr #Xebicon18 @YoannBENOIT Frameworks pour le Deep Learning distribué
  38. 38. @Xebiconfr #Xebicon18 @YoannBENOIT Clusters Hadoop
  39. 39. @Xebiconfr #Xebicon18 @YoannBENOIT Deep Learning distribué sur des clusters Hadoop ➔ Elephas ➔ Distributed Keras ➔ TensorFlowOnSpark
  40. 40. @Xebiconfr #Xebicon18 @YoannBENOIT Deep Learning distribué sur des clusters Hadoop ➔ Deep Learning Pipelines ➔ DeepLearning4j
  41. 41. @Xebiconfr #Xebicon18 @YoannBENOIT Cloud
  42. 42. @Xebiconfr #Xebicon18 @YoannBENOIT Distributed Deep Learning
  43. 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
  44. 44. @Xebiconfr #Xebicon18 @YoannBENOIT Que choisir ? Multi-GPU Distribué Distribué Machine seule Multi-GPU Distribué Data Size NetworkSize
  45. 45. @Xebiconfr #Xebicon18 @YoannBENOIT Build the future MERCI
  46. 46. @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
  47. 47. @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

×