//Build 2018 – Microsoft AI overview for developers

Microsoft AI overview for developers
Dr. Harry Shum, Brian Trager

20180507_200538708_iOS.jpg

This session was meant as a tour of all the AI services available in Azure today.

Announcements :

  • QnAMaker General Availability
  • Bot Services 3.0 (100+ new features in Bot Framework – new Bot Framework Emulator)
  • Luis / QnAMaker command line tools
  • az-cli includes Bot Services
  • Machine Learning for .NET (ML.NET)

To start, Harry reminded that Cognitive Services was launched 3 years ago at //Build 2015 and has already achieved 1+ million developers using it.

After that, we were shown videos and live demos that showcased the new services in Cognitive Services.

One of those was live translation with the Microsoft Translator app on smartphone. Brian Trager, which is deaf, talked in english with Harry Shum who responded in chinese.
Microsoft Translator uses a trained AI with Custom Speech, Custom Voice and Custom Translation for a near real-time and totally accurate translation between the 2 speakers (better and quicker than the live transcript used by Microsoft in all sessions at //Build).

20180507_202724009_iOS.jpg

Continuing the tour, we were shown several linked demos using Conversational AI with the Bot Services and lots of other Cognitive Services.

First was a chatbot on an e-commerce website.
The bot used Text Analytics to adapt to the user’s language on the fly.
It used Luis.ai to recognize intents like « I want to buy a new watch » and react accordingly (refreshing the displayed items on the website).
The bot then purposed to upload an image of a watch to analyze it with Custom Vision to find a similar model in the website.
QnAMaker (Generally Available as of today) was also used to answer questions. The new QnAMaker allows to find correct answers for implicit context based on the previous questions (through the use of metadata).
For example, « What is the return policy? » – « You can get a full refund up to 7 days after the purchase » – « What about after that? » – « You can get store credits for the next 30 days ».
This was not possible before.
To end with this demo, the bot was also capable of booking a visit to the nearest retail store by taking into account store hours, the user’s calendar, the road traffic, etc. And setting the visit into the user’s calendar.
The bot finally asked for a selfie of the user.

The second demo was another bot this time in a kiosk inside a mall.
The same user interacts with it and the bot recognizes the person using the previously taken selfie (using Face Recognition API)
The bot was using Text-To-Speech and Speech-To-Text to communicate with the user and was able to know that the user had a meeting inside one of the store in the mall, and displayed a personalized map to let the user know which way is the store.

The third and last demo was a website where the store clerk can view all previously aggregated info about the customer using Microsoft Dynamics.

Moving on the new features of the Bot Framework, Harry showcased the ability to load chat transcript directly into the emulator to avoid retyping everything to test a dialog.

The new Bot Framework Emulator is also capable of managing Luis/QnAMaker (through the use of the new command line tools) for a quicker develop-configure-test cycle.

Then we moved onto Machine Learning and the ONNX format (open source) created by Microsoft but now supported by 15 big companies.

A new toolkit to write Machine Learning in C# used by Microsoft is made available to all : ML.NET

20180507_204004362_iOS.jpg

To end this session, we were shown the integration of all the tooling into Visual Studio.
Like creating a whole project by just right clicking the Custom Vision resource in the Server Explorer tab of Visual Studio.

Useful links:

Azure Machine Learning Workbench : première prise en main

Par Amar ADGHAR, consultant Data Experience

Introduction

Le but d’Azure Machine Learning est d’analyser des données, puis de développer et d’implémenter des modèles statistiques à l’aide de différents outils.

L’un de ces outils se nomme Azure Machine Learning Workbench. Il est constitué d’une application de bureau (cela s’apparente à Power BI Desktop) ainsi que d’outils en ligne de commande. Il vous permet de gérer des solutions d’apprentissage automatique dans l’intégralité du cycle de vie des sciences des données.

Pour l’installation, on peut suivre le tutorial suivant :

https://docs.microsoft.com/fr-fr/azure/machine-learning/preview/quickstart-installation

Remarque : Lors de la création du service Azure Machine Learning Expérimentation. Il est impératif que notre espace de stockage soit dans la même région que ce dernier.

Ingestion et préparation des données

 

On commence par créer un nouveau projet. Pour cela, il suffit de cliquer sur la croix et d’appuyer sur new project comme représenté ci-dessous :

Par la suite, on renseigne le nom du projet. On peut sauvegarder ce dernier et faire du versionning dans un Repo Git si on le souhaite. Dans le search Project Templates, nous disposons de plusieurs types de projet préprogrammer, nous avons un exemple connu : le projet Iris. Dans notre cas, nous allons choisir blank project.

Après avoir créé notre projet, on va charger un fichier CSV à partir d’un répertoire local. On se positionne sur l’onglet vue de données :

On clique sur la croix en haut à gauche puis sur add a datasource :

Par la suite, nous chargeons notre fichier en déroulant les étapes indiquées sur la fenêtre (on dispose de 6 étapes). Dans l’étape 3 par exemple, on peut avoir une première visualisation de notre fichier et décider du séparateur de colonne…etc. L’étape 4 nous permet d’observer le type de données dont on dispose et de pouvoir changer ce type si l’on souhaite. Une fois les étapes terminées, on peut cliquer sur finish, ce qui nous donne :

 

Le bouton Metrics (en bleu dans l’image ci-dessus), nous permet de visualiser les statistiques descriptives des colonnes de notre fichier :

Après avoir observé ces dernières, on peut se pencher sur la préparation de nos données pour notre modèle. En appuyant sur l’icône Data, on revient à notre tableau de données. il nous suffit de cliquer sur prepare et new data prepare package et nommer ce dernier :

On voit ainsi, dans la partie data préparation, un nouveau package prêt à être transformer et nettoyer :

En cliquant droit sur une colonne, on trouve différentes fonctionnalités. Cette partie est similaire à la partie préparation de données dans Power BI. Une alternative existe, il s’agit de passer via le langage python.

Développement des modèles et gestion des expérimentations

Une fois nos données prêtent, on peut développer notre modèle. Il suffit de cliquer droit sur notre dataset dans le volet data preparation et re- cliquer sur generate acces data file, ce qui nous créer automatiquement une page de code Python :

De l’image, on peut remarquer que cela nous créer un onglet .py et automatiquement notre dataframe. On peut générer notre code python. On peut aussi créer un jupyter notebook pour tester notre code. On va sur l’icône qui représente un livre, on clique sur plus et on nomme notre notebook :

Remarque : On peut aussi le faire en cliquant droit sur prepare data. Cela nous crée bien un notebook jupyter. Cependant, on ne peut pas tester notre code.

Une fois qu’on a vérifié que notre code fonctionne, on peut le rajouter dans fenêtre. Afin de compiler ce dernier, on appuie sur le bouton RUN :

On peut observer à droite qu’une fenêtre nommer Jobs s’ouvre et on observer que note code est en train de s’exécuter.

Remarque : On peut observer aussi qu’on a un onglet se nommant Arguments. On trouve son utilité avec les variables sys.arg dans Python. Il peut être utiliser pour une régression logistique par exemple.

On peut s’amuser à relancer et changer la valeur de nos variables (Arguments par exemple). Une fois qu’on l’a exécuté (plusieurs fois). On peut cliquer sur l’historique (carré rouge dans l’image ci-dessous) et observer quelques metrics sur ce dernier :

On peut aussi filtrer sur une exécution. Cela va nous permettre de tester les différents temps d’exécution de notre programme et d’affiner ce dernier par la suite.

Déploiement des modèles dans différents environnements cibles

Afin de réaliser le déploiement, dans un premier temps, on va exécuter notre script dans un environnement local, ce qui va nous générer un fichier JSON qui va capturer le schéma d’entrée de données requis par le modèle. Une fois cela fait, on va récupérer notre fichier JSON et un fichier du modèle se nommant model.pkl qui aura été enregistré dans notre répertoire du projet :

A l’aide d’une commande, on va créer un environnement local et enregistrer les fichiers récupérer au pare avant dans ce dernier. Cela va nous permettre de créer notre service web en temps réel. Pour réaliser cela, il nous suffit de taper la commande suivante :

az ml service create realtime -f mtcars prepare.py –model-file model.pkl -s service_schema.json -n irisapp -r python –collect-model-data true -c aml_config\conda_dependencies.yml

Cette commande génère un ID du service Web qu’on pourra utiliser plus tard.

Remarque : Le nom du service doit être en minuscule.

Lorsque vous exécutez la commande, le modèle et le fichier de notation sont chargés sur le compte de stockage que vous avez créé lors de la configuration de l’environnement. Le processus de déploiement crée une image Docker contenant le fichier de modèle, de schéma et de notation, puis la place dans le registre de conteneurs Azure : <ACR_name>.azureacr.io/<imagename>:<version>.

La commande extrait l’image localement sur votre ordinateur, à partir de laquelle il démarre un conteneur Docker. Dans le cadre du déploiement, un point de terminaison HTTP REST pour le service web est créé sur votre machine locale. Après quelques minutes, la commande doit se terminer avec un message de réussite, votre service web est alors opérationnel.

Conclusion

Cette outil représente un bon environnement pour commencer à faire des analyses statistiques et des modèles prédictifs. Cependant, il reste assez limité pour l’instant, par exemple, on ne peut utiliser qu’une seule version de Python et les packages disponibles (on peut télécharger de nouveau packages mais cela risque de poser problème lors du déploiement vers Azure étant donné la version dont on dispose). A ce jour, nos projets sont restreints à 25Mo si la taille de nos fichiers sont volumineux. Il existe bien sûr des solutions alternatives sous certaines conditions :

https://docs.microsoft.com/fr-fr/azure/machine-learning/preview/how-to-read-write-files

Nous suivrons le développement de cette offre très prometteuse, actuellement en préversion, dans de prochains articles.

Article rédigé par Amar ADGHAR

 

Débutez instantanément un projet avec la Data Science Virtual Machine

Par Paul PETON, lead data scientist

Le cloud Azure est un espace qui permet de créer des machines virtuelles (VM) pour tout besoin d’Infrastructure as as Service (IaaS). Il existe aujourd’hui une déclinaison spécifique d’une machine virtuelle dédiée aux Sciences de Données : la Data Science Virtual Machine (DSVM).

Sa création se fait en quelques minutes sous un compte Azure.

 

Une fois la VM déployée et démarrée, on utilise le principe de connexion de bureau à distance.

Une boîte à outils toute prête

Cette VM possède l’atout majeur d’être préconfigurée avec la plupart des applications de la boîte à outils des Data Scientists. Passons les principaux outils en revue :

  • SQL Server 2017 Developer Edition : le serveur de bases de données relationnelles est préconfiguré sur la VM et contient déjà une base de données de test (les fameux taxis new-yorkais). Il n’y a pas à se poser de question de licence ou de paramétrage. Depuis sa version 2017, SQL Server dispose d’un quatrième service nommé ML Services qui permet d’exécuter du code R ou Python encapsulé dans un script T-SQL.

  • Microsoft ML Server Developer Edition : il s’agit de la version autonome de ML Services, indépendante de l’installation de SQL Server. Il sera alors par exemple possible de travailler avec le format de fichier optimisé pour le travail par « chunck » et en mémoire : XDF.
  • Visual Studio Community Edition : l’interface préférée des développeurs qui baignent dans l’univers Microsoft
  • Jupyter notebook (avec noyaux R, Python, PySpark) : les notebooks sont des interfaces web qui permettent d’exécuter du code à la volée et de visualiser les résultats de manière intermédiaire entre les blocs d’instructions. En quelques années, les notebooks se sont imposés comme la présentation la plus claire d’un code et de ses résultats. Leur force réside également dans leur capacité à exécuter un grand nombre de langages.

A la première utilisation, il faut définir un nouveau mot de passe puis redémarrer le service.

Sur Windows, se connecter à la page https://localhost:9999

Sur Linux, se connecter à la page https://localhost:8000

Ajouter ensuite une exception de sécurité dans le navigateur.

Le notebook est alors accessible et présente de nombreux exemples de codes.

  • Power BI Desktop : on ne présente plus l’outil de BI Self Service de Microsoft qui permet de réaliser très rapidement des transformations puis une exploration des données. On ne l’utilisera toutefois pas ici pour sa capacité à diffuser et partager des tableaux de bord.
  • Azure Machine Learning Workbench : le nouvel outil dédié au Machine Learning de Microsoft est sorti en préversion depuis septembre 2017. Pour l’instant, il présente surtout une interface graphique très efficace pour la préparation des données. A termes, il servira de plateforme pour le déploiement et l’exécution de modèles sur un environnement Docker, éventuellement couplé à Spark. Nous traiterons de ce produit dans un prochain article.
  • Instance autonome Spark pour le développement local et le test

Citons également la distribution Anaconda de Python, JuliaPro et quantités de librairies R et Python dédiées au Machine Learning.

Bien sûr, il reste possible d’ajouter d’autres applications puisque nous travaillons ici avec une machine virtuelle.

Des configurations différentes à disposition

Le premier choix à effectuer face à l’offre des DSVM est celui du système d’exploitation : Windows 2012, Windows 2016 mais aussi Linux Ubuntu. Pour ce dernier, l’accès pourra se faire par connexion SSH mais aussi en lançant un bureau plus visuel au moyen du client X2Go.

Ensuite, se posera la question du dimensionnement de la VM. Les configurations varient légèrement selon le système d’exploitation. On jouera ici sur le type de disque pris en charge (SSD ou HDD), le nombre de processeurs virtuels (de 1 à 32) et la mémoire vive (jusqu’à 448 Go !)

La tarification évoluera en fonction de la configuration choisie et pour ces configurations comparables, il semble que la version Linux soit moins chère. Comme dans de nombreux services Azure, le coût s’évalue à l’heure d’utilisation. Il sera donc prudent d’enclencher l’arrêt automatique quotidien à une heure donnée. Le redémarrage reste quant à lui manuel.

Convaincu.e.s par la simplicité de déploiement de la DSVM ? Quel sera votre prochain projet de Data Science qui trouvera là son parfait terrain de jeu ?

Une variante pour le Deep Learning

Le Deep Learning est une évolution des réseaux de neurones, au cœur des méthodes d’apprentissage automatique, qui fait grand bruit par ses succès actuels, particulièrement dans la reconnaissance d’images. De nombreux frameworks existent pour « l’apprentissage profond » qui nécessitera des ressources importantes pour le calcul : Microsoft Cognitive Toolkit, TensorFlow, Keras, Theano, Caffe2, Chainer, Deep Water (H2O), etc. Il sera donc nécessaire de faire appel à la puissance des GPU et ce sont donc des VM spécifiques (mais plus chères) qui sont associées à ce besoin.

Nous traiterons du Deep Learning et de la DLVM dans un prochain article.

Paul PETON – Lead Data Scientist

Réaliser un clustering des clients avec Azure Data Factory et Azure Machine Learning Studio

Contexte

Dans cet article, nous allons segmenter une base de données clients pour créer des sous-ensembles de clients difficiles à identifier à l’œil nu, en utilisant l’algorithme de clustering K-Means. Cela peut aider le service Marketing à cibler un groupe spécifique de clients.

Le clustering, est une méthode d’apprentissage automatique non supervisée, qui consiste à séparer des données, en constituant des groupes homogènes. Le but est de minimiser la distance entre les observations du même groupe et de maximiser la distance entre les groupes.

Pour réaliser ce clustering, nous allons utiliser le service Azure Data Factory et nous avons besoin de créer un service web sous Azure Machine Learning Studio.

Azure Data Factory

(voir présentation de l’outil)

Azure Data Factory est un service d’intégration de données dans le cloud Microsoft Azure, qui gère et automatise le déplacement et la transformation des données. Pour cet article, nous avons utilisé la version 1 de Azure Data Factory.

Une Azure Data Factory est composée de :

  • Services liés
  • Jeux de données
  • Pipeline
  • Activité

Azure Machine Learning Studio

(voir présentation de l’outil)

Azure Machine Learning Studio est un service qui permet de générer, tester et déployer des solutions d’analyses prédictives.

Pour mettre en place cette solution, il y a deux grandes étapes à réaliser :

  1. Azure Machine Learning: Déployer le modèle de clustering des clients
  2. Azure Data Factory: Consommer le Web Service Azure Machine Learning

Azure Machine Learning: Déployer le modèle de clustering des clients

Dans Machine Learning Studio, nous créons une expérience qui exécute un script R appelant la méthode de clustering K-Means.

Nous avons publié notre expérience comme un service web Azure. Nous pouvons dès à présent envoyer des données à notre modèle via les points de terminaison de service web et recevoir des prédictions de résultats pour le modèle.

Pic01

Voici le résultat du déploiement de l’expérience en tant que service web :

Pic02.png

On aura besoin de ces deux informations : API KEY et Batch URI dans l’étape suivante.

Pic03

Azure Data Factory: Consommer le Web Service Azure Machine Learning

Notre Azure Data Factory va :

  • obtenir le fichier CSV qui contient la liste des clients,
  • ensuite appeler l’API d’exécution par lot Azure Machine Learning
  • et enfin copier le résultat d’exécution dans le compte Azure Storage sous forme d’un fichier CSV.

Le diagramme suivant illustre les différents composants de notre Data Factory.

Pic04

C’est le pipeline PredictivePipeline qui invoquera le modèle Azure Machine Learning. Pour cet article, on utilise Azure Blob Storage pour stocker les données d’entrée et de sortie.

 La création de notre Azure Data Factory se résume en 5 étapes :

  • 1- Création du service liépour le compte Azure Storage. On va utiliser le même compte de stockage pour les données d’entrées et de sortie, pour cela on va créer un seul service lié en fournissant la chaine de connexion de notre compte de Stockage.

Pic05

  • 2- Création du jeu de données d’entrée : ClientClusteringInputBlob

Pic06

Le jeu de données est un fichier plat déposé sur le blob storage.

Pic07.png

  • 3- Création du jeu de données de sortie : ClientClusteringResultBlob

Pic08

  • 4- Création d’un service liéde type AzureMLLinkedService en fournissant la clé API et l’URL d’exécution par lots du modèle.

Pic09

On précise ici l’URL du point de terminaison (mlEnpoint ) et la clé de l’API.

Pic10.png

  • 5- La dernière étape est la créationdu pipeline contenant une activité de type AzureMLBatchExecution, qui va utiliser le Batch URI et l’API Key de notre Service Web. Un pipeline peut enchainer plusieurs activités.

Le mlEndpoint correspond à la méthode POST du batch.

Pic11.png

Récupérer le code sur la page :

https://docs.microsoft.com/en-us/azure/data-factory/v1/data-factory-azure-ml-batch-execution-activity

Modifier inputs, outputs et linkedservicename, web service input et output.

Voici notre pipeline PredictivePipeline :

Pic12.png

On a ici choisi que le pipeline s’exécute tous les 3 jours.

A travers la fonctionnalité Monitor & Manage, disponible sur le Portail Azure pour la version 1 d’Azure Data Factory, on peut visualiser l’historique d’exécution (Statut, Date de début, Date de fin, Durée d’exécution …) de tous nos pipelines.

Pic13.png

Les fichiers de résultats sont stockés sur le Blob Storage.

Pic14.png

Chaque fichier contient l’association de l’identifiant du client à son segment (« cluster »).

Pic15.png

Voilà, nous avons réalisé un clustering avec le langage R en utilisant Azure Data Factory et Azure Machine Learning.

Vous pouvez effectuer régulièrement une segmentation de vos clients juste en planifiant l’exécution de la Data Factory. Vous pouvez aussi visualiser les résultats dans un outil de reporting comme Microsoft Power BI (voir présentation de l’outil) pour comprendre les comportements des clients et décrire précisément les groupes obtenus.

L’exploitation de ces données et de cet algorithme au travers de Power BI fera l’objet d’un prochain article de ce blog.

 

Article rédigé par Wafa BEN AISSA