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:

  1. 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
    
  2. Azure Analytics Çalışma Alanı portalına gidin.

  3. Yönet sekmesine gidin ve Apache Spark Havuzları'nı seçin.

  4. Küme adının yanındaki üç noktaya tıklayın ve Paketler'i seçin.

    Azure Synapse Analytics'te mlflow paketlerini yükleme

  5. Gereksinimler dosyaları bölümünde Karşıya Yükle'ye tıklayın.

  6. requirements.txt dosyasını yükleme.

  7. 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

  1. Ç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)

    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 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ı Defaultbir 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:

  1. Azure portalının en sol tarafındaki Kaynak gruplarını seçin.

    Azure portalında silme

  2. Listeden oluşturduğunuz kaynak grubunu seçin.

  3. Kaynak grubunu sil'i seçin.

  4. Kaynak grubu adını girin. Ardından Sil'i seçin.

Sonraki adımlar