Azure Machine Learning için MLflow'u yapılandırma
Bu makalede, MLflow'u izleme, kayıt defteri yönetimi ve dağıtım için bir Azure Machine Learning çalışma alanına bağlanacak şekilde yapılandırma açıklanmaktadır.
Azure Machine Learning çalışma alanları MLflow ile uyumludur; bu da ek yapılandırma olmadan MLflow sunucuları 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, MLflow'ı çalışma alanına işaret eden şekilde yapılandırmanız gerekir. Etkilenen ortamlar arasında yerel makineniz, Azure Synapse Analytics ve Azure Databricks bulunur.
Önemli
Azure işlem altyapısını kullanırken izleme URI'sini yapılandırmanız gerekmez. Sizin için otomatik olarak yapılandırılır. Otomatik yapılandırmaya sahip ortamlar arasında Azure Machine Learning not defterleri, Azure Machine Learning işlem örneklerinde barındırılan Jupyter not defterleri ve Azure Machine Learning işlem kümelerinde çalışan işler bulunur.
Önkoşullar
MLflow SDK
mlflow
paketi ve MLflow için Azure Machine Learningazureml-mlflow
eklentisi. Bu yazılımı yüklemek için aşağıdaki komutu kullanabilirsiniz:pip install mlflow azureml-mlflow
İpucu
mlflow
yerine kullanmayımlflow-skinny
göz önünde bulundurun. Bu paket, SQL depolama, sunucu, kullanıcı arabirimi veya veri bilimi bağımlılıkları içermeyen basit bir MLflow paketidir. Öncelikle MLflow izleme ve günlüğe kaydetme özelliklerine ihtiyacı olan ancak dağıtımlar da dahil olmak üzere tüm özellik paketini içeri aktarmak istemeyen kullanıcılar için önerilir.Azure Machine Learning çalışma alanı. Çalışma alanı oluşturmak için bkz . Başlamak için ihtiyacınız olan kaynakları oluşturma.
Çalışma alanınızda MLflow işlemleri gerçekleştirmek için erişim izinleri. İşlemlerin ve gerekli izinlerin listesi için bkz . MLflow işlemleri.
MLflow izleme URI'sini yapılandırma
Uzaktan izleme yapmak veya Azure Machine Learning dışında çalışan denemeleri izlemek için MLflow'ı Azure Machine Learning çalışma alanınızın izleme URI'sine işaret eden şekilde yapılandırın.
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 protokolüyle azureml://
başlayan kendi izleme URI'sine 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-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
komutunu kullanarak izleme URI'sini
az ml workspace
alın:az ml workspace show --query mlflow_tracking_uri
İzleme URI'sini yapılandırın:
set_tracking_uri()
MLflow izleme URI'sini çalışma alanınızın izleme URI'sine ayarlamak için yöntemini kullanın.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
İpucu
Bazı senaryolar, Azure Databricks kümesi veya Azure Synapse Analytics kümesi gibi paylaşılan bir ortamda çalışmayı içerir. Bu gibi durumlarda ortam değişkenini
MLFLOW_TRACKING_URI
her oturum yerine küme düzeyinde ayarlamak yararlı olur. Değişkeni küme düzeyinde ayarlamak, MLflow izleme URI'sini kümedeki tüm oturumlar için Azure Machine Learning'e işaret edecek şekilde otomatik olarak yapılandırılır.
Kimlik doğrulamasını yapılandırma
İzlemeyi ayarladı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. Ancak eklenti diğer birkaç kimlik doğrulama mekanizmasını da destekler. Paket azure-identity
bu desteği sağlar. Bu paket, eklentinin azureml-mlflow
bağımlılığı olarak yüklenir.
Kimlik doğrulama işlemi, biri başarılı olana kadar aşağıdaki yöntemleri birer birer dener:
- Ortam: Ortam değişkenleri aracılığıyla belirtilen hesap bilgileri okunur ve kimlik doğrulaması için kullanılır.
- Yönetilen kimlik: Uygulama, yönetilen kimlik etkinleştirilmiş bir Azure konağına dağıtılırsa, yönetilen kimlik kimlik doğrulaması için kullanılır.
- Azure CLI: Oturum açmak için Azure CLI
az login
komutunu kullanırsanız kimlik bilgileriniz kimlik doğrulaması için kullanılır. - Azure PowerShell: Oturum açmak için Azure PowerShell
Connect-AzAccount
komutunu kullanırsanız kimlik bilgileriniz kimlik doğrulaması için kullanılır. - Etkileşimli tarayıcı: Kullanıcının kimliği varsayılan tarayıcı üzerinden etkileşimli olarak doğrulanır.
Oturuma bağlı bir kullanıcının bulunduğu etkileşimli işler için etkileşimli kimlik doğrulamasına güvenebilirsiniz. Başka bir eylem gerekli değildir.
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. Bu ortamlarda farklı bir kimlik doğrulama modu yapılandırmanızı öneririz.
Katılımsız yürütme gerektiren senaryolar için Azure Machine Learning ile iletişim kurmak için bir hizmet sorumlusu yapılandırmanız gerekir. Hizmet sorumlusu oluşturma hakkında bilgi için bkz . Hizmet sorumlusu yapılandırma.
Aşağıdaki kodda hizmet sorumlunuzun kiracı kimliğini, istemci kimliğini ve istemci gizli dizisini kullanın:
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 ortamlarda çalışırken, bu ortam değişkenlerini işlem düzeyinde yapılandırmanızı öneririz. En iyi uygulama olarak, bunları Azure Key Vault örneğinde gizli dizi olarak yönetin.
Örneğin, Azure Databricks kümesi yapılandırmasında ortam değişkenlerinde gizli dizileri şu şekilde 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 ediyorsanız, aşağıdaki ortam değişkenlerini yapılandırabilirsiniz:
- Gizlilik Artırılmış Posta (PEM) veya Ortak Anahtar Şifreleme Standartları 12 (PKCS #12) biçiminde sertifika ve özel anahtar çiftini içeren bir dosyanın yoluna ayarlayın
AZURE_CLIENT_CERTIFICATE_PATH
. - Bir parola kullanıyorsa, sertifika dosyasının parolası olarak ayarlayın
AZURE_CLIENT_CERTIFICATE_PASSWORD
.
Yetkilendirme ve izin düzeylerini yapılandırma
AzureML Veri Bilimci ve 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 bir hizmet sorumlusuna veya kullanıcı hesabınıza çalışma alanınıza nasıl erişim verildiğini görmek 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 sorunlarla veya beklenmeyen kimlik doğrulaması istemleriyle karşılaşırsanı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. İzleme için kullanılan denemeyi yapılandırabilirsiniz.
İpucu
İşleri göndermek için Azure Machine Learning CLI v2'yi kullandığınızda, işin YAML tanımındaki özelliğini kullanarak experiment_name
deneme adını ayarlayabilirsiniz. Eğitim betiğinizde yapılandırmanız gerekmez. Daha fazla bilgi için bkz . YAML: görünen ad, deneme adı, açıklama ve etiketler.
Denemenizi yapılandırmak için MLflow mlflow.set_experiment()
komutunu kullanın.
experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)
Aboneliği olmayan bir Azure bulutu için desteği yapılandırma
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 ayarlayarak kullandığınız Azure bulutunu AZUREML_CURRENT_CLOUD
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.
İlgili içerik
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.