[PYTHON] Hinweise zum lokalen Ausführen von Azure Machine Learning

Einführung

Als ich versuchte, Azure Machine Learning auf einem lokalen Computer zu verwenden, wurde es trotz offizieller Dokumentation und Informationen mehrmals gepackt und die Ausführung dauerte lange. Daher werde ich eine Notiz als Memorandum erstellen.

Dieses Mal werde ich vom Setup von Ubuntu, auf dem Azure ML ausgeführt wird, bis zur Ausführung von Azure ML zusammenfassen.

Umwelt vorbereiten

Richten Sie Ihre Ubuntu 18.04-Umgebung mit dem Docker-Image auf Ihrem Mac ein. Ich werde die Erfassung des Docker-Images und des Ausführungsteils weglassen.

Darüber hinaus müssen Sie ein Azure-Konto und einen Arbeitsbereich erstellen, um Azure ML ausführen zu können. Ich werde die Arbeit weglassen.

Ubuntu Image Setup

apt-get update
apt-get upgrade

Es gibt einige Dinge, die das Docker-Image nicht ausreicht. Lesen Sie daher hier (https://qiita.com/manabuishiirb/items/26de8c9740a1d2c7cfdd) und installieren Sie die erforderlichen.

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

Installation von Anaconda

Dieses Mal werde ich es mit einem Befehl installieren und Anaconda wie folgt herunterladen, indem ich darauf verweise (https://www.virment.com/setup-anaconda-python-jupyter-ubuntu/).

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

Installieren Sie wie folgt.


bash Anaconda3-2019.10-Linux-x86_64.sh

Führen Sie conda in it aus, um den Befehl conda zu aktivieren. Nachdem Sie es in / root / installiert haben, führen Sie den folgenden Befehl aus:

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

Installieren des Azure Python SDK

Installieren Sie azure-ml anhand des offiziellen Dokuments (https://docs.microsoft.com/ja-jp/azure/machine-learning/service/how-to-configure-environment#local). Erstellen Sie zunächst eine virtuelle Anaconda-Umgebung.

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)"

Installieren Sie als Nächstes die für die Authentifizierung usw. erforderliche Azure-CLI. Ich habe darauf hingewiesen (https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-apt?view=azure-cli-latest).

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

Installieren Sie abschließend das Azure ML SDK.

pip install azureml-sdk[notebooks,automl]

Der folgende Fehler erscheint auf dem Weg, aber es gab kein Problem.

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.

Automatisches maschinelles Lernen durchführen

Authentifizierung durch "az login"

Authentifizieren Sie sich zunächst mit dem Befehl "az login". Greifen Sie mit einem Webbrowser auf die URL zu, die nach dem Ausführen des Befehls angezeigt wird, und geben Sie den Code ein.

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

Erstellen einer Datei für die Verbindung zum Arbeitsbereich

Erstellen Sie ein Python-Programm (auth.py), um Arbeitsbereichsinformationen zu erstellen.

auth.py


from azureml.core import Workspace

subscription_id = '<Abonnement-ID>'
resource_group  = '<Name der Ressourcengruppe>'
workspace_name  = '<Name des Arbeitsbereichs>'

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')

Bei der Ausführung wird eine Konfigurationsdatei für die Verbindung zum Arbeitsbereich in ".azureml / config.json" im aktuellen Verzeichnis erstellt.

Lauf

Erstellen Sie ein Python-Programm (run.py), um maschinelles Lernen durchzuführen. Für die Daten verwenden wir die Brustkrebsdaten von scicit-learn. Weitere Informationen zu Datensätzen finden Sie hier (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

#Arbeitsbereichskonfiguration gelesen
ws = Workspace.from_config()

#Lade Daten
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)

#Einstellungen für maschinelles Lernen
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)

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

Der in automl_settings eingestellte Teil wird entsprechend den Daten und dem Problem beschrieben. Da dies ein binäres Klassifizierungsproblem ist, wird der Optimierungsindex auf AUC und die Klassifizierung auf "Task" von "AutoMLConfig" gesetzt. Klicken Sie hier für Details (https://docs.microsoft.com/ja-jp/azure/machine-learning/service/how-to-configure-auto-train).

Bei der Ausführung werden einige Modelle und Ensembles nach einem einfachen Feature-Quantity-Engineering erstellt.

python run.py 

(Kürzung)

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.

Die AUC ist mit 0,99 ziemlich hoch, daher scheint etwas zu lecken, aber dieses Mal werde ich es ignorieren.

Zusammenfassung

Ich habe den Ablauf für die Ausführung von Azure ML in der lokalen Umgebung zusammengefasst. Obwohl ich Azure ML für praktisch halte, wünschte ich mir, die offizielle Azure-Dokumentation wäre etwas einfacher zu verstehen ...

Recommended Posts

Hinweise zum lokalen Ausführen von Azure Machine Learning
Hinweise zur Python-Grammatik für maschinelles Lernen in PyQ
Hinweise zum maschinellen Lernen (von Zeit zu Zeit aktualisiert)
Grundlagen des maschinellen Lernens (Denkmal)
Anwendungsentwicklung mit Azure Machine Learning
Maschinelles Lernen
[Erstes tiefes Lernen] Hinweise zum Ausführen des Beispiels nach der Installation von Deel
Hinweise zum Ausführen von M5Stick V mit uPyLoader
Persönliche Notizen und Links zum maschinellen Lernen ① (Maschinelles Lernen)
Maschinelles Lernen mit Pytorch in Google Colab
Benachrichtigen Sie Slack, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
Python-Lernnotizen
Hinweise zur Flasche
Stoppen Sie die VM automatisch, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Python-Lernnotizen
Installieren Sie die Bibliothek für maschinelles Lernen TensorFlow auf fedora23
Beispiel für maschinelles Lernen
Wichtige Punkte von "Maschinelles Lernen mit Azure ML Studio"
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
14 E-Mail-Newsletter zum Sammeln von Informationen zum maschinellen Lernen
Windows10 (x64) Erstellen Sie nativ eine maschinelle Lernumgebung
Richten Sie Python- und maschinelle Lernbibliotheken unter Ubuntu ein
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Hinweise zu neuronalen Netzen
Logistische Regression beim maschinellen Lernen
Lernnotizen für Device Mapper
Maschinelles Lernen unterstützt Vektormaschine
Hinweise zur Installation von PycURL
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Hinweise zur Verwendung von Alembic
Hinweise zu Funktionen der SciPy.linalg-Familie
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
Ich habe die automatische maschinelle Lernbibliothek auto-sklearn auf centos7 installiert
iOS / iPad OS App "Juno", die maschinelles Lernen auf dem iPad ermöglicht
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)