[PYTHON] Remarques sur l'exécution locale d'Azure Machine Learning

introduction

Lorsque j'ai essayé d'utiliser Azure Machine Learning sur une machine locale, bien qu'il y ait eu de la documentation et des informations officielles, il a été emballé plusieurs fois et cela a pris beaucoup de temps à exécuter, je vais donc faire une note en tant que mémorandum.

Cette fois, je vais résumer de la configuration d'Ubuntu qui exécute Azure ML à l'exécution d'Azure ML.

Préparer l'environnement

Configurez votre environnement Ubuntu 18.04 à l'aide de l'image docker sur votre Mac. J'omettrai l'acquisition de l'image du docker et la partie exécution.

En outre, vous devez créer un compte Azure et un espace de travail pour exécuter Azure ML. J'omettrai le travail.

Configuration de l'image Ubuntu

apt-get update
apt-get upgrade

Il y a certaines choses que l'image docker ne suffit pas, alors référez-vous ici (https://qiita.com/manabuishiirb/items/26de8c9740a1d2c7cfdd) et installez les nécessaires.

apt-get install -y iputils-ping net-tools wget curl vim build-essential

Installation d'Anaconda

Cette fois, je vais l'installer avec une commande et télécharger Anaconda comme suit en me référant à ceci (https://www.virment.com/setup-anaconda-python-jupyter-ubuntu/).

wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

Installez comme suit.


bash Anaconda3-2019.10-Linux-x86_64.sh

Exécutez conda in it pour activer la commande conda. Maintenant que vous l'avez installé dans / root /, exécutez la commande suivante:

/root/anaconda3/bin/conda init
source /root/.bashrc 

Installation du SDK Azure Python

Installez azure-ml en vous référant au document officiel (https://docs.microsoft.com/ja-jp/azure/machine-learning/service/how-to-configure-environment#local). Tout d'abord, créez un environnement virtuel Anaconda.

conda create -n myenv python=3.6.5
conda activate myenv
conda install notebook ipykernel
ipython kernel install --user --name myenv --display-name "Python (myenv)"

Ensuite, installez Azure CLI requis pour l'authentification, etc. J'y ai fait référence (https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-apt?view=azure-cli-latest).

curl -sL https://aka.ms/InstallAzureCLIDeb | bash

Enfin, installez le SDK Azure ML.

pip install azureml-sdk[notebooks,automl]

L'erreur suivante apparaît en cours de route, mais il n'y a pas eu de problème.

ERROR: azureml-automl-runtime 1.0.81 has requirement azureml-automl-core==1.0.81, but you'll have azureml-automl-core 1.0.81.1 which is incompatible.

Effectuer un apprentissage automatique automatique

Authentification par ʻaz login`

Tout d'abord, authentifiez-vous avec la commande ʻaz login`. Accédez à l'URL qui apparaît après avoir exécuté la commande avec un navigateur Web et entrez le code.

az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code GPVMUVTKF to authenticate.

Créer un fichier pour se connecter à l'espace de travail

Créez un programme Python (auth.py) pour créer des informations sur l'espace de travail.

auth.py


from azureml.core import Workspace

subscription_id = '<Identifiant d'abonnement>'
resource_group  = '<Nom du groupe de ressources>'
workspace_name  = '<Nom de l'espace de travail>'

try:
    ws = Workspace(subscription_id = subscription_id, resource_group = resource_group, workspace_name = workspace_name)
    ws.write_config()
    print('Library configuration succeeded')
except:
    print('Workspace not found')

Une fois exécuté, un fichier de configuration pour la connexion à l'espace de travail sera créé dans .azureml / config.json dans le répertoire courant.

Courir

Créez un programme Python (run.py) pour effectuer un apprentissage automatique. Pour les données, nous utiliserons les données sur le cancer du sein fournies par scicit-learn. Pour plus d'informations sur les ensembles de données, veuillez consulter ici (https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html#sklearn.datasets.load_breast_cancer).

run.py


import logging

from azureml.core.workspace import Workspace
from azureml.train.automl import AutoMLConfig
from azureml.core.experiment import Experiment

import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

#Lecture de la configuration de l'espace de travail
ws = Workspace.from_config()

#Chargement des données
data = load_breast_cancer()
df_X = pd.DataFrame(data.data, columns=data.feature_names)
df_y = pd.DataFrame(data.target, columns=['target'])
x_train, x_test, y_train, y_test = train_test_split(df_X, df_y, test_size=0.2, random_state=100)

#Paramètres d'apprentissage automatique
automl_settings = {
    "iteration_timeout_minutes": 2,
    "experiment_timeout_minutes": 20,
    "enable_early_stopping": True,
    "primary_metric": 'AUC_weighted',
    "featurization": 'auto',
    "verbosity": logging.INFO,
    "n_cross_validations": 5
}


automl_config = AutoMLConfig(task='classification',
                             debug_log='automated_ml_errors.log',
                             X=x_train.values,
                             y=y_train.values.flatten(),
                             **automl_settings)

#Courir
experiment = Experiment(ws, "my-experiment")
local_run = experiment.submit(automl_config, show_output=True)

La partie définie dans ʻautoml_settings` est décrite en fonction des données et du problème. Puisqu'il s'agit d'un problème de classification binaire, l'indice d'optimisation est défini sur AUC, et la classification est définie sur «tâche» de «AutoMLConfig». Cliquez ici pour plus de détails (https://docs.microsoft.com/ja-jp/azure/machine-learning/service/how-to-configure-auto-train).

Une fois exécuté, il construira certains modèles et ensembles après une simple ingénierie de quantité de caractéristiques.

python run.py 

(réduction)

Current status: DatasetFeaturization. Beginning to featurize the dataset.
Current status: DatasetEvaluation. Gathering dataset statistics.
Current status: FeaturesGeneration. Generating features for the dataset.
Current status: DatasetFeaturizationCompleted. Completed featurizing the dataset.
Current status: DatasetCrossValidationSplit. Generating individually featurized CV splits.

****************************************************************************************************
DATA GUARDRAILS: 

TYPE:         Class balancing detection
STATUS:       PASSED
DESCRIPTION:  Classes are balanced in the training data.

TYPE:         Missing values imputation
STATUS:       PASSED
DESCRIPTION:  There were no missing values found in the training data.

TYPE:         High cardinality feature detection
STATUS:       PASSED
DESCRIPTION:  Your inputs were analyzed, and no high cardinality features were detected.

****************************************************************************************************
Current status: ModelSelection. Beginning model selection.

****************************************************************************************************
ITERATION: The iteration being evaluated.
PIPELINE: A summary description of the pipeline being evaluated.
DURATION: Time taken for the current iteration.
METRIC: The result of computing score on the fitted pipeline.
BEST: The best observed score thus far.
****************************************************************************************************

 ITERATION   PIPELINE                                       DURATION      METRIC      BEST
         0   StandardScalerWrapper SGD                      0:00:13       0.9940    0.9940
         1   StandardScalerWrapper SGD                      0:00:12       0.9958    0.9958
         2   MinMaxScaler LightGBM                          0:00:12       0.9888    0.9958
         3   StandardScalerWrapper SGD                      0:00:11       0.9936    0.9958
         4   StandardScalerWrapper ExtremeRandomTrees       0:00:14       0.9908    0.9958
         5   StandardScalerWrapper LightGBM                 0:00:11       0.9887    0.9958
         6   StandardScalerWrapper SGD                      0:00:11       0.9956    0.9958
         7   MinMaxScaler RandomForest                      0:00:13       0.9814    0.9958
         8   StandardScalerWrapper SGD                      0:00:11       0.9851    0.9958
         9   MinMaxScaler SGD                               0:00:11       0.9441    0.9958
        10   MinMaxScaler RandomForest                      0:00:11       0.9802    0.9958
        11   MaxAbsScaler LightGBM                          0:00:11       0.9780    0.9958
        12   MinMaxScaler LightGBM                          0:00:12       0.9886    0.9958
        13   MinMaxScaler ExtremeRandomTrees                0:00:11       0.9816    0.9958
        14   MinMaxScaler LightGBM                          0:00:11       0.9731    0.9958
        15   StandardScalerWrapper BernoulliNaiveBayes      0:00:11       0.9705    0.9958
        16   StandardScalerWrapper LogisticRegression       0:00:13       0.9959    0.9959
        17   MaxAbsScaler ExtremeRandomTrees                0:00:28       0.9906    0.9959
        18   RobustScaler LogisticRegression                0:00:13       0.9853    0.9959
        19   RobustScaler LightGBM                          0:00:12       0.9904    0.9959
        20   StandardScalerWrapper LogisticRegression       0:00:11       0.5000    0.9959
        21   MaxAbsScaler LinearSVM                         0:00:12       0.9871    0.9959
        22   StandardScalerWrapper SVM                      0:00:12       0.9873    0.9959
        23   RobustScaler LogisticRegression                0:00:14       0.9909    0.9959
        24   MaxAbsScaler LightGBM                          0:00:15       0.9901    0.9959
        25   RobustScaler LogisticRegression                0:00:29       0.9894    0.9959
        26   MaxAbsScaler LightGBM                          0:00:13       0.9897    0.9959
        27   MaxAbsScaler LightGBM                          0:00:15       0.9907    0.9959
        28   RobustScaler KNN                               0:00:12       0.9887    0.9959
        29   MaxAbsScaler LogisticRegression                0:00:13       0.9940    0.9959
        30   VotingEnsemble                                 0:00:31       0.9965    0.9965
        31   StackEnsemble                                  0:00:36       0.9960    0.9965
Stopping criteria reached at iteration 31. Ending experiment.

L'AUC est assez élevée à 0,99, il semble donc que quelque chose fuit, mais cette fois je l'ignorerai.

Résumé

J'ai résumé le flux d'exécution d'Azure ML dans l'environnement local. Bien que je pense qu'Azure ML soit pratique, j'aimerais que la documentation officielle d'Azure soit un peu plus facile à comprendre ...

Recommended Posts

Remarques sur l'exécution locale d'Azure Machine Learning
Remarques sur la grammaire Python de l'apprentissage automatique PyQ
Notes sur l'apprentissage automatique (mises à jour de temps en temps)
Bases de l'apprentissage automatique (mémoire)
Développement d'applications à l'aide d'Azure Machine Learning
Apprentissage automatique
[Premier apprentissage en profondeur] Remarques sur l'exécution de l'exemple après l'installation de Deel
Remarques sur l'exécution de M5Stick V avec uPyLoader
Notes personnelles et liens sur l'apprentissage automatique ① (Machine learning)
Apprentissage automatique avec Pytorch sur Google Colab
Notifier Slack lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
Notes d'apprentissage Python
Notes sur Flask
Arrêtez automatiquement la VM lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
notes d'apprentissage python
Installez la bibliothèque d'apprentissage automatique TensorFlow sur fedora23
Exemple d'apprentissage automatique
Points clés de «Machine learning avec Azure ML Studio»
Créer un environnement Python d'apprentissage automatique sur Mac OS
14 newsletters par e-mail utiles pour collecter des informations sur l'apprentissage automatique
Windows10 (x64) Créer nativement un environnement d'apprentissage automatique
Configurer des bibliothèques Python et d'apprentissage automatique sur Ubuntu
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Remarques sur les réseaux de neurones
Régression logistique d'apprentissage automatique
Notes d'apprentissage pour le mappeur de périphériques
Machine de vecteur de support d'apprentissage automatique
Remarques sur l'installation de PycURL
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
Remarques sur l'utilisation d'Alembic
Remarques sur les fonctions de la famille SciPy.linalg
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Créer un environnement d'apprentissage automatique à l'aide de Python sur MacOSX
J'ai installé la bibliothèque de machine learning automatique auto-sklearn sur centos7
Application iOS / iPad OS "Juno" qui permet l'apprentissage automatique sur iPad
Paramètres d'environnement d'apprentissage automatique basés sur Python3 sur Mac (coexistence avec Python2)