Machine Learning: L’avenir du HPC ?
By   |  June 28, 2015

Prenez des grandes masses de données traitées via des plateformes Big Data. Ajoutez-y un soupçon de Business Intelligence pour ajouter des capacités de visualisation et d’analyse. Faites-les appliquer par des machines, vous obtenez les bases d’une plate-forme de Machine Learning.

Le Machine Learning est l’un des nouveaux Graal de l’informatique moderne. L’une des définitions les plus communément acceptées désigne des systèmes informatiques qui s’améliorent en acquérant de l’expérience à partir des données analysées. Pour accomplir cet objectif, chercheurs, statisticiens et data scientists définissent des modèles logiciels capables de traiter et analyser de grandes quantités de données par des machines dédiées. L’objectif : établir des modèles prédictifs en se basant sur la corrélation de données, et les tendances dégagées.

Car le constat est sans appel : ce travail analytique réalisé par des humains montre déjà ses limites, et se révèle en l’état actuel des choses, incapable de faire face au déluge de données que promet l’Internet des objets. Car il faut alors être en mesure de traiter et analyser une quantité colossale des données pour obtenir les tendances et mesures nécessaires. Soit à dégager les éléments discriminants, soit à détecter les signaux faibles susceptibles d’influer sur une prise de décision. Autant dire que l’enjeu est d’importance !

Demain, l’Internet des objets
Pour l’internet des objets qui généreront 90% des données de demain, il fallait une réponse adaptée sous la forme d’algorithmes permettant à des machines d’analyser ces données d’un genre nouveau et dans des quantités inédites. C’est là que le Machine Learning prend tout son sens. Mais l’internet des objets n’est pas le seul moteur du machine learning. Le Big Data l’est tout autant, et cela dès aujourd’hui. On pale déjà des 8 Zetta-Octets de données au niveau mondial. Une partie de ces données est constituée de données statiques, mais la part dynamique est vouée à croître ces prochaines années, pour atteindre selon IDC, 40 Zetta-Octets dès 2020.

Une équation logiciel + matériel au service du Machine Learning
L’évolution des plate-formes de Machine Learning s’effectue selon deux axes concomitants. D’une part par la création d’algorithmes de plus en plus efficaces capables de traiter, filtrer, et analyser la donnée, et d’autre part par le meilleur choix matériel à même de stocker, lire et écrire ces données, et de les traiter et analyser. Un ensemble d’algorithmes, de processeurs et de dispositifs de stockage constituent donc les bases d’un système de Machine Learning performant.

Trois aspects pour résoudre une problématique Machine Learning
Comme l’indique Dennis DeCoste, directeur du Machine Learning chez eBay, une problématique Machine Learning convient d’être traitée sous trois aspects : des algorithmes aléatoires capables de croître à l’échelle (scalables), un choix de matériels capables de répondre aux exigences de traitements efficaces, et un modèle de compilation décomposé en modules petits et efficaces testés et affinés individuellement plutôt qu’un algorithme complexe à optimiser.

Quelques exemples concrets de Machine Learning
A quoi peut donc bien servir le Machine Learning dans la vie de tous les jours ? Voici quelques éléments de réponse

Réseaux sociaux : voilà un terreau riche en informations extrêmement complexe à traiter pour des équipes humaines compte tenu de la quantité de données quotidienne. Facebook et Twitter constituent un réseau de capteurs humains dont il est possible d’extrapoler des tendances, comme l’ont démontré les équipes de recherche d’IBM. A tel point que ces derniers préfèrent les qualifier de « capteurs sociaux » plutôt que de réseaux sociaux. A plusieurs reprises, l’influence de ces capteurs sociaux a été démontrée en matière de bourse et de santé publique (grippe). A titre d’illustration, rien que Twitter représente 250 millions de tweets par jour. Parmi les informations prises en compte par le moteur Cognos Consumer Insights d’IBM sur chaque Tweet, figure sa viralité (le nombre de retweets dony il fait l’objet), son ancienneté (basé sur sa date et heure de publication), et correlé avec le nombre de Tweets de contenu similaire (basé sur une analyse lexicale de son contenu).

Appréciations : un réseau tel que TripAdvisor constitue une somme de données colossale. Le Machine Learning permet de la traiter en appliquant un traitement sémantique pour dissocier les évaluations positives de celles, négatives. Et de les appliquer ou répartir en fonction d’un secteur géographique donné pour en appréhender la dominante. Appliquez ce traitement à un autre secteur géographique (ville, région ou pays) et vous disposez d’une base de comparaison multiple pour établir la liste des destinations les plus appréciées, par exemple, et basée sur des informations avérées.

Bourse et finances : IBM a démontré la causalité entre des opérations financières potentiellement frauduleuses à partir de l’historique des données financières brutes sur l’ensemble des bourses mondiales, correlées avec les informations financières délivrées par les médias (Bloomberg en l’espèce). Les deux types de données faisaient l’objet d’une analyse faite par le moteur Watson Automated Integration, et permettaient d’accorder un indice de véracité selon que les opérations financière inhabituelles observées correspondaient à un évènement réel ou non.

Prédictions d’achat : ce type d’analyse consiste à corréler pour mieux déterminer, les données rélatives à des actes d’achat. Type d’achat (nourriture, vêtements, loisirs), produit acheté, valeur du produit acheté, récurrence d’achat ou encore saisonnalité sont autant d’éléments qu’il est possible de croiser à l’infini pour en dégager des tendances à la hausse ou à la baisse, des habitudes d’achat des consommateurs étudiés et de ce fait, l’évaluation et les prévisions de stocks à prévoir.

L’initiative Azure ML de Microsoft
Microsoft Azure Machine Learning est un service en ligne qu’un développeur peut utiliser pour construire des modèles d’analyse prédictive (utilisant des ensembles de données en provenance de plusieurs sources de données), puis de déployer facilement ces modèles sous forme de services Web. Azure ML Studio fournit des fonctionnalités applicables à de nombreux scénarios de flux pour la construction de modèles prédictifs, fournit un accès simplifié à des sources de données, et comporte des fonctions d’exploration de données et des outils de visualisation et d’application d’algorithmes ML prêts à l’emploi. La plateforme Azure ML est de surcroît extensible. A la centaine de scénarios prêts à l’emploi pour résoudre un large spectre de problématiques scientifiques appliquées aux données, s’ajoute la possibilité de les étendre au moyen de modules en langage R, ce qui permet de répondre à des situations non couvertes par les fonctions standard.

Une plateforme ML extensible
Une fois le module en langage R finalisé, il peut être partagé avec des collègues via GitHub. Ces modules peuvent être utilisés sur des processus de traitement de données non standard, comme la gestion de formats de données spécifiques à un domaine donné, la transformation de données flexible, ou encore des modules dédiés à l’extraction de données. Mieux encore, un module en R peut incorporer l’un des centaines de scripts préinstallés sur Azure ML, et même les incorporer à votre propre module.

Voici un exemple d’implémentation : créons un module R qui agrège des données au format JSON et les adapte au format Azure ML dataset. Un tel module est composé de trois parties :

  • Un fichier de code R définit ce que le module doit accomplir ;
  • Des fichiers d’accompagnement optionnels (fichiers de configuration ou scripts en R)
  • Un fichier XML qui determine les entrées, sorties et paramètres du module.

En guise de parallèle on pourrait dire que le fichier XML représente le squelette du module, et le code en R son muscle. Le module accepte une donnée en entrée au format JSON, et le transforme de façon à générer sous forme de dataset à plat. En paramètre, il accepte une chaîne de caractère qui précise une valeur de remplacement nulle. Le script en R correspondant est :


parse_json.R:
parse_json <- function(data_in, nullvalue="NA") {
library(RJSONIO)
library(plyr)
data_out <-ldply(fromJSON(as.character(data_in[1,1]),nullValue=nullvalue,simplify=TRUE))
return(data_out)
}

Le fichier de description XML qui suit définit le nom du modules, la function R à appeler pour lancer l’exécution du module, les datasets d’entrée et de sorties, ainsi que les éventuels paramètres associés.


parse_json.xml:
<Module name="Parse JSON Strings">
<Owner>AzureML User</Owner>
<Description>This is my module description. </Description>
<Language name="R" sourceFile="parse_json.R" entryPoint="parse_json"/>
<Ports>
<Output id="data_out" name="Parsed dataset" type="DataTable">
<Description>Combined Data</Description>
</Output>
<Input id="data_in" name="JSON formatted dataset" type="DataTable">
<Description>Input dataset</Description>
</Input>
</Ports>
<Arguments>
<Arg id="nullvalue" name="Null replacement value" type="string" isOptional = "true">
<Description>Value used to replace JSON null value</Description>
</Arg>
</Arguments>
</Module>

Pour ajouter ce module à Azure ML, il suffit de créer une archive .zip contenant tous les fichiers et de l’uploader en cliquant sur le menu +NEW > Module dans votre environnement de travail Azure ML Studio. Une fois téléchargé, votre module apparaît dans la catégorie “custom” de la palette de modules, aux côtés des modules préinstallés.

La Prediction API de Google
Google met à la disposition des développeurs et chercheurs sa plateforme Google Cloud au sein duquel se trouve la Prediction API. Selon Google, cette API permet d’ores et déjà d’atteindre des objectifs tels que :

  • Prédire si un utilisateur va apprécier un film en fonction des films qu’il apprécie
  • Catégoriser des mails comme étant du spam ou non
  • Analyser des commentaires pour déterminer si vos produits sont appréciés ou non
  • Prédire les dépenses d’un utilisateur en se basant sur ses habitudes de consommation

Google met à la disposition des utilisateurs de cette API deux sites qui l’exploitent, l’un pour la détection de spam et le second pour la prédiction de préférences de film. La Prediction API est accessible par une interface RESTful. Google met à disposition plusieurs bibliothèques et scripts pour accéder à l’API. Cette dernière fournit des fonctions de pattern-matching et des capacités de Machine Learning à partir de données d’exemples que vous aurez à fournir. Le modèle alimenté avec ces données évolue pour devenir un modèle entraîné capable de répondre à des requêtes.

Le nombre de fonctions d’appel direct à la Prediction API en version 1.6 est plutôt réduit, et se limite à :

prediction.hostedmodels.predict
  Fournit des données en entrée et demande des données en sortie à partir d’un modèle hébergé.
prediction.trainedmodels.analyze
  Obtient l’analyse du modèle et les données à partir desquelles le modèle a été entraîne
prediction.trainedmodels.delete
  Supprimer un modèle entraîné
prediction.trainedmodels.get
  Vérifie l’état de la formation de votre modèle
prediction.trainedmodels.insert
  Trains a model of the Prediction API
List.prediction.trainedmodels.list
  Liste des modèles disponibles
prediction.trainedmodels.predict.
  Fournit l’id d’un modèle et demande une prédiction
prediction.trainedmodels.update.
  Ajoute de nouvelles données à un modèle entraîné

Les principales étapes dans l’utilisation de l’API de prédiction
Un modèle de prédiction ne vaut que par la qualité des données avec lesquelles il est alimenté, car ce sont ces dernières qui le calibreront et en feront un modèle entraîné susceptible de renvoyer des informations pertinentes lors de toute requête.

1/ Créer vos données d’entraînement. Vous devez créer des données destinées à alimenter votre modèle adaptées aux questions pour lesquelles vous souhaitez obtenir des réponses. C’est l’étape la plus critique et complexe. Vous pouvez également utiliser un modèle pré-entraîné à partir de la galerie de modèles hébergés et aller directement à l’étape 4: envoyer une requête de prédiction.

2/ Envoyez vos données d’entraînement à Google Cloud Storage en utilisant des outils Google Cloud Storage standard.

3/ Entraîner le modèle avec vos données. La Prediction API va entraîner votre modèle avec vos données dont vous indiquerez l’emplacement. Vous devez interroger la Prediction API pour vérifier à quel moment est terminé l’entraînement.

4/ Envoyer une requête de prédiction. Une fois la phase d’entraînement terminée, vous pouvez transmettre une requête à votre modèle via la Prediction API. Vous obtiendrez en retour une réponse sous forme de valeur numérique, ou sous forme textuelle en fonction des données avec lesquelles vous aurez alimenté votre modèle.

5/ (optionnel) Envoyer des données supplémentaires à votre modèle. Si vous disposez d’un flux régulier de nouvelles données cohérentes avec les données ayant servi à alimenter initialement votre modèle, vous améliorerez la pertinence des résultats. Cela contribue à améliorer votre modèle au fur et à mesure que vous lui ajouterez de nouvelles données.

Les deux aspects les plus importants de l’utilisation de la Prediction API consiste à créer et structurer les données avec lesquelles est alimenté le modèle, puis à formuler une question pertinente à laquelle l’API est en capacité de répondre.

Des prédictions pertinentes ?
Le terme «prédiction» peut sembler trompeur, car la Prediction API n’est en mesure d’accomplir que deux tâches spécifiques:

  • Étant donné un nouvel élément, de prédire une valeur numérique sur la base des valeurs similaires dans les données ayant servi à l’entraîner.
  • Étant donné un nouvel élément, sélectionner une catégorie qu’il décrit le mieux, étant donné un ensemble d’éléments similaires classés dans les données ayant servi à l’entraîner.

Ces deux tâches peuvent sembler limitées. Toutefois, si vous formulez votre requête avec soin et que vous choisissez soigneusement vos données, la Prediction API de Google vous permettra de déduite les préférences d’un utilisateur et la projection des futures valeurs en corrélation avec les données ayant servi à entraîner votre modèle.

eBay : 100 millions de requêtes par jour
Le volume de données d’une plate-forme mondiale telle qu’eBay a de quoi donner le tournis : ce ne sont pas moins de 100 millions d’utilisateurs (acheteurs et vendeurs) et 10 millions d’objets par jour qui sont traités et analysés, afin de déterminer leurs habitudes d’utilisation : recherches, clics, souhaits, enchères et achats. Côté objets, ce sont les prix, les titres, les descriptions et les images qui sont traitées, avec un historique de plusieurs milliards d’objets.

Le Machine Learning pour établir une base de propriétés
Ces analyses permettent de dégager pour un objet ou famille d’objets donnée, les propriétés intrinsèques. Un aquarium sera ainsi défini par des caractéristiques comme sa longueur, sa hauteur, sa largeur, mais aussi son volume, son poids, ses accessoires, etc. Ce qui permet d’en établir une taxonomie complète. Et aussi d’en établir la répartition : ainsi, 87% des catégories contiennent 17% des objets sur eBay, et à l’inverse, 1% des catégories contiennent 52% des objets.

Le moteur de recherche, l’appli reine d’eBay
L’application sur eBay qui attire l’essentiel des développements Machine Learning est l’application de recherche. A la recherche plein-texte qui exige une décomposition sémantique, s’ajoutent des critères corrélés comme l’objet le moins cher, le plus proche, etc. Dans la pratique cela se traduit en coulisses, par l’application d’un algorithme de data mining temporel sur la base Hadoop baptisé Mobius. Ce mécanisme parallélisé permet de répondre aux 100 millions de requêtes quotidiennes avec un temps de réponse très satisfaisant de l’ordre de la seconde.

Vous avez dit scalabilité ? eBay y travaille…
Les équipes Machine Learning d’eBay ne comptent pas s’arrêter en si bon chemin, et réfléchissent déjà à l’implémentation d’algorithmes kernel, hashing et projection aléatoire pour être en mesure de couvrir davantage d’utilisateurs et d’objets. Ce n’est pas le seul élément à revoir. Les équipes ML ont par exemple déterminé que le recours à une solution d’accélération GPU permettait d’améliorer d’un facteur 20 les performances, en remplaçant des CPU à 12 cœurs et 3,5 GHz (soit 168 GigaFlops) par une solution NVIDIA 690GTX capable de fournir 5,5 TeraFlops.

On le voit, le Machine Learning est une discipline qui dépend autant des algorithmes utilisés que la qualité des données analysées. Et la scalabilité sur des volumes de données d’une magnitude supérieure ne pourra être obtenue qu’au travers de plateformes matérielles faisant usage des processeurs et GPU les plus performants pour être en mesure de répondre aux exigences de cette discipline nouvelle.

© HPC Today 2019 - All rights reserved.

Thank you for reading HPC Today.

Express poll

Do you use multi-screen
visualization technologies?

Industry news

Brands / Products index