Azure Machine Learning için MLflow'u yapılandırma

Bu makalede, MLflow'u izleme, kayıt defterleri ve dağıtım için bir Azure Machine Learning çalışma alanına bağlanacak şekilde nasıl yapılandırabileceğiniz açıklanmaktadır.

Azure Machine Learning çalışma alanları MLflow ile uyumludur; bu da ek yapılandırma olmadan bir MLflow sunucusu gibi davranabilecekleri anlamına gelir. Her çalışma alanı, MLflow'un çalışma alanına bağlanmak için kullanabileceği bir MLflow izleme URI'sine sahiptir. Azure Machine Learning çalışma alanları zaten MLflow ile çalışacak şekilde yapılandırılmıştır, bu nedenle ek yapılandırma gerekmez.

Ancak Azure Machine Learning dışında çalışıyorsanız (yerel makineniz, Azure Synapse Analytics veya Azure Databricks gibi), MLflow'un çalışma alanını işaret eden şekilde yapılandırılması gerekir.

Önemli

Azure İşlem üzerinde çalışırken (Azure Machine Learning Not Defterleri, Azure Machine Learning işlem örneklerinde barındırılan Jupyter not defterleri veya Azure Machine Learning işlem kümelerinde çalışan işler), izleme URI'sini yapılandırmanız gerekmez. Sizin için otomatik olarak yapılandırılır.

Önkoşullar

Bu öğreticiyi izlemek için aşağıdaki önkoşullara ihtiyacınız vardır:

  • MLflow SDK paketini mlflow ve MLflow azureml-mlflowiçin Azure Machine Learning eklentisini yükleyin.

    pip install mlflow azureml-mlflow
    

    İpucu

    SQL depolama, sunucu, kullanıcı arabirimi veya veri bilimi bağımlılıkları olmadan basit bir MLflow paketi olan paketini kullanabilirsiniz mlflow-skinny . mlflow-skinny dağıtımlar da dahil olmak üzere tüm özellik paketini içeri aktarmadan öncelikle MLflow'un izleme ve günlüğe kaydetme özelliklerine ihtiyaç duyan kullanıcılar için önerilir.

  • Azure Machine Learning çalışma alanı. Makine öğrenmesi kaynakları oluşturma öğreticisini izleyerek bir tane oluşturabilirsiniz.

  • Uzaktan izleme (yani Azure Machine Learning dışında çalışan izleme denemeleri) gerçekleştiriyorsanız, MLflow'ı Azure Machine Learning çalışma alanınızın izleme URI'sine işaret eden şekilde yapılandırın. MLflow'u çalışma alanınıza bağlama hakkında daha fazla bilgi için bkz . Azure Machine Learning için MLflow'u yapılandırma.

MLflow izleme URI'sini yapılandırma

MLflow'u bir Azure Machine Learning çalışma alanına bağlamak için çalışma alanının izleme URI'sine ihtiyacınız vardır. Her çalışma alanının kendi izleme URI'sine ve protokolüne azureml://sahiptir.

  1. Çalışma alanınız için izleme URI'sini alın:

    ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

    1. Oturum açın ve çalışma alanınızı yapılandırın:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. şu komutu kullanarak izleme URI'sini az ml workspace alabilirsiniz:

      az ml workspace show --query mlflow_tracking_uri
      
  2. İzleme URI'sini yapılandırma:

    Ardından yöntemi set_tracking_uri() MLflow izleme URI'sini bu URI'ye işaret eder.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    İpucu

    Azure Databricks kümesi, Azure Synapse Analytics kümesi veya benzeri paylaşılan ortamlar üzerinde çalışırken, MLflow izleme URI'sini oturum başına yapmak yerine kümede çalışan tüm oturumlar için Azure Machine Learning'e işaret edecek şekilde otomatik olarak yapılandırmak üzere ortam değişkenini MLFLOW_TRACKING_URI küme düzeyinde ayarlamak yararlı olur.

Kimlik doğrulamasını yapılandırma

İzleme ayarlandıktan sonra, ilişkili çalışma alanı için kimlik doğrulama yöntemini de yapılandırmanız gerekir. Varsayılan olarak, MLflow için Azure Machine Learning eklentisi kimlik bilgilerini isteyecek şekilde varsayılan tarayıcıyı açarak etkileşimli kimlik doğrulaması gerçekleştirir.

MLflow için Azure Machine Learning eklentisi, eklentisi azureml-mlflowiçin bir bağımlılık olarak yüklenen paketi azure-identityaracılığıyla çeşitli kimlik doğrulama mekanizmalarını destekler. Aşağıdaki kimlik doğrulama yöntemleri, biri başarılı olana kadar tek tek deneniyor:

  1. Ortam: Ortam değişkenleri aracılığıyla belirtilen hesap bilgilerini okur ve kimlik doğrulaması için kullanır.
  2. Yönetilen Kimlik: Uygulama, Yönetilen Kimlik etkin bir Azure konağına dağıtılırsa, uygulamayla kimlik doğrulaması yapar.
  3. Azure CLI: Bir kullanıcı Azure CLI az login komutuyla oturum açarsa, o kullanıcı olarak kimlik doğrulaması yapar.
  4. Azure PowerShell: Bir kullanıcı Azure PowerShell'in Connect-AzAccount komutuyla oturum açarsa, o kullanıcı olarak kimlik doğrulaması yapar.
  5. Etkileşimli tarayıcı: Kullanıcının kimliğini varsayılan tarayıcı üzerinden etkileşimli olarak doğrular.

Oturuma bağlı bir kullanıcının bulunduğu etkileşimli işler için Etkileşimli Kimlik Doğrulaması'na güvenebilirsiniz ve bu nedenle başka işlem yapmanız gerekmez.

Uyarı

Etkileşimli tarayıcı kimlik doğrulaması, kimlik bilgileri istenirken kod yürütülmesini engeller. Eğitim işleri gibi katılımsız ortamlarda kimlik doğrulaması için uygun bir seçenek değildir. Diğer kimlik doğrulama modunu yapılandırmanızı öneririz.

Katılımsız yürütmenin gerekli olduğu senaryolarda, Azure Machine Learning ile iletişim kurmak için bir hizmet sorumlusu yapılandırmanız gerekir.

import os

os.environ["AZURE_TENANT_ID"] = "<AZURE_TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<AZURE_CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<AZURE_CLIENT_SECRET>"

İpucu

Paylaşılan ortamlar üzerinde çalışırken, işlemde bu ortam değişkenlerinin yapılandırılması önerilir. En iyi uygulama olarak, mümkün olduğunca bunları Azure Key Vault örneğinde gizli diziler olarak yönetin. Örneğin, Azure Databricks'te küme yapılandırmasında aşağıdaki gibi ortam değişkenlerinde gizli dizileri kullanabilirsiniz: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Azure Databricks'te nasıl yapılacağını öğrenmek için bkz . Ortam değişkeninde gizli diziye başvurma veya platformunuzda benzer belgelere başvurma.

Gizli dizi yerine sertifika kullanmayı tercih ederseniz, ortam değişkenlerini AZURE_CLIENT_CERTIFICATE_PATH bir PEM veya PKCS12 sertifika dosyasının yoluna (özel anahtar dahil) ve AZURE_CLIENT_CERTIFICATE_PASSWORD varsa sertifika dosyasının parolasıyla yapılandırabilirsiniz.

Yetkilendirme ve izin düzeylerini yapılandırma

AzureML Veri Bilimci veya Katkıda Bulunan gibi bazı varsayılan roller, Azure Machine Learning çalışma alanında MLflow işlemlerini gerçekleştirmek için zaten yapılandırılmıştır. Özel bir rol kullanıyorsanız aşağıdaki izinlere ihtiyacınız vardır:

  • MLflow izlemeyi kullanmak için:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • MLflow model kayıt defterini kullanmak için:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Oluşturduğunuz hizmet sorumlusuna veya kullanıcı hesabına çalışma alanınıza nasıl erişim vereceğinizi öğrenmek için bkz . Erişim verme.

Kimlik doğrulaması sorunlarını giderme

MLflow, veya mlflow.start_run()gibi mlflow.set_experiment() hizmetle etkileşim kuran ilk işlemde Azure Machine Learning'de kimlik doğrulaması yapmaya çalışır. İşlem sırasında sorunlar veya beklenmeyen kimlik doğrulama istemleri bulursanız, hata hakkında daha fazla ayrıntı almak için günlük düzeyini artırabilirsiniz:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Deneme adını ayarlama (isteğe bağlı)

Tüm MLflow çalıştırmaları etkin denemede günlüğe kaydedilir. Varsayılan olarak, çalıştırmalar sizin için otomatik olarak oluşturulan adlı Default bir denemede günlüğe kaydedilir. İzlemenin gerçekleştiği denemeyi yapılandırabilirsiniz.

İpucu

Azure Machine Learning CLI v2 kullanarak iş gönderirken, işin YAML tanımındaki özelliğini experiment_name kullanarak deneme adını ayarlayabilirsiniz. Eğitim betiğinizde yapılandırmanız gerekmez. Ayrıntılar için bkz . YAML: görünen ad, deneme adı, açıklama ve etiketler .

MLflow komutunu mlflow.set_experiment()kullanarak denemenizi yapılandırın.

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Abonelik dışı Azure Bulutları desteği

MLflow için Azure Machine Learning eklentisi varsayılan olarak genel Azure bulutuyla çalışacak şekilde yapılandırılır. Ancak, ortam değişkenini AZUREML_CURRENT_CLOUDayarlayarak kullandığınız Azure bulutunu yapılandırabilirsiniz.

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Kullandığınız bulutu aşağıdaki Azure CLI komutuyla tanımlayabilirsiniz:

az cloud list

Geçerli bulutta değeri IsActive olarak Trueayarlanmıştır.

Sonraki adımlar

Artık ortamınız Azure Machine Learning'deki çalışma alanınıza bağlı olduğuna göre artık ortamınızla çalışmaya başlayabilirsiniz.