Data

Réussir son projet de deep learning en 2020 [cours gratuit de deep learning]

Vous avez envie de lancer un projet de deep learning. Profitez des 10 règles incontournables, apprises à la dure par les pionniers de la mise en œuvre de projet de deep learning.

Définir le problème de l'entreprise

La première et la plus importante étape pour mener à bien un projet de deep learning est de définir l’objectif exact de l’entreprise.  Sans cela, un projet ne peut tout simplement pas exister.  C’est trivial mais, ce n’est pas toujours fait avec bon sens et rigueur. Pour peaufiner un use case, vous devez commencer par réaliser une liste de challenges critiques que le deep learning peut éventuellement participer à résoudre, en sollicitant éventuellement les commentaires et les idées de tous les services de l’entreprise. 24pm academy donne une liste de ce qui peut être géré par le machine learning dans le module "Applications de l'intelligence artificielle par métier" (dans l'espace exclusivement réservé aux abonnés).

Imaginons que vous sélectionniez

Prenons l'exemple de la numérisation des factures.  Vous devriez être en mesure de répondre à ces questions :

  • Des projets similaires expérimentaux existent-ils ailleurs ?
  • Des projets similaires ont-ils été mis en production à grande échelle (industrialisation, opérationnalisation) ?
  • Quel est le process actuel de gestion des factures ?
  • Suffisamment de données sont-elles disponibles actuellement ?
  • ROI : ce projet permet-il de réaliser des économies ou plus de chiffre d’affaires ?

Des projets similaires expérimentaux existent-ils ailleurs ?

Comme cela se produit souvent en matière d’innovation technologique, certains départements Data/IA ont la fâcheuse manie de vouloir réinventer la roue et de ne pas tenir compte ce qui a été appris par d’autres entreprises. Ils repassent par toute la courbe d’apprentissage. C’est dommage car moyennement la participation à des meet ups, l’échange d’expérience sur des groupes de discussions Linkedin, par exemple ou une veille systématique sur les retours d’expérience partagées dans les conférences peut permettre à une entreprise qui n’a pas un historique prouver de défricheur technique, de gagner du temps et de minimiser les risques d’échec (une étude d’IDC révélait dès 2019, que la moitié des projets d’IA échouait, ce qui n’est pas nécessairement plus élevé sur d’autres projets informatique concernant des sujets innovants, mais qui démontre l’utilité de tenter de ne pas reproduire les erreurs des autres au moins sur le cœur de la partie technique, c’est-à-dire la modélisation).

Des projets similaires ont-ils été mis en production à grande échelle (industrialisation, opérationnalisation) ?

Si le profane en matière de machine learning pense que le plus dur et d’apprendre à l’algorithme pour qu’il crée un modèle, les professionnels de l’IA ont pour habitude de dire que 80% du temps/des efforts d’un projet de Machine learning sont, en réalité, dédiés à la préparation des données et seulement 20% à la partie entraînement du modèle.

Mais, si l’on a la chance de faire partie des 50% de projets IA qui sont parvenus à élaborer un modèle efficient, le défi le plus dur reste à relever : l’opérationnalisation ou l’industrialisation, c’est à dire intégrer le modèle dans les process et parvenir à convaincre tous les utilisateurs sensés l’utiliser, de l’utiliser réellement au quotidien.

Apprendre des problèmes d’opérationnalisation des autres peut être aussi important, dans certains cas de peaufiner le modèle lui-même. Cette partie est souvent sous-estimer par les experts en data/intelligence artificielle qui pensent que si le modèle est bon, il sera naturellement adopté.

Quel est le process actuel ? 

Dans les entreprises, le process de gestion de la facturation a beaucoup évolué au fil du temps, passant de l'examen manuel à la numérisation des factures.  La numérisation des factures implique beaucoup d'étapes impliquant paradoxalement du travail manuel exigeant peu de réflexion, mais beaucoup de rigueur. On peut donc imaginer que le deep learning pourrait contribuer à améliorer ce processus, sans trop prendre de risque.

 Mais comment l’utilisation de techniques de deep learning pourrait-elle aider spécifiquement à résoudre ce problème d'affaires ?  Le deep learning a beaucoup progresse sur la partie reconnaissance de caractères, mais sur l'extraction de l'information structurée et non structurée des images.  En fusionnant les méthodes de deep learning existantes avec la technologie de reconnaissance optique des caractères (OCR), les entreprises et les particuliers ont pu automatiser le processus de numérisation des documents et ont fait l’économie d’une partie des procédures de saisie manuelle des données, de même que d’enregistrement et de stockage et ont réduit les erreurs et amélioré les temps de réponse.

Suffisamment de données sont-elles disponibles actuellement ?

 Lorsque vous choisissez un use case de deep learning, vous voudrez en choisir un pour lequel des données sont déjà disponibles, au moins en partie. S’il est nécessaire de tout de reprendre et notamment de créer le process de collect des données pour un projet, cela prolongera considérablement la durée et la difficulté du projet.  Dans notre use cas (automatisation de la gestion de la facturation), il existe des data sets publics disponibles pour l'OCR pour des tâches telles que la reconnaissance de plaques minéralogiques ou la reconnaissance de l'écriture manuscrite, mais ces data sets sont à peine suffisants pour obtenir le type de précision qu'exigerait le traitement des réclamations d'assurance ou la cession de remboursement d'un fournisseur.

ROI : ce projet permet-il de réaliser des économies ou plus de chiffre d’affaires ?

Si la réponse est " peut-être " ou " non ", alors rayez-le de la liste.  Le projet devrait être axé sur des possibilités ayant des résultats réels et mesurables.  Pour la numérisation des factures, voici quelques avantages : automatisation des processus, augmentation de l'efficacité, réduction des coûts et du stockage, augmentation de la satisfaction des clients et réduction de l'empreinte écologique.

Comment calculer le retour sur investissement d’un projet de deep learning ?

 Comme pour tout use case lié à l’utilisation d’une nouvelle technologie, il est souhaitable d’évaluer son ROI. Comment faire ?

La méthode n’a pas résolument différentes de celle utilisé pour estimer le ROI des projets informatiques en général. La différence est que l’on dispose de moins de données pour les hypothèses.

On peut utiliser le modèle suivant : Economies + Chiffre d’affaires + Valeur des problèmes résolus

Economies

Economie = Somme des économies réalisés pour chaque service de l’entreprise suite à la mise en place du système de DL = Coûts de fonctionnement actuels (temps homme + achats externes) – Coûts de fonctionnement escomptés après la mise en place du nouveau système + Chiffre d'affaires incrémental rendu possible.

Exemples

Pour un cas d'utilisation de maintenance prédictive, le deep learning peut permettre d'économiser sur les frais liés à l’immobilisation de matériel deffectueux et les pertes d’exploitation associées

Pour un cas d’utilisation de prédiction du churn, l’économie réalisée le sera sur les pertes de chiffre d’affaires liées au désabonnement des clients

Pour un cas d'utilisation d'un chatbot de service client, le deep learning peut réduire les coûts d'exploitation du support et améliorer l'expérience client. Attention à un erreur classique pour ce use case à ne pas surestimer l’amélioration de l’expérience client qui n’aime pas toujours que l’on se débarrasse de lui pour l’envoyer sur un chatbot

Attention à ne pas sous-estimer le coût de fonctionnement du système de DL. Ce dernier doit être scalable, l’énergie à déployer pour alimenter le système en données et maintenir les modèles de deep learning peuvent être coûteux s'ils sont difficiles d'accès et trop volumineux pour être facilement manipulés. Sur ce point, les plates-formes de deep learning ont un avantage puisque vos ingénieurs peuvent alors accéder au pipeline de data et y apporter des modifications si nécessaire. Cela permet, au moins, en théorie à votre organisation d'évoluer plus rapidement sans avoir à se soucier de la charge de l'infrastructure.

Sur le coût du projet deep learning lui-même, voici des KPI amont sur lesquels vous devez conserver un œil :

  • le nombre de projets livrés par mois,
  • le temps écoulé entre le début du projet, le prototype et la production,

Chiffre d’affaires

Chiffre d’affaires = chiffre d’affaires incrémental (nouveaux clients + augmentation du taux de fidélisation + upselling/cross-selling/augmentation de la fréquence d’achat)

Exemple

Pour un cas d'utilisation de moteur de recommandation, le deep learning peut augmenter l'engagement du client et la fidélité à la marque.

Valeur des problèmes résolus

Valeur des problèmes résolus = [estimation du nombre de problèmes résolus chaque année] X [valeur de la résolution de chaque problèmes].

 Exemple

   Amélioration de l'expérience client : Lorsque le projet démontre l'engagement de votre organisation envers les clients, ceux-ci sont plus susceptibles de vous choisir avant des concurrents, ce qui vous donne un avantage. De plus, les clients sont moins susceptibles de désabonner lorsque leur expérience est adaptée à leurs besoins individuels. Un apprentissage approfondi peut permettre de faire ce genre d'expérience client sans augmenter radicalement les coûts humains…au moins, là encore, sur le papier. Attention à ne pas pêcher par optimisme.

Trois exceptions à ce modèle d’estimation du ROI

  1. Votre entreprise investi délibérément dans un use case lui permettant de communiquer en interne ou en externe pour montrer qu’elle est résolument engagée dans sa transformation digitale et que le retour sur investissement est couvert uniquement par l’aspect communication
  2. Votre entreprise dispose de caisses bien pleine et est d’accord pour payer pour voir.
  3. L’entreprise n’a pas les caisses pleines mais se sent menacées par l’arrivée de nouveaux acteurs et est prêt à financer des travaux de recherche pour anticiper l’avenir et évaluer les performances du deep learning

Optimiser la qualité et la quantité des données

Il est très important d'investir dans le prétraitement de vos données avant de les intégrer dans le modèle d'apprentissage profond. Les données du monde réel sont généralement incomplètes (sans valeurs d'attributs, sans certains attributs intéressants ou ne contenant que des données agrégées), avec du bruit (des erreurs ou des valeurs aberrantes) et incohérentes (contenant des différence entre les systèmes de codes ou les noms). Parmi les bonnes pratiques de prétraitement, mentionnons le nettoyage (combler les valeurs manquantes, lisser les données avec du bruit, repérer ou supprimer les valeurs aberrantes et résoudre les incohérences), l'intégration (utiliser plusieurs bases de données, data cubes ou fichiers), la transformation (normalisation et agrégation), la réduction (réduire le volume mais produire des résultats analytiques identiques ou similaires) et la discrétisation (remplacer les attributs numériques par des attributs nominaux).

Sur le plan quantitatif, lorsque vous déployez votre modèle de deep learning dans une application réelle, vous devez constamment alimenter le modèle en données pour continuer à en améliorer les performances. Mais il n'est pas facile de collecter des données bien annotées, car le processus peut être long et coûteux. Il n'est pas du tout efficace d'engager des personnes pour collecter manuellement des données brutes et les étiqueter.

Une suggestion qui vous permet d'économiser du temps et de l'argent est de former votre modèle d'apprentissage profond sur des data sets open-source à grande échelle, puis de l'affiner sur vos propres données. Par exemple, le jeu de données Open Images de Google contient près de 16 millions d'images étiquetée. Un model de deep learning que vous entraineriez sur ces données serait probablement suffisant pour détecter les objets, il ne vous resterait donc plus qu'à classer les objets par catégorie.

L'approche ci-dessus fonctionne si le use case est similaire au type de tâches que les grands projets open-source couvrent. Dans de nombreuses situations réelles, elle requiert une précision de presque 100% (par exemple, la détection de fraude, les véhicules à conduite autonome), ce qui est impossible à faire avec les seuls data sets open-source. Pour gérer cela, vous pouvez obtenir plus de données en recourant à « l'augmentation » des données, c’est-à-dire en appliquant des modifications mineures aux données existantes pour générer des données modifiées synthétiquement. En effectuant l'augmentation, vous pouvez empêcher votre réseau neuronal d'apprendre des patterns non pertinents et augmenter ses performances globales. Parmi les techniques d'augmentation des données d'images les plus courantes, on peut citer le retournement horizontal et vertical des images, la rotation des images de quelques degrés, la mise à l'échelle des images vers l'extérieur ou vers l'intérieur selon certains ratios, le recadrage des images originales, la translation des images dans certaines directions et l'ajout de bruit gaussien à vos images.

Annotation des données

Une fois traité, le problème de l'importance de l'augmentation des données, un élément souvent négligé dans la construction d'une solide data stack est le processus par lequel les données sont annotées, qui doit être robuste. L'annotation est le processus d'ajout d'informations contextuelles ou d'étiquettes aux images, qui servent d'exemples d'entraînement aux algorithmes pour apprendre à identifier automatiquement diverses caractéristiques. En fonction de votre ensemble de données, les annotations peuvent être générées en interne ou externalisées à des fournisseurs de services tiers (prestataires, crowdsourcing, crowd labelling…)

Vous pouvez essayer des plateformes tierces qui offrent des services d'annotation d'images. Il vous suffit de leur donner une description du type de données et d'annotations dont vous avez besoin. Voici quelques noms de plateformes connues : Alegion, Figure huit et Scale. Leurs solutions sont utilisées dans différentes secteurs tels que les véhicules autonomes, les drones, la robotique, la réalité augmentée et la réalité virtuelle, le retail…

Best practices en matière d’annotation/labelling

Formation des équipes

Investir dans la formation des équipes en charge de l’annotation pour favoriser la qualité et la cohérence de l’annotation des différents data sets et des différents annotateurs. Sauter cette étape peut déboucher sur un manque de consistance des pratiques d’annotation et, par conséquent, à la nécessité d’annoter de nouveau les données, en particulier pour les données qui nécessitent un type d'expertise spécifique ou qui inclut une part de subjectivité.

Contrôle de la qualité

Il est également important de mettre en place un processus de contrôle de la qualité (des annotations), qui prévoit, par exemple, un contrôle des annotations par des tiers.

Mesurer les performances des annotateurs

Enfin, il est essentiel d'intégrer des stats de performance (qualitative, quantitatives) pour mesurer la performance déterminer qui a dépassé ou n’a pas atteint ses objectifs.

Maintenant que vous avez mis en place un solide process d'annotation, comment rendre les annotateurs encore plus productifs ?

 Au lancement du projet d’annotation, il est souvent judicieux de recourrir à des approches plus traditionnelles (techniques classiques de vision par ordinateur) pour servir de base à vos annotations. Ces approches peuvent réduire considérablement le temps d'annotation et améliorer les performances globales.

L'interface utilisateur d'annotation est très importante. Une interface simple et bien pensée permet d'obtenir des annotations cohérentes et de haute qualité de la part de vos utilisateurs.

Enfin, la technique dite « de la génération de données synthétiques » peut également aider à maximiser le rendement des annotateurs.

A l’ère de l’IA, du big data et du deep learning, la capacité d’une entreprise à générer efficacement des data sets propres et annotables à l’échelle, est autant créatrice de valeur que la maîtrise des algorithmes d’entraînement des modèles eux-mêmes.

Constituer une task Force “Deep Learning”

Les équipes de deep learning d'aujourd'hui sont composées de personnes ayant des compétences variées et qui ont chacune un champs d’intervention particulier. La mise en œuvre du machine learning nécessite une coordination très complexe entre plusieurs équipes et ne peut être réalisée que par les meilleurs managers.

Voici les différents profils nécessaires :

Il s’agit d’une liste de profil à minima valable pour quasiment tous les types de projets de Deep Learning. En fonction de la nature de l’application, des compétences complémentaires peuvent être nécessaire.

Le Data Scientist

Il explore explore et essaie de comprendre les corrélations dans les données recueillies. Cette personne comprend bien comment les statistiques et l'apprentissage profond fonctionnent tout en maintenant un bon niveau de programmation.

L’ingénieur en Deep Learning

Il transforme les modèles d'apprentissage profond créés par le spécialiste des données pour la production. Cette personne excelle dans l'écriture de code maintenable et a une bonne compréhension du fonctionnement de l'apprentissage profond.

Le data engineer

Il s'occupe de collecter les données et de les rendre disponibles pour le reste de l'équipe. Cette personne sait comment planifier des pipelines de données maintenables et gère la façon dont les données sont testées.

L’annotateur de données

Il étiquette et annote les données d’entraînement

Le designer

Il conçoit et optimise l’UX au sens large.

 L’ingénieur qualité

Il teste les algorithmes et vérifie les échecs. Cette personne doit un expert des environnements de tests.

Écrire un code prêt pour la prod

Attendu que de nombreux spécialistes de la data en charge de l’élaboration des models de deep learning ne viennent pas de l’édition de logiciel, la qualité de ce code peut varier, ce qui pose des problèmes de reproductibilité et de maintenabilité ultérieurement. Par conséquent, une best practice à cet égard est d'écrire du code prêt pour la production, c'est-à-dire du code qui est lu et exécuté par d’autres personnes et non seulement par la personne qui l'a écrit. En particulier, le code prêt pour la production doit être (1) reproductible, (2) modulaire et (3) bien documenté. Ce sont des défis que le monde du génie logiciel a déjà bien identifié, alors détaillons un peu plus le sujet.

Pour rendre votre code reproductible, vous devez absolument contrôler la version de votre base de code avec "git" et essayer de pousser les commits de code fréquemment. Il est important de versionner les data sets sur lesquels vos modèles sont entraînés, afin de pouvoir suivre les performances des modèles qui varient en fonction des données sur lesquelles vous les entraînerez. Vous devez également utiliser un environnement virtuel tel que " virtualenv " ou " conda ", qui prend un fichier de configuration contenant une liste des paquets utilisés dans le code. Vous pouvez distribuer ce fichier à travers votre équipe via le contrôle de version pour vous assurer que vos collègues travaillent dans le même environnement. Enfin, vous devez utiliser un IDE adéquat comme PyCharm ou Visual Studio Code lors de la programmation, au lieu des Jupyter Notebooks. Les Notebooks sont parfaits pour le prototypage initial, mais pas pour un flux de travail reproductible.

Pour rendre votre code modulaire, vous devez avoir un framework de pipeline qui gère les workflows de data engineering et de modélisation. Luigi et Apache Airflow sont recommandés parce qu’ils permettent de construire le workfow comme une série de nœuds dans un graphique, et vous donne la gestion des dépendances et l'exécution du workflow. Vous voudrez écrire des tests unitaires pour votre code de base afin de vous assurer que tout se comporte comme prévu, ce qui est important pour le deep learning car vous avez affaire à des algorithmes de type « boîte noire ». Enfin, vous devriez envisager d'ajouter une intégration continue à votre repo, à utiliser pour exécuter vos tests unitaires ou votre pipeline après chaque commit ou fusion, en vous assurant qu'aucune modification de la base de code ne le casse.

Pour conserver un code bien documenté, vous voudrez organiser le code autour d’une structure standard pour faciliter la compréhension de votre code de base par vos collègues.

Tracker les expériences

La plupart des entreprises sont aujourd'hui capables de ne stocker systématiquement que la version du code, généralement via un système de contrôle de version comme Git. Pour chaque expérience de deep learning, votre entreprise doit systématiquement stocker ce qui suit :

Le code d’entraînement

Vous pouvez simplement utiliser un contrôle de version de développement logiciel régulier comme Git pour stocker la version exacte du code utilisé pour l'exécution d'une expérimentation particulière.

Paramètres du modèle

Le stockage des paramètres et la possibilité de voir leurs valeurs pour un modèle particulier au fil du temps vous aideront à acquérir des connaissances et une intuition sur la façon dont les paramètres affecte votre modèle. C'est très important pour l’évolution/le renouvellement de votre équipe car les nouveaux employés pourront voir comment un modèle particulier a été formé dans le passé.

Les data sets

Le versioning et le stockage des data sets sont très importants pour la reproductibilité et la conformité. Comme il est de plus en plus difficile d'expliquer les modèles en deep learning, une bonne façon de commencer à comprendre les modèles est d'examiner les données d’entraîenement. Un bon versioning des données vous aidera lorsque vous serez confronté aux lois sur la protection de la vie privée comme le RGPD/GDPR ou à d'éventuelles questions juridiques futures comme les biais des modèles.

Matériel

Si vous utilisez du matériel puissant via le cloud, il est important d’avoir une bonne visibilité sur les statistiques d'utilisation du matériel. Il faut qu’il soit facile de voir l'utilisation du GPU et de la mémoire des machines sans avoir à exécuter manuellement des opérations de vérification et de monitoring. Cela permettra d'optimiser l'utilisation des machines et de débloquer les goulots d'étranglement.

Environnement

La gestion des paquets est difficile mais nécessaire pour rendre le code facile à exécuter. Les outils basés sur des conteneurs comme Docker vous permettent d'accélérer rapidement la collaboration autour des projets.

Coût

Le coût des expériences est important pour évaluer et budgétiser le développement d’un projet de machine learning.

Le Modèle

Le versioning de modèle est un bon moyen de stocker les outputs de votre code.

Les logs

Les logs du temps d'exécution de l’entraînement sont essentiels pour le débogage des use cases mais ils peuvent aussi fournir des informations importantes pour garder une trace de vos KPI comme la précision ou la vitesse d’entraînement et le temps estimé d'exécution.

Les résultats

Il devrait être trivial d’accéder à l’historique des performances et KPI de toute expérience d’entraînement que vous avez réalisée. Ce n’est pas toujours le cas.

Il faudrait toujours être possible pour un modèle en production, d'accéder à et d’analyser la version du code utilisé pour créer ce modèle. Cela devrait être fait pour chaque expérience, qu'elle soit en production ou non.

Choisir entre infrastructure cloud versus On premise

L'infrastructure cloud inclut les fournisseurs traditionnels tels que AWS, Google Cloud Platform, Microsoft Azure aussi bien que les fournisseurs 100% Machine learning tels que Paperspace et FloydHub.

Les solutions on premise, à l’opposé, correspondent à des serveurs opérés par votre propres soins et souvent pré-construits sur stations de travail Nvidia et Lambda Labs mais aussi des stations de travail de deep learning conçues et construites ex nihilo par vos équipes/

Les principaux avantages du Cloud

  • une faible barrière financière à l'entrée,
  • un support disponible auprès des fournisseurs
  • la possibilité d'évoluer en fonction de la taille du cluster.

Les inconvénients du Cloud

  • Un coup élevé à l’usage

Les avantages du On Premise

  • Un coup plus bas en cas d’usage régulier (vous pouvez répéter et essayer différentes expériences autant de fois et pour autant de projets que le matériel peut supporter, sans tenir compte du coût)

Les inconvénients du On Premise

  • Des compétences spécifiques
  • Un temps de set up important

En fin de compte, le choix entre le cloud et le on premise dépend du contexte et du type de données concernées. En général, les entreprises jonglent avec les deux à différents moments du déroulement du projet, de l'expérimentation initiale au déploiement à grande échelle, en tout cas, celles qui sont agiles.

Lorsque vous débutez, un fournisseur de cloud, en particulier un fournisseur de Machine learning (s’il en existe proposant des services adaptés à votre projet) est le choix le plus fréquent. On peut créer un premier modèle à peu de frais. Mais dès que l’équipe data et les projets DL se développent, le passage à un infrastructure on premise se révèle parfois 10 fois moins cher à l’usage que les solutions cloud. Cela fait abstraction du degré de personnalisation possibles avec le On premise.

Activer l’apprentissage distribué

L'une des principaux facteurs ayant permis la montée en puissance du deep learning est la possibilité d’accéder à des puissances de calcul massives et relativement bon marché. Le deep learning nécessite pour l’entraînement et la création de réseaux de neurones, le recours à un nombre massif de paramètres sur des volumes de données importants. L'informatique distribuée est donc un outil parfait pour tirer le meilleur parti du hardware moderne. Si vous n'êtes pas familier avec le calcul /l’informatique distribués, sachez simplement que cela consiste à de programmer des logiciels qui utilisent plusieurs composants distincts connectés par internet.

L’entraînement distribué des réseaux de neurones peut être envisagées de 2 façons :

(1) le parallélisme des données

(2) le parallélisme des modèles.

Le parallélisme des données tente de diviser le dataset de façon égale sur les nœuds du système, où chaque nœud a une copie du réseau neuronal avec ses poids locaux. Chaque nœud fonctionne sur un sous-ensemble unique du data set et met à jour son ensemble local de poids. Ces poids locaux sont partagés à travers le cluster pour calculer un nouvel set de poids globaux par un algorithme d'accumulation. Ces poids globaux sont ensuite distribués à tous les nœuds, et le traitement du lot de données suivant vient ensuite.

Le parallélisme du modèle tente de distribuer l'apprentissage en divisant l'architecture du modèle sur des nœuds séparés. Il est utilisé lorsque l'architecture du modèle est trop grande pour tenir sur une seule machine et que le modèle comporte certaines parties qui peuvent être parallélisées. En général, la plupart des réseaux peuvent tenir sur 2 GPU, ce qui limite la quantité d'évolutivité qui peut être réalisée.

En pratique, le parallélisme des données est apprécié et fréquemment utilisé au sein des grandes entreprises pour exécuter des algorithmes de deep learning en production.

Voici des frameworks qui permettent de gérer du parallélisme de données à l'échelle :

MXNet

Une plate-forme de deep learning distribuée, légère, portable et flexible pour Python, R, Julia, Go, Javascript.

Deeplearning4j

Une plateforme de deep learning distribuée pour Java, Clojure, Scala.

Distributed Machine learning Tool Kit (DMTK)

Un framework de machine learning distribué (de Microsoft) qui permet de faire du topic modelling , du word embedding et des gradient boosting trees

Elephas

Une extension de Keras, qui vous permet d'exécuter des modèles de deep learning distribués à l'échelle avec Spark.

Horovod

Un framework d'apprentissage distribué pour TensorFlow (créé par Uber).

Déployer les modèles dans la réalité

Les projets de deep learning ne doivent pas se dérouler en vase clos ; il est donc essentiel d'intégrer réellement le modèle dans les opérations de l'entreprise. Pour revenir à la section 1, l'objectif d'un projet de deep learning est de fournir des informations sur l'entreprise après tout. Cela signifie que le modèle devra être mis en production et qu'il ne doit pas rester bloqué dans une phase de POC (Proof of concept) ou dans une sandbox

L'un des plus grands défis sous-estimés dans le développement du machine learning est le déploiement des modèles entraînés en production (opérationnalisation) et ce, de manière évolutive. L'un des meilleurs outils qui peuvent résoudre ce problème est Docker, une plate-forme de conteneurisation qui embarque une application et toutes ses dépendances dans un conteneur. Docker est utilisé lorsque vous avez de nombreux services qui fonctionnent de manière isolée et qui servent de fournisseur de données à une application web. En fonction de la charge, les instances peuvent être dérivées à la demande en fonction des règles mises en place.

Kubernetes Engine est un autre excellent endroit pour exécuter vos charges de travail à l'échelle. Avant de pouvoir utiliser Kubernetes, vous devez conteneuriser vos applications. Vous pouvez exécuter la plupart des applications dans un conteneur Docker sans trop de problèmes. Cependant, l'exécution efficace de ces conteneurs en production et la rationalisation du processus de construction représente une véritable gageure.

Voici des règles proposées par les équipes de Google Cloud pour construire un système reposant sur des conteneurs :

Empaqueter une seule application par conteneur

Il est plus difficile de déboguer lorsqu'il y a plus d'une application en cours d'exécution dans un conteneur.

Optimiser pour le cache de construction du Docker

Le Docker peut mettre en cache des couches de vos images pour accélérer les constructions ultérieures. C'est une fonctionnalité très utile, mais elle introduit certains comportements que vous devez prendre en compte lors de l'écriture de vos Dockerfiles. Par exemple, vous devriez ajouter le code source de votre application aussi tard que possible dans votre Dockerfile afin que l'image de base et les dépendances de votre application soient mises en cache et ne soient pas reconstruites à chaque compilation.

Supprimez les outils inutiles

Ceci vous aide à réduire la surface d'attachement de votre système hôte.

Construisez la plus petite image possible

Cela permet de réduire les temps de téléchargement, les temps de démarrage à froid et l'utilisation du disque. Vous pouvez utiliser plusieurs stratégies pour y parvenir : commencez avec une image de base minimale, exploitez les calques communs entre les images et utilisez la fonction de compilation en plusieurs étapes de Docker.

Envisagez l'utilisation d'une image publique

L'utilisation d'une image publique peut être un excellent moyen de commencer à travailler avec un logiciel particulier. Cependant, leur utilisation en production peut présenter un certain nombre de défis, surtout dans un environnement à fortes contraintes. Vous pouvez avoir besoin de contrôler ce qu'elles contiennent, ou vous pouvez ne pas vouloir dépendre d'un référentiel externe, par exemple. D'un autre côté, construire vos propres images pour chaque logiciel que vous utilisez n'est pas trivial, en particulier parce que vous devez suivre les mises à jour de sécurité du logiciel en amont. Pesez soigneusement les avantages et les inconvénients de chacun pour votre cas d'utilisation particulier, et arrêtez une décision bien réfléchie

En général, les conteneurs sont très utiles pour s'assurer que vos analyses et vos modèles sont reproductibles dans différents environnements. Bien que les conteneurs soient utiles pour garder les dépendances propres sur une seule machine, le principal avantage est qu'ils permettent aux data scientists d'écrire des datapoints finaux sans se soucier de la façon dont le conteneur sera hébergé. Cette séparation des préoccupations facilite le partenariat avec les équipes d'ingénierie pour déployer les modèles en production. De plus, en utilisant Docker et/ou Kubernetes, les data sscientist peuvent également s'approprier le déploiement des modèles jusqu'à la production.

Search