Uczenie i śledzenie modeli ML przy użyciu MLflow i Azure Machine Learning (wersja zapoznawcza)Train and track ML models with MLflow and Azure Machine Learning (preview)

W tym artykule dowiesz się, jak włączyć śledzenie MLflow identyfikatorów URI i interfejsów API rejestrowania, wspólnie znane jako śledzenie MLflow, aby połączyć Azure Machine Learning jako zaplecze eksperymentów MLflow.In this article, learn how to enable MLflow's tracking URI and logging API, collectively known as MLflow Tracking, to connect Azure Machine Learning as the backend of your MLflow experiments.

Obsługiwane są następujące możliwości:Supported capabilities include:

  • Śledź i Rejestruj metryki eksperymentów i artefakty w obszarze roboczym Azure Machine Learning.Track and log experiment metrics and artifacts in your Azure Machine Learning workspace. Jeśli już używasz śledzenia MLflow do eksperymentów, obszar roboczy zapewnia scentralizowaną, bezpieczną i skalowalną lokalizację do przechowywania metryk i modeli szkoleniowych.If you already use MLflow Tracking for your experiments, the workspace provides a centralized, secure, and scalable location to store training metrics and models.

  • Przesyłaj zadania szkoleniowe z projektami MLflow z obsługą zaplecza Azure Machine Learning (wersja zapoznawcza).Submit training jobs with MLflow Projects with Azure Machine Learning backend support (preview). Zadania można przesyłać lokalnie, korzystając z Azure Machine Learning śledzenia lub migrowania przebiegów w chmurze, podobnie jak w przypadku obliczeń Azure Machine Learning.You can submit jobs locally with Azure Machine Learning tracking or migrate your runs to the cloud like via an Azure Machine Learning Compute.

  • Śledź modele i zarządzaj nimi w rejestrze MLflow i Azure Machine Learning model.Track and manage models in MLflow and Azure Machine Learning model registry.

MLflow to biblioteka typu open source służąca do zarządzania cyklem życia eksperymentów uczenia maszynowego.MLflow is an open-source library for managing the life cycle of your machine learning experiments. Śledzenie MLFlow jest składnikiem MLflow, który rejestruje i śledzi przebiegi szkoleniowe i artefakty modelu, niezależnie od środowiska eksperymentu — lokalnie na komputerze, na zdalnym serwerze docelowym obliczeń, maszynie wirtualnej lub klastrze Azure Databricks.MLFlow Tracking is a component of MLflow that logs and tracks your training run metrics and model artifacts, no matter your experiment's environment--locally on your computer, on a remote compute target, a virtual machine, or an Azure Databricks cluster.

Uwaga

Jako Biblioteka open source MLflow często zmienia się.As an open source library, MLflow changes frequently. W związku z tym funkcje udostępnione w ramach integracji Azure Machine Learning i MLflow powinny być traktowane jako wersja zapoznawcza i nie są w pełni obsługiwane przez firmę Microsoft.As such, the functionality made available via the Azure Machine Learning and MLflow integration should be considered as a preview, and not fully supported by Microsoft.

Na poniższym diagramie przedstawiono, że śledzenie MLflow umożliwia śledzenie metryk uruchamiania i modeli magazynu eksperymentu w obszarze roboczym Azure Machine Learning.The following diagram illustrates that with MLflow Tracking, you track an experiment's run metrics and store model artifacts in your Azure Machine Learning workspace.

mlflow z diagramem usługi Azure Machine Learning

Porada

Informacje przedstawione w tym dokumencie są przeznaczone głównie dla analityków danych i deweloperów, którzy chcą monitorować proces szkolenia modelu.The information in this document is primarily for data scientists and developers who want to monitor the model training process. Jeśli jesteś administratorem zainteresowani monitorowaniem użycia zasobów i zdarzeń z Azure Machine Learning, takich jak przydziały, ukończone przebiegi szkoleniowe lub wdrożone wdrożenia modelu, zobacz Azure Machine Learning monitorowania.If you are an administrator interested in monitoring resource usage and events from Azure Machine Learning, such as quotas, completed training runs, or completed model deployments, see Monitoring Azure Machine Learning.

Porównanie klientów MLflow i Azure Machine LearningCompare MLflow and Azure Machine Learning clients

Poniższa tabela zawiera podsumowanie różnych klientów, którzy mogą używać Azure Machine Learning i ich możliwości funkcji.The following table summarizes the different clients that can use Azure Machine Learning, and their respective function capabilities.

Śledzenie MLflow oferuje funkcje rejestrowania metryk i magazynu artefaktów, które są dostępne tylko w innym przypadku za pośrednictwem Azure Machine Learning Python SDK.MLflow Tracking offers metric logging and artifact storage functionalities that are only otherwise available via the Azure Machine Learning Python SDK.

MożliwośćCapability MLflow śledzenie &MLflow Tracking & Deployment Azure Machine Learning Python SDKAzure Machine Learning Python SDK Interfejs wiersza polecenia usługi Azure Machine LearningAzure Machine Learning CLI Studio uczenia maszynowego AzureAzure Machine Learning studio
Zarządzanie obszarem roboczymManage workspace
Korzystanie z magazynów danychUse data stores
Metryki dziennikówLog metrics
Przekaż artefaktyUpload artifacts
Wyświetlanie metrykView metrics
Zarządzanie obliczeniamiManage compute
Wdrażanie modeliDeploy models
Monitorowanie wydajności modeluMonitor model performance
Wykrywanie dryfu danychDetect data drift

Wymagania wstępnePrerequisites

Śledź uruchomienia lokalneTrack local runs

Śledzenie MLflow za pomocą Azure Machine Learning umożliwia przechowywanie zarejestrowanych metryk i artefaktów z lokalnych przebiegów w obszarze roboczym Azure Machine Learning.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your local runs into your Azure Machine Learning workspace.

Zaimportuj mlflow klasy i, Workspace Aby uzyskać dostęp do śledzenia identyfikatorów URI MLflow i skonfigurować obszar roboczy.Import the mlflow and Workspace classes to access MLflow's tracking URI and configure your workspace.

W poniższym kodzie get_mlflow_tracking_uri() Metoda przypisuje unikatowy adres URI śledzenia do obszaru roboczego, ws a następnie wskazuje na ten set_tracking_uri() adres identyfikator URI śledzenia MLflow.In the following code, the get_mlflow_tracking_uri() method assigns a unique tracking URI address to the workspace, ws, and set_tracking_uri() points the MLflow tracking URI to that address.

import mlflow
from azureml.core import Workspace

ws = Workspace.from_config()

mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

Uwaga

Identyfikator URI śledzenia jest prawidłowy do godziny lub mniej.The tracking URI is valid up to an hour or less. Jeśli ponownie uruchomisz skrypt po pewnym czasie bezczynności, użyj interfejsu API get_mlflow_tracking_uri, aby uzyskać nowy identyfikator URI.If you restart your script after some idle time, use the get_mlflow_tracking_uri API to get a new URI.

Ustaw nazwę eksperymentu MLflow z set_experiment() i zacznij korzystać z szkolenia w systemie start_run() .Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Następnie użyj, log_metric() Aby aktywować interfejs API rejestrowania MLflow i rozpocząć rejestrowanie metryk przebiegu szkoleniowego.Then use log_metric() to activate the MLflow logging API and begin logging your training run metrics.

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

with mlflow.start_run():
    mlflow.log_metric('alpha', 0.03)

Śledź zdalne uruchomieniaTrack remote runs

Zdalne uruchomienia umożliwiają uczenie modeli przy większej liczbie zaawansowanych obliczeń, takich jak maszyny wirtualne obsługujące procesor GPU lub klastry środowisko obliczeniowe usługi Machine Learning.Remote runs let you train your models on more powerful computes, such as GPU enabled virtual machines, or Machine Learning Compute clusters. Aby dowiedzieć się więcej o różnych opcjach obliczeniowych, zobacz use Target COMPUTE for model Training .See Use compute targets for model training to learn about different compute options.

Śledzenie MLflow za pomocą Azure Machine Learning umożliwia przechowywanie zarejestrowanych metryk i artefaktów z zdalnych przebiegów w obszarze roboczym Azure Machine Learning.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your remote runs into your Azure Machine Learning workspace. Wszystkie uruchomienia z kodem śledzącym MLflow w tym obszarze będą automatycznie rejestrowane metryki w obszarze roboczym.Any run with MLflow Tracking code in it will have metrics logged automatically to the workspace.

Poniższe przykładowe środowisko Conda obejmuje mlflow i azureml-mlflow jako pakiety PIP.The following example conda environment includes mlflow and azureml-mlflow as pip packages.

name: sklearn-example
dependencies:
  - python=3.6.2
  - scikit-learn
  - matplotlib
  - numpy
  - pip:
    - azureml-mlflow
    - numpy

W skrypcie Skonfiguruj środowisko uruchomieniowe obliczeniowe i szkoleniowe z Environment klasą.In your script, configure your compute and training run environment with the Environment class. Następnie Utwórz ScriptRunConfig z użyciem obliczeń zdalnych jako element docelowy obliczeń.Then, construct ScriptRunConfig with your remote compute as the compute target.

import mlflow

with mlflow.start_run():
    mlflow.log_metric('example', 1.23)

W przypadku konfiguracji przebiegu obliczeń i szkoleń Użyj Experiment.submit() metody do przesyłania przebiegu.With this compute and training run configuration, use the Experiment.submit() method to submit a run. Ta metoda automatycznie ustawia identyfikator URI śledzenia MLflow i kieruje rejestrowanie z MLflow do obszaru roboczego.This method automatically sets the MLflow tracking URI and directs the logging from MLflow to your Workspace.

run = exp.submit(src)

Uczenie się z projektami MLflowTrain with MLflow Projects

Projekty MLflow umożliwiają organizowanie i opisywanie kodu w celu umożliwienia im uruchamiania innych naukowców z danymi (lub zautomatyzowanych narzędzi).MLflow Projects allow for you to organize and describe your code to let other data scientists (or automated tools) run it. Projekty MLflow z Azure Machine Learning umożliwiają śledzenie przebiegów szkoleniowych i zarządzanie nimi w obszarze roboczym.MLflow Projects with Azure Machine Learning enables you to track and manage your training runs in your workspace.

W tym przykładzie przedstawiono sposób lokalnego przesyłania projektów MLflow przy użyciu śledzenia Azure Machine Learning.This example shows how to submit MLflow projects locally with Azure Machine Learning tracking.

Zainstaluj azureml-mlflow pakiet, aby korzystać z funkcji śledzenia MLflow z Azure Machine Learning na eksperymentach lokalnie.Install the azureml-mlflow package to use MLflow Tracking with Azure Machine Learning on your experiments locally. Eksperymenty mogą działać za pośrednictwem Jupyter Notebook lub edytora kodu.Your experiments can run via a Jupyter Notebook or code editor.

pip install azureml-mlflow

Zaimportuj mlflow klasy i, Workspace Aby uzyskać dostęp do śledzenia identyfikatorów URI MLflow i skonfigurować obszar roboczy.Import the mlflow and Workspace classes to access MLflow's tracking URI and configure your workspace.

import mlflow
from azureml.core import Workspace

ws = Workspace.from_config()

mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

Ustaw nazwę eksperymentu MLflow z set_experiment() i zacznij korzystać z szkolenia w systemie start_run() .Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Następnie użyj usługi, log_metric() Aby aktywować interfejs API rejestrowania MLflow i rozpocząć rejestrowanie metryk uruchamiania szkoleniowego.Then, use log_metric() to activate the MLflow logging API and begin logging your training run metrics.

experiment_name = 'experiment-with-mlflow-projects'
mlflow.set_experiment(experiment_name)

Utwórz obiekt konfiguracji zaplecza do przechowywania informacji niezbędnych do integracji, takich jak, obiekt docelowy obliczeń i typ zarządzanego środowiska do użycia.Create the backend configuration object to store necessary information for the integration such as, the compute target and which type of managed environment to use.

backend_config = {"USE_CONDA": False}

Dodaj azureml-mlflow pakiet jako zależność PIP do pliku konfiguracji środowiska w celu śledzenia metryk i kluczowych artefaktów w obszarze roboczym.Add the azureml-mlflow package as a pip dependency to your environment configuration file in order to track metrics and key artifacts in your workspace.

name: mlflow-example
channels:
  - defaults
  - anaconda
  - conda-forge
dependencies:
  - python=3.6
  - scikit-learn=0.19.1
  - pip
  - pip:
    - mlflow
    - azureml-mlflow

Prześlij przebieg lokalny i upewnij się, że parametr został ustawiony backend = "azureml" .Submit the local run and ensure you set the parameter backend = "azureml" . Za pomocą tego ustawienia można przesłać uruchomienia lokalnie i uzyskać dodatkową obsługę funkcji automatycznego śledzenia danych wyjściowych, plików dziennika, migawek i wydrukowanych błędów w obszarze roboczym.With this setting, you can submit runs locally and get the added support of automatic output tracking, log files, snapshots, and printed errors in your workspace.

Wyświetl swoje uruchomienia i metryki w Azure Machine Learning Studio.View your runs and metrics in the Azure Machine Learning studio.

local_env_run = mlflow.projects.run(uri=".", 
                                    parameters={"alpha":0.3},
                                    backend = "azureml",
                                    use_conda=False,
                                    backend_config = backend_config, 
                                    )

Wyświetlanie metryk i artefaktów w obszarze roboczymView metrics and artifacts in your workspace

Metryki i artefakty z rejestrowania MLflow są przechowywane w Twoim obszarze roboczym.The metrics and artifacts from MLflow logging are kept in your workspace. Aby wyświetlić je w dowolnym momencie, przejdź do obszaru roboczego i Znajdź eksperyment według nazwy w obszarze roboczym w programie Azure Machine Learning Studio.To view them anytime, navigate to your workspace and find the experiment by name in your workspace in Azure Machine Learning studio. Lub uruchom poniższy kod.Or run the below code.

run.get_metrics()

Zarządzanie modelamiManage models

Zarejestruj i śledź modele przy użyciu rejestru modelu Azure Machine Learning , który obsługuje rejestr modelu MLflow.Register and track your models with the Azure Machine Learning model registry which supports the MLflow model registry. Modele Azure Machine Learning są wyrównane ze schematem modelu MLflow, dzięki czemu można łatwo eksportować i importować te modele w różnych przepływach pracy.Azure Machine Learning models are aligned with the MLflow model schema making it easy to export and import these models across different workflows. Metadane pokrewne MLflow, takie jak, identyfikator przebiegu są również oznaczone zarejestrowanym modelem na potrzeby śledzenia.The MLflow related metadata such as, run ID is also tagged with the registered model for traceability. Użytkownicy mogą przesyłać przebiegi szkoleniowe, rejestrować i wdrażać modele wytwarzane z MLflow.Users can submit training runs, register, and deploy models produced from MLflow runs.

Jeśli chcesz wdrożyć i zarejestrować gotowy do zastosowania model produkcyjny w jednym kroku, zobacz temat wdrażanie i rejestrowanie modeli MLflow.If you want to deploy and register your production ready model in one step, see Deploy and register MLflow models.

Aby zarejestrować i wyświetlić model z przebiegu, wykonaj następujące czynności:To register and view a model from a run, use the following steps:

  1. Po zakończeniu przebiegu wywołania register_model() metody.Once the run is complete call the register_model() method.

    # the model folder produced from the run is registered. This includes the MLmodel file, model.pkl and the conda.yaml.
    run.register_model(model_name = 'my-model', model_path = 'model')
    
  2. Wyświetl zarejestrowany model w obszarze roboczym przy użyciu programu Azure Machine Learning Studio.View the registered model in your workspace with Azure Machine Learning studio.

    W poniższym przykładzie zarejestrowany model my-model ma otagowane metadane śledzenia MLflow.In the following example the registered model, my-model has MLflow tracking metadata tagged.

    Register-mlflow-model

  3. Wybierz kartę artefakty , aby wyświetlić wszystkie pliki modelu, które są wyrównane ze schematem modelu MLflow (Conda. YAML, MLmodel, model. PKL).Select the Artifacts tab to see all the model files that align with the MLflow model schema (conda.yaml, MLmodel, model.pkl).

    Model — schemat

  4. Wybierz pozycję MLmodel, aby wyświetlić plik MLmodel wygenerowany przez uruchomienie.Select MLmodel to see the MLmodel file generated by the run.

    MLmodel — schemat

Czyszczenie zasobówClean up resources

Jeśli nie planujesz używania zarejestrowanych metryk i artefaktów w obszarze roboczym, możliwość ich usunięcia osobno jest obecnie niedostępna.If you don't plan to use the logged metrics and artifacts in your workspace, the ability to delete them individually is currently unavailable. Zamiast tego należy usunąć grupę zasobów zawierającą konto magazynu i obszar roboczy, dzięki czemu nie zostaną naliczone żadne opłaty:Instead, delete the resource group that contains the storage account and workspace, so you don't incur any charges:

  1. W witrynie Azure Portal na końcu z lewej strony wybierz pozycję Grupy zasobów.In the Azure portal, select Resource groups on the far left.

    Usuwanie w witrynie Azure Portal

  2. Wybierz utworzoną grupę zasobów z listy.From the list, select the resource group you created.

  3. Wybierz pozycję Usuń grupę zasobów.Select Delete resource group.

  4. Wpisz nazwę grupy zasobów.Enter the resource group name. Następnie wybierz pozycję Usuń.Then select Delete.

Przykładowe notesyExample notebooks

MLflow z usługami Azure ml notesy pokazują i rozszerzają w oparciu o koncepcje przedstawione w tym artykule.The MLflow with Azure ML notebooks demonstrate and expand upon concepts presented in this article.

Uwaga

Repozytorium oparte na społeczności przykłady korzystające z usługi mlflow można znaleźć pod adresem https://github.com/Azure/azureml-examples .A community-driven repository of examples using mlflow can be found at https://github.com/Azure/azureml-examples.

Następne krokiNext steps