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 için Azure Machine Learningazureml-mlflow
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 dahil olmak üzere tüm özellik paketini içeri aktarmadan öncelikle MLflow izleme ve günlüğe kaydetme özelliklerine ihtiyaç duyan kullanıcılar için önerilir.Azure Machine Learning çalışma alanı. Çalışma alanı oluşturmak için Makine öğrenmesi kaynakları oluşturma öğreticisine bakın. Çalışma alanınızda MLflow işlemlerinizi gerçekleştirmek için ihtiyacınız olan erişim izinlerini gözden geçirin.
Uzaktan izleme gerçekleştirirseniz (yani Azure Machine Learning dışında çalışan denemeleri izleyin), 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.
Çalışma alanınız için izleme URI'sini alın:
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
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>
şu komutu kullanarak izleme URI'sini
az ml workspace
alabilirsiniz:az ml workspace show --query mlflow_tracking_uri
İ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-mlflow
için bir bağımlılık olarak yüklenen paketi azure-identity
aracı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:
- Ortam: Ortam değişkenleri aracılığıyla belirtilen hesap bilgilerini okur ve kimlik doğrulaması için kullanır.
- Yönetilen Kimlik: Uygulama, Yönetilen Kimlik etkin bir Azure konağına dağıtılırsa, uygulamayla kimlik doğrulaması yapar.
- Azure CLI: Bir kullanıcı Azure CLI
az login
komutuyla oturum açarsa, o kullanıcı olarak kimlik doğrulaması yapar. - Azure PowerShell: Bir kullanıcı Azure PowerShell'in
Connect-AzAccount
komutuyla oturum açarsa, o kullanıcı olarak kimlik doğrulaması yapar. - 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 istendiğinde kod yürütülmesini engeller. Bu yaklaşım, eğitim işleri gibi katılımsız ortamlarda kimlik doğrulaması için uygun değildir. Farklı bir kimlik doğrulama modu 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şkenlerini yapılandırmanızı öneririz. En iyi uygulama olarak, bunları Azure Key Vault örneğinde gizli dizi 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>}}
. Bu yaklaşımı Azure Databricks'te uygulama hakkında daha fazla bilgi için bkz . Ortam değişkeninde gizli diziye başvurma veya platformunuzun belgelerine bakın.
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_CLOUD
ayarlayarak 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 True
ayarlanmış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.