
AutoML dans le service Azure Machine Learning et SQL Server – Bien choisir son serveur d impression
introduction
Prenons un exemple typique de la façon dont nous construisons un modèle ML aujourd'hui: nous regroupons différentes sources de données, nous les préparons, nous formons un modèle et, lorsque nous sommes satisfaits de la sortie du modèle, nous le déployons.
Ces différentes étapes impliquent de multiples processus de décision, de transformation et d'enrichissement de données interconnectés, une formation de modèle basée sur des métriques d'optimisation sélectionnées, le réglage et l'optimisation d'hyperparamètres pour les transformateurs de données et les algorithmes ML. , …
Le service Azure Machine Learning et ses fonctionnalités d'AutoML répondent exactement à ce problème, évitent ces étapes itératives et optimisent la qualité du modèle final à partir des objectifs et des contraintes que vous définissez.
Mais quel est le lien avec SQL Server?
– Dans SQL Server 2016, il est possible d'installer R Services, un complément à une instance de moteur de base de données utilisée pour l'exécution du code R et des fonctions sur SQL Server.
– Dans SQL Server 2017, les services R ont été renommés en services d'apprentissage de SQL Server, reflétant l'ajout du langage Python.
– Dans SQL Server 2019 (actuellement en version préliminaire), le langage Java est ajouté aux langages R et Python, ainsi que la prise en charge sous Linux et la haute disponibilité (FCI), la prise en charge des données partitionnées …
C’est bien, la fonctionnalité AutoML du service Azure Machine Learning est disponible en Python! Nous pourrons donc demander à SQL Server une formation au modèle ML et sauvegarder le meilleur d’entre eux dans une base de données pour une utilisation locale.
AutoML
Dans cette section, nous présentons un aperçu de l’approche proposée par AutoML qui a été publiée dans cette étude et que nous vous invitons à étudier pour plus de détails.
Comme nous l'avons mentionné précédemment, Auto-ML vise à automatiser la sélection et l'ajustement du meilleur pipeline ML combinant prétraitement, sélection d'algorithme et optimisation. L'objectif à minimiser est:
Voici un résumé intuitif des étapes suivies par AutoML:
- AutoML instancie les pipelines à l'avance et effectue un échantillonnage, ce qui permet une discrétisation de l'espace hyperparamètre du pipeline, un espace qui forme une combinaison de variables discrète et continue.
- AutoML procède ensuite à la formation de NE PAS pipelines sur ré ensemble de données de référence, constituant ainsi une matrice creuse Y qui résume les performances de chaque pipeline échantillonné.
3. Vous l'aurez compris, l'objectif est de compléter la matrice, l'idée qui sous-tend l'approche, si deux ensembles de données produisent un résultat similaire pour certains pipelines, il est probable que le reste des pipelines produira des résultats similaires. C'est le rôle de cette étape, d'apprendre un modèle latent basé sur la factorisation matricielle probabiliste (PMF). Le PMF est essentiellement un processus gaussien basé sur un modèle latent (GP-LVM).
GP-LVM est une méthode non supervisée d’apprentissage d’un espace latent de taille réduite et de non-linéarité à partir d’un espace d’observation. Il peut également être décrit comme un ACP intégré dans un processus gaussien (PG).
Il est donc supposé que les éléments de Y sont les valeurs d'une fonction variable latente non linéaire avec bruit gaussien additif et moyenne nulle.
La probabilité suivante est donc la suivante:
Puis un avant PG est placé sur F donc pour tout vecteur F, on obtient la densité articulaire suivante:
4. Enfin, les paramètres du GP-LVM sont estimés en maximisant la vraisemblance via la descente de gradient stochastique:
Une fois l'apprentissage terminé, l'espace latent capture la structure des pipelines "type de modèle, hyperparamètres …".
Nous pouvons le voir dans une représentation en 2 dimensions ou dans 5000 pipelines formés sur 576 jeux de données de référence. OpenML, avec la couleur représentant la performance de la métrique AURC:
Dotés des paramètres déduits par le GP-LVM, ils sont ensuite utilisés pour estimer les performances d'un pipeline sur un nouvel ensemble de données avec les formules de prédiction standard d'une régression par PG, produisant ainsi l'estimation et la distribution. a postériori qui caractérise son incertitude.
Enfin, la dernière étape consiste à choisir intelligemment le prochain pipeline à évaluer.
Équipé de l'incertitude produite par la distribution a postériori une fonction utilitaire dite d'amélioration attendue (EI) dirige l'échantillonnage du prochain pipeline dans des zones où une amélioration par rapport à la meilleure performance réalisée jusqu'à présent est plausible.
Une fois que le SI est calculé pour chaque pipeline, le prochain pipeline à évaluer sera le point où le IS atteint son maximum.
Démo
Pour illustrer l'utilisation de la fonctionnalité AutoML dans le service Azure Machine Learning, prenons le même jeu de données dans un article rédigé par Romain sur le service Azure Machine Learning: "Prédire la qualité du vin avec Azure ML" http: / /www.pulsweb.fr/predict-wine-quality-azureml/.
Contrairement à Azure ML qui propose un outil visuel dans le Cloud pour former, créer et déployer un modèle, nous allons travailler dans cet article On Premise de SQL Server et en mode "Code First", mais simplifié, car les différents modèles seront formés et comparés. moi .
Rappel du jeu de données:
Modélisation des préférences viticoles par extraction de données à partir de propriétés physicochimiques. Citation d'utilisation: P. Cortez, A. Cerdeira, F. Almeida, T. Matos et J. Reis. Modélisation des préférences viticoles par extraction de données à partir de propriétés physicochimiques. Dans Decision Support Systems, Elsevier, 47 (4): 547-553, 2009.
– Les échantillons proviennent de vins blancs et rouges du Portugal: Vinho Verde.
– Les données sont publiques, vous pouvez donc reproduire cette expérience.
Le résultat dans notre exemple sera la qualité. Ce dernier est basé sur les données sensorielles médianes d'au moins 3 évaluations effectuées par des experts en vin. Chaque expert a évalué la qualité du vin entre 0 (très mauvais) et 10 (excellent). Le nombre de vins testés est de 1599 pour les rouges et de 4898 pour les blancs.
Avant de commencer, revenons à ce que nous voulons réaliser:
SQL Server 2017 et 2019 peuvent appeler Azure ML Automated Machine Learning pour créer des modèles à partir de données SQL Server. Pour cela, nous allons utiliser la procédure stockée sp_execute_external_script pour appeler des scripts Python.
Remarque: SQL Server 2017 et SQL Server 2019 peuvent être exécutés sous Windows ou Linux. Toutefois, cette intégration n'est pas disponible pour SQL Server 2017 sous Linux.
1. Après avoir installé SQL Server 2017 dans notre cas, nous avons exécuté les scripts:
2. L'étape suivante consiste à installer les bibliothèques d'apprentissage machine à l'aide des commandes suivantes à partir de l'invite de commande en tant qu'administrateur après l'arrêt du service SQL Server:
Remarque: En raison des dépendances et des versions installées sur votre ordinateur, des erreurs peuvent survenir lors de l'installation. Pour corriger la plupart d'entre elles, exécutez la commande suivante à partir du répertoire "PYTHON_SERVICES": "python.exe -m pip install azureml-sdk[AutoML] – ignore-installed ". Ceci installera le SDK AzureML dont le module AutoML fait partie. Nous en profitons pour mettre à jour les modules numpy et Scikit-learn.
3. Pour vérifier l'installation, exécutez en tant qu'administrateur la commande suivante à partir du répertoire "PYTHON_SERVICES": "python -m pip freeze"
4. Démarrez SQL Server et le service "SQL Server Launchpad Service".
5. Dans le Pare-feu Windows, cliquez sur Paramètres avancés et dans Règles sortantes, désactivez "Bloquer l'accès réseau pour les comptes d'utilisateur R locaux dans l'instance SQL Server xxxx".
6. Créez un espace de travail pour le service Azure Machine Learning. Vous pouvez utiliser les instructions décrites dans la documentation.
7. Créer un fichier fichier config.json à l'aide de l'ID d'abonnement, du nom du groupe de ressources et du nom de l'espace de travail utilisé pour créer l'espace de travail. Le fichier est décrit ici
8. Créez un principal de service Azure. Depuis Azure CLI (outil de ligne de commande pour la gestion des ressources Azure). Vous pouvez le faire avec les commandes:
9. Créez la base de données de test "automl", puis exécutez les scripts TSQL "aml_model.sql", "aml_connection.sql", "AutoMLGetMetrics.sql", "AutoMLPredict.sql" et "AutoMLTrain.sql" disponibles sur le compte officiel Azure Apprentissage machine
10. Insérer les valeurs
L'ensemble de données que nous voulons prédire est disponible dans la sauvegarde de la base de données WineQuality.
Nous allons former le modèle ML à partir du tableau "White_Train" de la base de données "WineQuality". Sur les 4898 lignes "blanches", la table "White_Train" en a 3675 (environ 75%) et la table "White_Test" en a 1223 (environ 25%):
La requête suivante insérera dans la table "aml_model", le modèle maximisant la métrique AUC_weighted:
Remarque: L'ASC pondérée ou l'ASC pondérée en français est utilisée ici compte tenu de la modalité de la variable prédictive non équilibrée. On résout ce problème en choisissant l'ASC pondérée. Contrairement à la AUC qui est la zone sous la courbe avec des poids égaux, nous voulons donner plus d'importance à la zone située près du haut du graphique. L'ASC pondérée crée donc un vecteur de pondération asymétrique en répartissant davantage le poids à la hausse de la courbe ROC. Mais voici la liste des mesures prises en charge: https://docs.microsoft.com/en-us/azure/machine-learning/service/concept-automated-ml#training-metric-output
Le nombre maximum d'itérations d'entraînement est ici fixé à 20 et chacune d'elles ne doit pas dépasser 10 minutes.
La requête suivante vous permet d’avoir les métriques sur les modèles:
Les modèles ont été sauvegardés pour chaque passage dans la table aml_model:
Du côté du service Azure Machine Learning, il est possible de suivre l'exécution des formations, les détails des exécutions, une liste complète des modèles créés et des informations sur leur pertinence:
Plus d'informations sur les graphiques disponibles: https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-track-experiments#understanding-automated-ml-charts
Pour faire des prédictions à partir de mon modèle, rien n'est plus facile:
Conclusion
Dans la démonstration précédente, nous avons constaté la simplicité d’accès au service Auto-ML à partir de scripts Python pour former et enregistrer un modèle dans une table, le tout sans quitter SSMS!
La fonctionnalité AutoML du service Azure Machine Learning facilite grandement la création et l'optimisation du modèle ML. De plus, il s’intègre parfaitement dans l’approche DevOps:
Le service est en constante évolution (nouvelle interface dans Preview, prévision de série chronologique, exportation de modèle au format ONNX, …): https://azure.microsoft.com/fr-en/blog/a-look-at-azure – Apprentissage automatique des capacités /
Nous prévoyons d’écrire une deuxième partie de cet article qui portera sur l’interprétabilité et l’opérationnalisation de ce même modèle.
L'article suivant a été co-écrit par Yassine Khelifi, Ingénieur grimpeur sur Azure Machine Learning et Romain Casteres, Premier ingénieur de terrain – Données et intelligence artificielle chez Microsoft.
Commentaires
Laisser un commentaire