MLflow ve Azure Machine Learning ile Azure Synapse Analytics ML denemelerini izleme
Bu makalede, Azure Synapse Analytics çalışma alanında çalışırken MLflow'un Azure Machine Learning'e bağlanması için nasıl etkinleştireceğinizi öğrenin. İzleme, model yönetimi ve model dağıtımı için bu yapılandırmadan yararlanabilirsiniz.
MLflow , makine öğrenmesi denemelerinizin yaşam döngüsünü yönetmeye yönelik bir açık kaynak kitaplıktır. MLFlow İzleme, eğitim çalıştırması ölçümlerinizi ve model yapıtlarınızı günlüğe kaydeden ve izleyen bir MLflow bileşenidir. MLflow hakkında daha fazla bilgi edinin.
Azure Machine Learning ile eğitmek için bir MLflow Projeniz varsa bkz . MLflow Projeleri ve Azure Machine Learning (önizleme) ile ML modellerini eğitma.
Önkoşullar
Kitaplıkları yükleme
Azure Synapse Analytics'te ayrılmış kümenize kitaplıkları yüklemek için:
Denemelerinizin gerektirdiği paketleri içeren bir
requirements.txt
dosya oluşturun, ancak aşağıdaki paketleri de içerdiğinden emin olun:requirements.txt
mlflow azureml-mlflow azure-ai-ml
Azure Analytics Çalışma Alanı portalına gidin.
Yönet sekmesine gidin ve Apache Spark Havuzları'nı seçin.
Küme adının yanındaki üç noktaya tıklayın ve Paketler'i seçin.
Gereksinimler dosyaları bölümünde Karşıya Yükle'ye tıklayın.
requirements.txt
dosyasını yükleme.Kümenizin yeniden başlatılmasını bekleyin.
MLflow ile denemeleri izleme
Azure Synapse Analytics, MLflow ile Azure Machine Learning çalışma alanına yapılan denemeleri izlemek üzere yapılandırılabilir. Azure Machine Learning, denemelerin, modellerin ve dağıtımların yaşam döngüsünün tamamını yönetmek için merkezi bir depo sağlar. Ayrıca, Azure Machine Learning dağıtım seçeneklerini kullanarak daha kolay dağıtım yolunu etkinleştirme avantajına da sahiptir.
Not defterlerinizi Azure Machine Learning'e bağlı MLflow kullanacak şekilde yapılandırma
Azure Machine Learning'i denemeler için merkezi deponuz olarak kullanmak için MLflow'u kullanabilirsiniz. Üzerinde çalıştığınız her not defterinde, izleme URI'sini kullanacağınız çalışma alanına işaret edecek şekilde yapılandırmanız gerekir. Aşağıdaki örnekte bunun nasıl yapılabilmesi gösterilmektedir:
İzleme URI'lerini yapılandırma
Ç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 yapılandırıldıktan sonra, kimlik doğrulamasının ilişkili çalışma alanında nasıl gerçekleşmesi gerektiğini de yapılandırmanız gerekir. Varsayılan olarak, MLflow için Azure Machine Learning eklentisi kimlik bilgilerini isteyecek varsayılan tarayıcıyı açarak etkileşimli kimlik doğrulaması gerçekleştirir. Bkz . Azure Machine Learning için MLflow yapılandırma: Azure Machine Learning çalışma alanlarında MLflow için kimlik doğrulamasını yapılandırmanın ek yollarını kullanarak kimlik doğrulamasını yapılandırma.
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.
Azure Machine Learning'de deneme adları
Azure Machine Learning, varsayılan olarak adlı Default
bir denemede çalışır. Üzerinde çalışacağınız denemeyi ayarlamak genellikle iyi bir fikirdir. Denemenin adını ayarlamak için aşağıdaki söz dizimini kullanın:
mlflow.set_experiment(experiment_name="experiment-name")
Parametreleri, ölçümleri ve yapıtları izleme
Azure Synapse Analytics'te MLflow'ı alışmış olduğunuz şekilde kullanabilirsiniz. Ayrıntılar için bkz . Ölçümleri ve günlük dosyalarını günlüğe kaydetme ve görüntüleme.
MLflow ile kayıt defterine model kaydetme
Modeller, yaşam döngülerini yönetmek için merkezi bir depo sunan Azure Machine Learning çalışma alanına kaydedilebilir. Aşağıdaki örnek Spark MLLib ile eğitilen bir modeli günlüğe kaydeder ve kayıt defterine kaydeder.
mlflow.spark.log_model(model,
artifact_path = "model",
registered_model_name = "model_name")
Adlı kayıtlı bir model yoksa, yöntemi yeni bir model kaydeder, sürüm 1 oluşturur ve bir ModelVersion MLflow nesnesi döndürür.
Adlı kayıtlı bir model zaten varsa, yöntemi yeni bir model sürümü oluşturur ve sürüm nesnesini döndürür.
MLflow kullanarak Azure Machine Learning'de kayıtlı modelleri yönetebilirsiniz. Daha fazla ayrıntı için Bkz. MLflow ile Azure Machine Learning'de model kayıt defterlerini yönetme.
Azure Machine Learning'de kayıtlı modelleri dağıtma ve kullanma
MLflow kullanılarak Azure Machine Learning Hizmeti'ne kaydedilen modeller şu şekilde kullanılabilir:
Azure Machine Learning uç noktası (gerçek zamanlı ve toplu iş): Bu dağıtım, Azure Container Instances (ACI), Azure Kubernetes (AKS) veya Yönetilen Uç Noktalarımızda hem gerçek zamanlı hem de toplu çıkarım için Azure Machine Learning dağıtım özelliklerinden yararlanmanızı sağlar.
Akış veya toplu işlem hatlarında Azure Synapse Analytics not defterlerinde kullanılabilen MLFlow modeli nesneleri veya Pandas UDF'leri.
Modelleri Azure Machine Learning uç noktalarına dağıtma
Azure Machine Learning çalışma alanınıza model dağıtmak için eklentiden azureml-mlflow
yararlanabilirsiniz. Modelleri farklı hedeflere dağıtma hakkında ayrıntılı bilgi için MLflow modellerini dağıtma sayfasına bakın.
Önemli
Modellerin dağıtılabilmesi için Azure Machine Learning kayıt defterine kaydedilmesi gerekir. Azure Machine Learning'de kayıtlı olmayan modellerin dağıtımı desteklenmez.
UDF'leri kullanarak toplu puanlama için modelleri dağıtma
Toplu puanlama için Azure Synapse Analytics kümelerini seçebilirsiniz. MLFlow modeli yüklenir ve spark Pandas UDF olarak yeni verileri puanlar.
from pyspark.sql.types import ArrayType, FloatType
model_uri = "runs:/"+last_run_id+ {model_path}
#Create a Spark UDF for the MLFlow model
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri)
#Load Scoring Data into Spark Dataframe
scoreDf = spark.table({table_name}).where({required_conditions})
#Make Prediction
preds = (scoreDf
.withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …))
)
display(preds)
Kaynakları temizleme
Azure Synapse Analytics çalışma alanınızı korumak istiyorsanız ancak artık Azure Machine Learning çalışma alanına ihtiyacınız yoksa Azure Machine Learning çalışma alanını silebilirsiniz. Ç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. Bunun yerine, depolama hesabını ve çalışma alanını içeren kaynak grubunu silin; böylece ücret ödemezsiniz:
Azure portalının en sol tarafındaki Kaynak gruplarını seçin.
Listeden oluşturduğunuz kaynak grubunu seçin.
Kaynak grubunu sil'i seçin.
Kaynak grubu adını girin. Ardından Sil'i seçin.
Sonraki adımlar
- MLflow ve Azure Machine Learning ile deneme çalıştırmalarını izleyin.
- Azure Machine Learning'de MLflow modellerini dağıtma.
- MLflow ile modellerinizi yönetin.