Deneme çalışmalarını izleyin ve ML modellerini MLflow ve Azure Machine Learning (Önizleme) ile dağıtınTrack experiment runs and deploy ML models with MLflow and Azure Machine Learning (preview)

Bu makalede, mlflow izlemeolarak bilinen MLFLOW izleme URI 'sini ve günlüğe kaydetme API 'sini etkinleştirmeyi ve Azure Machine Learning mlflow denemeleri 'ın arka ucu olarak nasıl bağlanacağınızı öğrenin.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.

Desteklenen yetenekler şunlardır:Supported capabilities include:

  • Azure Machine Learning çalışmaalanınızdaki deneme ölçümlerini ve yapıtları izleyin ve günlüğe kaydedin.Track and log experiment metrics and artifacts in your Azure Machine Learning workspace. Denemeleri için MLflow Izlemeyi zaten kullanıyorsanız, çalışma alanı eğitim ölçümlerini ve modellerini depolamak için merkezi, güvenli ve ölçeklenebilir bir konum sağlar.If you already use MLflow Tracking for your experiments, the workspace provides a centralized, secure, and scalable location to store training metrics and models.

  • Azure Machine Learning arka uç desteğiyle (Önizleme) MLflow projeleriyle eğitim işleri gönderebilirsiniz.Submit training jobs with MLflow Projects with Azure Machine Learning backend support (preview). İşleri Azure Machine Learning izlemeye yerel olarak gönderebilir veya yürütmeleri Azure Machine Learning bir işlemaracılığıyla buluta geçirebilirsiniz.You can submit jobs locally with Azure Machine Learning tracking or migrate your runs to the cloud like via an Azure Machine Learning Compute.

  • MLflow ve Azure Machine Learning modeli kayıt defterindeki modelleri izleyin ve yönetin.Track and manage models in MLflow and Azure Machine Learning model registry.

  • MLflow denemeleri 'nizi Azure Machine Learning Web hizmeti olarak dağıtın.Deploy your MLflow experiments as an Azure Machine Learning web service. Web hizmeti olarak dağıtarak, Azure Machine Learning izleme ve veri DRI algılama işlevlerini üretim modellerinize uygulayabilirsiniz.By deploying as a web service, you can apply the Azure Machine Learning monitoring and data drift detection functionalities to your production models.

Mlflow , Machine Learning denemeleri 'in yaşam döngüsünü yönetmeye yönelik açık kaynaklı bir kitaplıktır.MLflow is an open-source library for managing the life cycle of your machine learning experiments. MLFlow Izleme, bir MLflow bileşeni olan ve denemenizin ortamınız tarafından, uzak bir işlem hedefinde, bir sanal makinede veya Azure Databricks kümesindeyerel olarak, kendi ortamınızda olduğu gibi, eğitim çalıştırma ölçümleri ve model yapıtlarını kaydeder ve izler.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.

Not

Açık kaynak kitaplığı olarak MLflow sık sık değişir.As an open source library, MLflow changes frequently. Bu nedenle, Azure Machine Learning ve MLflow tümleştirmesiyle sunulan işlevlerin Microsoft tarafından tam olarak desteklenmeden bir önizleme olarak değerlendirilmesi gerekir.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.

Aşağıdaki diyagramda, MLflow Izlemenin yanı sıra, Azure Machine Learning çalışma alanınızda bir deneyin çalışma ölçümlerini ve mağaza modeli yapılarını izlersiniz.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.

Azure Machine Learning diyagramı ile mlflow

İpucu

Bu belgedeki bilgiler öncelikli olarak, model eğitimi sürecini izlemek isteyen veri bilimcileri ve geliştiricileri içindir.The information in this document is primarily for data scientists and developers who want to monitor the model training process. Kotalar, tamamlanan eğitim çalıştırmaları veya tamamlanmış model dağıtımları gibi Azure Machine Learning kaynak kullanımını ve olayları izlemek isteyen bir yöneticiyseniz, bkz. izleme Azure Machine Learning.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.

MLflow ve Azure Machine Learning istemcilerini karşılaştırınCompare MLflow and Azure Machine Learning clients

Aşağıdaki tabloda Azure Machine Learning kullanılabilecek farklı istemciler ve ilgili işlev özellikleri özetlenmektedir.The following table summarizes the different clients that can use Azure Machine Learning, and their respective function capabilities.

MLflow Izleme yalnızca Azure Machine Learning Python SDK 'sıaracılığıyla kullanılabilen ölçüm günlüğü ve yapıt depolama işlevleri sunar.MLflow Tracking offers metric logging and artifact storage functionalities that are only otherwise available via the Azure Machine Learning Python SDK.

ÖzellikCapability MLflow Izleme & dağıtımıMLflow Tracking & Deployment Python SDK Azure Machine LearningAzure Machine Learning Python SDK Azure Machine Learning CLıAzure Machine Learning CLI Azure Machine Learning StudioAzure Machine Learning studio
Çalışma alanını yönetManage workspace
Veri depolarını kullanmaUse data stores
Günlük ölçümleriLog metrics
Yapıtları karşıya yükleUpload artifacts
Ölçümleri görüntüleView metrics
İşlemi yönetmeManage compute
Modelleri dağıtmaDeploy models
Model performansını izlemeMonitor model performance
Veri değişikliklerini algılamaDetect data drift

Ön koşullarPrerequisites

Yerel çalıştırmaları izleTrack local runs

Azure Machine Learning ile MLflow Izleme, yerel çalıştırmanıza ait günlüğe kaydedilen ölçümleri ve yapıtları Azure Machine Learning çalışma alanınıza depolamanıza olanak sağlar.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your local runs into your Azure Machine Learning workspace.

mlflow Workspace Mlflow 'un izleme URI 'sine erişmek ve çalışma alanınızı yapılandırmak için ve sınıflarını içeri aktarın.Import the mlflow and Workspace classes to access MLflow's tracking URI and configure your workspace.

Aşağıdaki kodda get_mlflow_tracking_uri() yöntemi, çalışma alanına benzersiz bir Izleme URI adresi atar ws ve set_tracking_uri() MLFLOW izleme URI 'sini bu adrese yönlendirir.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())

Not

İzleme URI 'SI saat veya daha az bir saate kadar geçerlidir.The tracking URI is valid up to an hour or less. Bir boşta kalma zamanından sonra betiğinizi yeniden başlatırsanız, yeni bir URI almak için get_mlflow_tracking_uri API 'sini kullanın.If you restart your script after some idle time, use the get_mlflow_tracking_uri API to get a new URI.

MLflow deney adını ile ayarlayın set_experiment() ve öğreticinizi ile çalıştırın start_run() .Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Daha sonra log_metric() MLflow günlüğü API 'sini etkinleştirmek ve eğitim çalıştırma ölçümlerinizi günlüğe kaydetmeye başlamak için kullanın.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)

Uzak çalıştırmaları izleTrack remote runs

Uzak çalıştırmalar, modellerinizi GPU etkin sanal makineler veya Machine Learning İşlem kümeler gibi daha güçlü bir şekilde bir şekilde eğitmenizi sağlar.Remote runs let you train your models on more powerful computes, such as GPU enabled virtual machines, or Machine Learning Compute clusters. Farklı işlem seçenekleri hakkında bilgi edinmek için bkz. model eğitimi için işlem hedeflerini kullanma .See Use compute targets for model training to learn about different compute options.

Azure Machine Learning ile MLflow Izleme, uzak çalıştırmanıza ait günlüğe kaydedilen ölçümleri ve yapıtları Azure Machine Learning çalışma alanınıza depolamanıza olanak sağlar.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your remote runs into your Azure Machine Learning workspace. İçindeki MLflow Izleme kodu ile çalıştırılan tüm çalışan, çalışma alanında otomatik olarak günlüğe kaydedilecek ölçümleri olacaktır.Any run with MLflow Tracking code in it will have metrics logged automatically to the workspace.

Aşağıdaki örnek Conda ortamı, mlflow azureml-mlflow PIP paketleri içerir.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

Betiğinizdeki işlem ve eğitim çalıştırma ortamınızı Environment sınıfıyla yapılandırın.In your script, configure your compute and training run environment with the Environment class. Sonra, ScriptRunConfig işlem hedefi olarak uzak işlem ile oluşturun.Then, construct ScriptRunConfig with your remote compute as the compute target.

import mlflow

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

Bu işlem ve eğitim çalıştırma yapılandırmasıyla, Experiment.submit() bir çalıştırma göndermek için yöntemini kullanın.With this compute and training run configuration, use the Experiment.submit() method to submit a run. Bu yöntem, MLflow izleme URI 'sini otomatik olarak ayarlar ve MLflow oturumunu çalışma alanınıza yönlendirir.This method automatically sets the MLflow tracking URI and directs the logging from MLflow to your Workspace.

run = exp.submit(src)

MLflow projeleriyle eğitmeTrain with MLflow Projects

Mlflow projeleri , diğer veri bilimcilerinin (veya otomatikleştirilmiş araçların) çalışmasını sağlamak için kodunuzu düzenlemenize ve açıklamanıza olanak tanır.MLflow Projects allow for you to organize and describe your code to let other data scientists (or automated tools) run it. Azure Machine Learning olan MLflow projeleri, çalışma alanınızda eğitim çalıştırmalarını izlemenize ve yönetmenize olanak sağlar.MLflow Projects with Azure Machine Learning enables you to track and manage your training runs in your workspace.

Bu örnek, Azure Machine Learning izleme ile MLflow projelerinin yerel olarak nasıl gönderileceği gösterilmektedir.This example shows how to submit MLflow projects locally with Azure Machine Learning tracking.

azureml-mlflowDenemeleri yerel bilgisayarınızda Azure Machine Learning Ile MLflow izlemeyi kullanmak için paketini yükler.Install the azureml-mlflow package to use MLflow Tracking with Azure Machine Learning on your experiments locally. Denemeleri, bir Jupyter Not defteri veya kod Düzenleyicisi aracılığıyla çalıştırılabilir.Your experiments can run via a Jupyter notebook or code editor.

pip install azureml-mlflow

mlflow Workspace Mlflow 'un izleme URI 'sine erişmek ve çalışma alanınızı yapılandırmak için ve sınıflarını içeri aktarın.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())

MLflow deney adını ile ayarlayın set_experiment() ve öğreticinizi ile çalıştırın start_run() .Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Ardından, log_metric() MLflow günlüğü API 'sini etkinleştirmek ve eğitim çalıştırma ölçümlerinizi günlüğe kaydetmeye başlamak için kullanın.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)

İşlem hedefi ve kullanılacak yönetilen ortam türü gibi tümleştirme için gerekli bilgileri depolamak üzere arka uç yapılandırma nesnesi oluşturun.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}

azureml-mlflowÇalışma alanınızdaki ölçümleri ve anahtar yapıtları izlemek için, paketi ortam yapılandırma dosyanıza bir PIP bağımlılığı olarak ekleyin.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

Yerel çalıştırmayı gönder ve parametresini ayarlamış olduğunuzdan emin olun backend = "azureml" .Submit the local run and ensure you set the parameter backend = "azureml" . Bu ayarla, çalıştırmaları yerel olarak gönderebilir ve çalışma alanınızda otomatik çıkış izleme, günlük dosyaları, anlık görüntüler ve yazdırılmış hatalar için ek destek alabilirsiniz.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.

Azure Machine Learning Studio'da çalıştırmaların ve ölçümlerinizi görüntüleyin.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, 
                                    )

Çalışma alanınızdaki ölçümleri ve yapıtları görüntülemeView metrics and artifacts in your workspace

MLflow günlüğü 'ndeki ölçümler ve yapıtlar çalışma alanınızda tutulur.The metrics and artifacts from MLflow logging are kept in your workspace. Bunları dilediğiniz zaman görüntülemek için, çalışma alanınıza gidin ve Azure Machine Learning Studio'daki çalışma alanınızda ada göre deneyin ' i bulun.To view them anytime, navigate to your workspace and find the experiment by name in your workspace in Azure Machine Learning studio. Veya aşağıdaki kodu çalıştırın.Or run the below code.

run.get_metrics()
ws.get_details()

Modelleri yönetmeManage models

MLflow modeli kayıt defterini destekleyen Azure Machine Learning modeli kayıt defteriyle modellerinizi kaydedin ve izleyin.Register and track your models with the Azure Machine Learning model registry which supports the MLflow model registry. Azure Machine Learning modeller, bu modelleri farklı iş akışlarıyla dışarı ve içeri aktarmayı kolaylaştıran MLflow model şeması ile hizalanır.Azure Machine Learning models are aligned with the MLflow model schema making it easy to export and import these models across different workflows. Çalıştırma kimliği gibi MLflow ile ilgili meta veriler de izlenebilirlik için kayıtlı modelle etiketlenir.The MLflow related metadata such as, run id is also tagged with the registered model for traceability. Kullanıcılar, MLflow çalıştırmalarından üretilen eğitim çalıştırmaları, kayıt ve dağıtım modellerini gönderebilir.Users can submit training runs, register, and deploy models produced from MLflow runs.

Üretime yönelik modeli tek bir adımda dağıtmak ve kaydettirmek istiyorsanız bkz. MLflow modellerini dağıtma ve kaydetme.If you want to deploy and register your production ready model in one step, see Deploy and register MLflow models.

Bir çalışma kaynağından bir modeli kaydetmek ve görüntülemek için aşağıdaki adımları kullanın:To register and view a model from a run, use the following steps:

  1. Çalıştırma tamamlandıktan sonra register_model() yöntemi çağırın.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. Azure Machine Learning Studioile çalışma alanınızda kayıtlı modeli görüntüleyin.View the registered model in your workspace with Azure Machine Learning studio.

    Aşağıdaki örnekte kayıtlı modelde, my-model MLflow izleme meta verileri etiketlendi.In the following example the registered model, my-model has MLflow tracking metadata tagged.

    Register-mlflow-model

  3. MLflow model şeması (Conda. YAML, MLmodel, model. pkl) ile hizalı tüm model dosyalarını görmek için yapılar sekmesini seçin.Select the Artifacts tab to see all the model files that align with the MLflow model schema (conda.yaml, MLmodel, model.pkl).

    Model-şema

  4. Çalıştırma tarafından oluşturulan MLmodel dosyasını görmek için MLmodel ' i seçin.Select MLmodel to see the MLmodel file generated by the run.

    MLmodel-şema

MLflow modellerini dağıtma ve kaydetmeDeploy and register MLflow models

MLflow denemeleri 'i Azure Machine Learning Web hizmeti olarak dağıtmak, üretim modellerinize Azure Machine Learning model yönetimi ve veri Drın algılama özelliklerini kullanmanıza ve uygulamanıza olanak tanır.Deploying your MLflow experiments as an Azure Machine Learning web service allows you to leverage and apply the Azure Machine Learning model management and data drift detection capabilities to your production models.

Bunu yapmak için, şunu yapmanız gerekirTo do so, you need to

  1. Modelinizi kaydedin.Register your model.

  2. Senaryolarınız için kullanmak istediğiniz dağıtım yapılandırmasını saptayın.Determine which deployment configuration you want to use for your scenario.

    1. Azure Container Instance (acı) , hızlı bir geliştirme ve test dağıtımı için uygun bir seçimdir.Azure Container Instance (ACI) is a suitable choice for a quick dev-test deployment.
    2. Azure Kubernetes hizmeti (AKS) , ölçeklenebilir üretim dağıtımları için uygundur.Azure Kubernetes Service (AKS) is suitable for scalable production deployments.

Aşağıdaki diyagramda, MLflow dağıtım API 'SI ile, var olan MLflow modellerinizi bir Azure Machine Learning Web hizmeti olarak dağıtabileceğiniz, çerçeveler--PyTorch, TensorFlow, scikit-öğren, ONNX, vb. ve çalışma alanınızdaki üretim modellerinizi yönetme gibi işlemler gösterilmektedir.The following diagram demonstrates that with the MLflow deploy API you can deploy your existing MLflow models as an Azure Machine Learning web service, despite their frameworks--PyTorch, Tensorflow, scikit-learn, ONNX, etc., and manage your production models in your workspace.

 Azure Machine Learning ile mlflow modellerini dağıtmadeploy mlflow models with azure machine learning

ACI'ye dağıtmaDeploy to ACI

Deploy_configuration () yöntemiyle dağıtım yapılandırmanızı ayarlayın.Set up your deployment configuration with the deploy_configuration() method. Web hizmetinizi izlemeye yardımcı olmak için Etiketler ve açıklamalar da ekleyebilirsiniz.You can also add tags and descriptions to help keep track of your web service.

from azureml.core.webservice import AciWebservice, Webservice

# Set the model path to the model folder created by your run
model_path = "model"

# Configure 
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, 
                                                memory_gb=1, 
                                                tags={'method' : 'sklearn'}, 
                                                description='Diabetes model',
                                                location='eastus2')

Ardından, Azure Machine Learning SDK Deploy yöntemiyle modeli tek bir adımda kaydedin ve dağıtın.Then, register and deploy the model in one step with the Azure Machine Learning SDK deploy method.

(webservice,model) = mlflow.azureml.deploy( model_uri='runs:/{}/{}'.format(run.id, model_path),
                      workspace=ws,
                      model_name='sklearn-model', 
                      service_name='diabetes-model-1', 
                      deployment_config=aci_config, 
                      tags=None, mlflow_home=None, synchronous=True)

webservice.wait_for_deployment(show_output=True)

AKS’ye dağıtmaDeploy to AKS

AKS 'e dağıtmak için önce bir AKS kümesi oluşturun.To deploy to AKS, first create an AKS cluster. ComputeTarget. Create () yöntemini kullanarak bir aks kümesi oluşturun.Create an AKS cluster using the ComputeTarget.create() method. Yeni bir küme oluşturmak 20-25 dakika sürebilir.It may take 20-25 minutes to create a new cluster.

from azureml.core.compute import AksCompute, ComputeTarget

# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()

aks_name = 'aks-mlflow'

# Create the cluster
aks_target = ComputeTarget.create(workspace=ws, 
                                  name=aks_name, 
                                  provisioning_configuration=prov_config)

aks_target.wait_for_completion(show_output = True)

print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)

Deploy_configuration () yöntemiyle dağıtım yapılandırmanızı ayarlayın.Set up your deployment configuration with the deploy_configuration() method. Web hizmetinizi izlemeye yardımcı olmak için Etiketler ve açıklamalar da ekleyebilirsiniz.You can also add tags and descriptions to help keep track of your web service.

from azureml.core.webservice import Webservice, AksWebservice

# Set the web service configuration (using default here with app insights)
aks_config = AksWebservice.deploy_configuration(enable_app_insights=True, compute_target_name='aks-mlflow')

Ardından, modeli Azure Machine Learning SDK [Deploy ()] ile tek bir adımda kaydedip dağıtın (sonra, modeli Azure Machine Learning SDK Deploy metodunu kullanarak kaydedin ve dağıtın.Then, register and deploy the model in one step with the Azure Machine Learning SDK [deploy()](Then, register and deploy the model by using the Azure Machine Learning SDK deploy method.


# Webservice creation using single command
from azureml.core.webservice import AksWebservice, Webservice

# set the model path 
model_path = "model"

(webservice, model) = mlflow.azureml.deploy( model_uri='runs:/{}/{}'.format(run.id, model_path),
                      workspace=ws,
                      model_name='sklearn-model', 
                      service_name='my-aks', 
                      deployment_config=aks_config, 
                      tags=None, mlflow_home=None, synchronous=True)


webservice.wait_for_deployment()

Hizmet dağıtımı birkaç dakika sürebilir.The service deployment can take several minutes.

Kaynakları temizlemeClean up resources

Çalışma alanınızda günlüğe kaydedilen ölçümleri ve yapıtları kullanmayı planlamıyorsanız, bunları tek tek silme özelliği şu anda kullanılamaz.If you don't plan to use the logged metrics and artifacts in your workspace, the ability to delete them individually is currently unavailable. Bunun yerine, depolama hesabı ve çalışma alanını içeren kaynak grubunu silip herhangi bir ücret ödemeniz gerekmez:Instead, delete the resource group that contains the storage account and workspace, so you don't incur any charges:

  1. Azure portalının en sol tarafındaki Kaynak gruplarını seçin.In the Azure portal, select Resource groups on the far left.

    Azure portal Sil

  2. Listeden oluşturduğunuz kaynak grubunu seçin.From the list, select the resource group you created.

  3. Kaynak grubunu sil'i seçin.Select Delete resource group.

  4. Kaynak grubu adını girin.Enter the resource group name. Ardından Sil’i seçin.Then select Delete.

Örnek not defterleriExample notebooks

Azure ML Not defterleri Ile Mlflow , bu makalede sunulan kavramları gösterir ve genişletir.The MLflow with Azure ML notebooks demonstrate and expand upon concepts presented in this article.

Sonraki adımlarNext steps