LinkedIn rend TonY open source pour exécuter des jobs TensorFlow

01/10/2018
Logo LinkedIn

L’éditeur du réseau social professionnel, grand utilisateur de technologies open source, vient de rendre public les codes sources de TonY, un projet qui permet d’exécuter des jobs TensorFlow via Hadoop.

LinkedIn s’appuie fortement sur l’intelligence artificielle pour fournir du contenu et créer des opportunités économiques pour plus de 575 millions de membres.À la suite des récentes avancées des technologies d’intelligence artificielle, les ingénieurs de la firme ont commencé à adopter des réseaux de neurones profonds dans les produits de LinkedIn, notamment pour les flux et réponses intelligentes. LinkedIn a fait le choix de la technologie TensorFlow, publiée par Google, pour deux raisons majeures : la compatibilité avec la plateforme maison de Big Data fondée sur Hadoop ainsi que sa capacité d’apprentissage automatique et distribuée.

Le besoin d’une solution sur mesure

TonY est le projet de LinkedIn qui permet d’exécuter des jobs TensorFlow. L’idée du projet est de pouvoir jouer des scénarios TensorFlow nativement sur Hadoop aussi bien que sur Map/Reduce ou sur Spark. La réunion de ces deux environnements était jusque là difficile et freiner les travaux de recherche et développement de la firme. Par ailleurs des solutions existantes comme TensorFlowOnYARN ne proposaient aucun support de tolérance aux pannes et sont peu maintenues. Enfin la société voulait « un moyen flexible et durable de combler le fossé entre la puissance analytique distribuée de TensorFlow et les capacités de graduation d’Hadoop. »

Le fonctionnement de TonY

TonY propose un fonctionnement analogue à MapReduce en fournissant le moteur d’exécution des scripts Pig/Hive sur Hadoop, et de Spark en fournissant le moteur d’exécution du code Scala via des API Spark. TonY vise à fournir le même support de première classe pour l’exécution des tâches TensorFlow, en gérant des tâches comme la négociation de ressource et la configuration d’environnement de conteneurs.

Il existe trois composants principaux pour TonY : Client, ApplicationMaster et TaskExecutor. C’est le processus complet pour exécuter un travail TonY :

tonY
  1. L’utilisateur soumet au client le code de formation du modèle TensorFlow, les arguments de soumission et l’environnement virtuel Python (contenant la dépendance TensorFlow).
  2. Le client configure l’ApplicationMaster et le soumet au cluster YARN.
  3. l’ApplicationMaster négocie les ressources avec le gestionnaire de ressources de YARN en fonction des besoins en ressources de l’utilisateur (nombre de serveurs de paramètres et d’employés, de mémoire et de GPU).
  4. Une fois que l’ApplicationMaster reçoit des allocations, il génère des TaskExecutors sur les nœuds alloués.
  5. Les TaskExecutors lancent le code d’apprentissage de l’utilisateur et attendent son achèvement.
  6. Le code d’apprentissages de l’utilisateur démarre et TonY effectue périodiquement des appels entre les TaskExecutors et l’ApplicationMaster pour vérifier la bonne exécution des tâches.

Quelques fonctionnalités supplémentaires

En plus de prendre en charge les fonctionnalités de base de l’exécution de tâches TensorFlow distribuées sur Hadoop, TonY met également en œuvre diverses fonctionnalités pour améliorer l’expérience de la formation à grande échelle.

TonY permet la planification GPU, cela signifie que les utilisateurs sont assurés que l’allocation des conteneurs Hadoop et des GPUs associés sera respectée qu’ils demandent. Les demandes de ressources peuvent d’ailleurs être effectuées par type (CPU, GPU, matériel spécifique). Pour gérer au mieux ces affectations, TonY est compatible avec TensorBoard, l’outil de visualisation de l’apprentissage.

La fonctionnalité la plus importante reste la tolérance aux pannes de la solution. Ainsi l’apprentissage via TensorFlow peut durer plusieurs heures ou plusieurs jours, tout en utilisant un grand nombre de machines. Fondé sur l’API Hadoop de tolérance aux pannes la solution permet d’enregistrer des points de contrôle et restaurer l’état de l’apprentissage précédemment enregistré. En outre, TonY facilite le processus en fournissant une infrastructure distribuée résiliente pour récupérer des défaillances de nœuds. Si un nœud d’exécution ne répond pas à l’ApplicationMaster ​​ou arrive à expiration, la solution se charge de redémarrer l’application et reprend l’apprentissage à partir des points de contrôle précédemment enregistrés.

Les codes sources sont disponibles sur Github

Source : engineering.linkedin.com

Solutions

comments powered by Disqus
top