Azure Machine Learning'de toplu dağıtımlarda MLflow modellerini dağıtma

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Bu makalede, MLflow modellerinin toplu değerlendirme için toplu uç noktalar kullanılarak Azure Machine Learning'e nasıl dağıtılacağı açıklanır. MLflow modellerini toplu iş uç noktalarına dağıttığınızda Azure Machine Learning aşağıdaki görevleri tamamlar:

  • Machine Learning toplu işini çalıştırmak için gerekli bağımlılıkları içeren bir MLflow taban imajı veya özenle hazırlanmış bir ortam sağlar.
  • Paralelleştirme kullanarak verileri işleyebilen bir puanlama betiği içeren bir toplu iş işlem hattı oluşturur.

Desteklenen giriş dosyası türleri ve MLflow modelinin nasıl çalıştığı hakkında daha fazla bilgi ve detaylar için Toplu çıkarıma dağıtmayla ilgili önemli noktalar bölümüne bakın.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturun.

  • Azure Machine Learning çalışma alanı. Çalışma alanı oluşturmak için bkz . Azure Machine Learning çalışma alanlarını yönetme.

  • Azure Machine Learning çalışma alanında aşağıdaki izinler:

    • Toplu iş uç noktalarını ve dağıtımlarını oluşturmak veya yönetmek için: Sahip, Katkıda Bulunan veya Microsoft.MachineLearningServices/workspaces/batchEndpoints/* izinlerine sahip özelleştirilmiş bir rol kullanın.
    • Azure Resource Manager dağıtımlarını, çalışma alanı kaynak grubunda oluşturmak için: Çalışma alanının dağıtıldığı kaynak grubunda Microsoft.Resources/deployments/write izinlerine sahip bir Sahip, Katkıda Bulunan veya özel rol kullanın.
  • Azure Machine Learning CLI veya Python için Azure Machine Learning SDK'sı:

    Azure CLI'yi ve Azure Machine Learning uzantısını ml yüklemek için aşağıdaki komutu çalıştırın:

    az extension add -n ml
    

    Toplu iş uç noktaları için işlem hattı bileşeni dağıtımları, Azure CLI için uzantının ml 2.7 veya sonraki bir sürümünü gerektirir (geçerli sürüm: 2.37.0). az extension update --name ml En son sürümü almak için komutunu kullanın.


Çalışma alanınıza bağlanma

Çalışma alanı, Azure Machine Learning için en üst düzey kaynaktır. Azure Machine Learning'i kullanırken oluşturduğunuz tüm yapıtlarla çalışmak için merkezi bir yer sağlar. Bu bölümde, dağıtım görevlerinizi gerçekleştirdiğiniz çalışma alanına bağlanacaksınız.

Aşağıdaki komutta abonelik kimliğinizi, çalışma alanı adınızı, kaynak grubu adınızı ve konumunuzu girin:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Örneği keşfedin

Bu makaledeki örnekte, toplu tahminler gerçekleştirmek için bir MLflow modelinin toplu iş uç noktasına nasıl dağıtılacağı gösterilmektedir. MLflow modeli, UCI Kalp Hastalığı Veri Kümesini temel alır. Veritabanı 76 öznitelik içerir, ancak örnekte yalnızca 14 alt kümesi kullanılır. Model, 0 (varlık yok) ile 1 (varlık var) tamsayı değeri üzerinden bir hastada kalp hastalığının varlığını tahmin etmeye çalışır.

Model bir XGBBoost sınıflandırıcı kullanılarak eğitilir. Tüm gerekli ön işleme bir scikit-learn işlem hattı olarak paketlendiğinden modeli ham verilerden tahminlere giden uçtan uca bir işlem hattı haline getirir.

Bu makaledeki örnek, azureml-examples deposunda yer alan kod örneklerini temel alır. YAML ve diğer dosyaları kopyalamak veya yapıştırmak zorunda kalmadan komutları yerel olarak çalıştırmak için aşağıdaki komutları kullanarak depoyu kopyalayın ve kodlama dilinizin klasörüne gidin:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Bu örneğin dosyaları aşağıdaki klasörde bulunur:

cd endpoints/batch/deploy-models/heart-classifier-mlflow

Jupyter Notebooks'ta takip edin

Herkese Açık Jupyter Not Defteri'ni kullanarak bu örneği takip edebilirsiniz. Kopyalanan depoda mlflow-for-batch-tabular.ipynb not defterini açın.

MLflow modelini dağıtma

Bu bölümde, yeni veriler üzerinde toplu çıkarım çalıştırmak için toplu işlemler uç noktasına bir MLflow modeli dağıtacaksınız. Dağıtıma geçmeden önce modelinizin kayıtlı olduğundan ve çalışma alanında kullanılabilir bir işlem kümesi olduğundan emin olun.

Modeli kaydedin

Batch uç noktaları yalnızca kayıtlı modelleri dağıtabilir. Bu makalede, depoda modelin yerel bir kopyasını kullanırsınız. Sonuç olarak, modeli yalnızca çalışma alanında kayıt defterinde yayımlamanız gerekir.

Not

Dağıtacağınız model zaten kayıtlıysa İşlem kümesi oluşturma bölümüne geçebilirsiniz.

Aşağıdaki komutu çalıştırarak modeli kaydedin:

MODEL_NAME='heart-classifier-mlflow'
az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"

İşlem kümesi oluşturma

Toplu dağıtımların kullanılabilir bazı altyapılarda (işlem) çalıştığından emin olmanız gerekir. Batch dağıtımları, çalışma alanında zaten var olan tüm Machine Learning işlemlerinde çalıştırılabilir. Birden çok toplu dağıtım aynı işlem altyapısını paylaşabilir.

Bu makalede, cpu-cluster adlı bir Machine Learning işlem kümesi üzerinde çalışıyorsunuz. Aşağıdaki örnek, çalışma alanında bir işlem olduğunu doğrular veya yeni bir işlem oluşturur.

İşlem kümesi oluşturma:

az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5

Toplu işlem uç noktası oluşturma

Uç nokta oluşturmak için bir ad ve açıklama gerekir. Uç nokta adı, uç noktanızla ilişkili URI'de görünür, bu nedenle bir Azure bölgesinde benzersiz olması gerekir. Örneğin, WestUS2 bölgesinde yalnızca bir toplu iş uç noktası adıyla mybatchendpoint olabilir.

  1. Daha sonra kolay başvuru için uç noktanın adını bir değişkene yerleştirin:

    Şu komutu çalıştırın:

    ENDPOINT_NAME="heart-classifier"
    
  2. Uç noktayı oluşturun:

    1. Yeni bir uç nokta oluşturmak için aşağıdaki koda benzer bir YAML yapılandırma oluşturun:

      endpoint.yml

      $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
      name: heart-classifier-batch
      description: A heart condition classifier for batch inference
      auth_mode: aad_token
      
    2. Aşağıdaki komutla uç noktayı oluşturun:

      az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
      

Toplu dağıtım oluşturma

MLflow modelleri, dağıtımı oluştururken bir ortam veya puanlama betiği belirtmenizi gerektirmez. Ortam veya puanlama komut dosyası sizin için otomatik olarak oluşturulur. Ancak, dağıtımın nasıl çıkarım yaptığı sürecini özelleştirmek istiyorsanız, ortamı veya değerlendirme betiğini belirleyebilirsiniz.

  1. Oluşturulan uç nokta altında yeni bir dağıtım oluşturmak için aşağıdaki kodda gösterildiği gibi bir YAML yapılandırma oluşturun. Ek özellikler için tam toplu iş uç noktası YAML şemasını denetleyebilirsiniz.

    deployment-simple/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-mlflow
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  2. Dağıtımı aşağıdaki komutla oluşturun:

    az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
    

Önemli

Modelinizin çıkarımını tek bir toplu işlemde çalıştırma süresine bağlı olarak, dağıtımınızdaki timeout değerini yapılandırın. Yığın boyutu ne kadar büyükse timeout değer o kadar uzun olur. Değerin mini_batch_size örnek sayısını değil toplu iş içindeki dosya sayısını gösterdiğini unutmayın. Tablosal verilerle çalışırken, her dosya birden çok satır içerebilir ve bu da toplu iş uç noktasının her dosyayı işleme süresini artırır. Böyle durumlarda, zaman aşımı hatalarını önlemek için daha yüksek timeout değerler kullanın.

Uç noktayı çağırma

Uç nokta içinde belirli bir dağıtımı çağırabilirsiniz ancak uç noktanın kendisini çağırmak ve hangi dağıtımın kullanılacağına uç noktanın karar vermesine izin vermek yaygın bir durumdur. Bu dağıtım türü "varsayılan" dağıtım olarak adlandırılır. Bu yaklaşım, kullanıcının uç noktayı çağırmasıyla yapılan sözleşmeyi değiştirmeden dağıtımı sunan modeli değiştirmenize olanak tanıyan varsayılan dağıtımı değiştirmenize olanak tanır.

Varsayılan dağıtımı güncelleştirmek için aşağıdaki yönergeyi kullanın:

DEPLOYMENT_NAME="classifier-xgboost-mlflow"
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME

Toplu iş uç noktası artık kullanıma hazırdır.

Dağıtımı test et

Uç noktanızı test etmek için bu depoda bulunan ve modelle birlikte çalışan etiketlenmemiş verilerin bir örneğini kullanın. Batch uç noktaları yalnızca bulutta bulunan ve Machine Learning çalışma alanından erişilebilen verileri işleyebilir. Bu örnekte, örneği bir Machine Learning veri deposuna yüklersiniz. Puanlama için uç noktayı çağırmak için kullandığınız bir veri varlığı oluşturursunuz. Toplu iş uç noktalarının çeşitli konumlara yerleştirebileceğiniz verileri kabul ettiğini unutmayın.

  1. İlk olarak veri varlığını oluşturun. Veri varlığı, toplu iş uç noktalarını kullanarak paralel olarak işlemek istediğiniz birden çok CSV dosyası içeren bir klasörden oluşur. Verileriniz zaten bir veri varlığı olarak kayıtlıysa veya farklı bir giriş türü kullanmak istiyorsanız bu adımı atlayabilirsiniz.

    1. YAML'de veri varlığı tanımı oluşturma:

      heart-dataset-unlabeled.yml

      $schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
      name: heart-dataset-unlabeled
      description: An unlabeled dataset for heart classification.
      type: uri_folder
      path: data
      
    2. Veri varlığını oluşturun:

      az ml data create -f heart-dataset-unlabeled.yml
      
  2. Verileri karşıya yükledikten sonra uç noktayı çağırın.

    İpucu

    Aşağıdaki komutlarda, dağıtım adının invoke operation'da belirtilmediğine dikkat edin. Uç nokta yalnızca bir dağıtıma sahip olduğundan, uç nokta işi otomatik olarak varsayılan dağıtıma yönlendirir. bağımsız değişkeni/parametresi deployment_name belirterek belirli bir dağıtımı hedefleyebilirsiniz.

    Şu komutu çalıştırın:

    JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
    

    Not

    Yardımcı program jq her yüklemede yüklü olmayabilir. Yükleme yönergeleri için bkz . Jq'yi indirme.

  3. Komut döner dönmez bir toplu işlem başlatılır. İş bitene kadar işin durumunu izleyebilirsiniz:

    Şu komutu çalıştırın:

    az ml job show -n $JOB_NAME --web
    

Çıkışları analiz et

Dağıtım yapılandırması, işin predictions.csv dosyasında çıkış tahminleri oluşturduğunu belirtir. İş score adlı bir çıkış oluşturur ve bu dosyayı buraya yerleştirir. Her toplu iş yalnızca bir dosya oluşturur.

Dosya aşağıdaki yapıya sahiptir:

  • Modele gönderilen her veri noktası için bir satır. Tablosal veriler için ,predictions.csv dosyası işlenen her dosyada bulunan her satır için bir satır içerir. Diğer veri türleri (görüntüler, ses, metin) için işlenen her dosya için bir satır vardır.

  • Dosya aşağıdaki sütunları belirtilen sırada içerir:

    • row (isteğe bağlı): Giriş veri dosyasında karşılık gelen satır dizini. Bu sütun yalnızca giriş verileri tablosal olduğunda geçerlidir. Tahminler, giriş dosyasında göründükleri sırayla döndürülür. Tahmine güvenmek için satır numarasına güvenebilirsiniz.

    • prediction: Giriş verileriyle ilişkili tahmin. Model, işlevi aracılığıyla predict() değerini "olduğu gibi" döndürür.

    • file_name: Verilerin okunduğu dosyanın adı. Tablosal verilerde, hangi tahminin her giriş verisine ait olduğunu belirlemek için bu alanı kullanın.

İş adını kullanarak işin sonuçlarını indirebilirsiniz.

Tahminleri indirmek için aşağıdaki komutu kullanın:

az ml job download --name $JOB_NAME --output-name score --download-path ./

Dosyayı indirdikten sonra, dosyayı tercih ettiğiniz düzenleme aracıyla açabilirsiniz. Aşağıdaki örnek, DataFrame pandas kullanarak tahminleri yükler.

import pandas as pd

score = pd.read_csv(
    "named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)

Çıktıda bir tablo görüntülenir:

Satır Tahmin Dosya
0 0 heart-unlabeled-0.csv
1 1 heart-unlabeled-0.csv
2 0 heart-unlabeled-0.csv
... ... ...
307 0 heart-unlabeled-3.csv

İpucu

Bu örnekte, giriş verilerinin CSV biçiminde tablosal veriler içerdiğine dikkat edin. Dört farklı giriş dosyası vardır: heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv ve heart-unlabeled-3.csv.

Toplu çıkarım için dikkat edilmesi gereken noktaları gözden geçirin

Azure Machine Learning, puanlama betiği göstermeden toplu uç noktalara MLflow modellerinin dağıtımını destekler. Bu yaklaşım, toplu işlemeye benzer büyük miktarda veriyi işlemeyi gerektiren modelleri dağıtmanın kullanışlı bir yoludur. Azure Machine Learning, çıkarım işlemini yönetmek için MLflow modeli belirtimindeki bilgileri kullanır.

Çalışanlardaki iş dağılımını keşfetme

Batch uç noktaları, işi hem yapılandırılmış hem de yapılandırılmamış veriler için dosya düzeyinde dağıtır. Sonuç olarak, bu özellik için yalnızca URI dosyası ve URI klasörleri desteklenir. Her çalışan bir kerede toplu Mini batch size dosyaları işler. Tablosal veriler için toplu iş uç noktaları, işi dağıtırken her dosyanın içindeki satır sayısını dikkate almaz.

Uyarı

İç içe klasör yapıları çıkarım sırasında keşfedilmez. Verilerinizi klasörler kullanarak bölümlerseniz, devam etmeden önce yapıyı düzleştirmeyi unutmayın.

Toplu dağıtımlar, MLflow modelinin işlevini dosya başına bir kez çağırır predict . Birden çok satırı olan CSV dosyaları için bu eylem, temel alınan işlemde bellek baskısı oluşturabilir. Bu davranış, özellikle büyük dil modelleri gibi pahalı modeller için modelin tek bir dosya puan alması için gereken süreyi artırır. Günlüklerde birkaç bellek dışı özel durum veya zaman aşımı girdisiyle karşılaşırsanız, verileri daha az satır içeren daha küçük dosyalara bölmeyi veya model puanlama betiğinin içindeki satır düzeyinde toplu işlem gerçekleştirmeyi göz önünde bulundurun.

Dosya türleri için desteği gözden geçirin

Ortam veya puanlama betiği olmadan MLflow modelleri dağıtılırken toplu çıkarım için aşağıdaki veri türleri desteklenir. Farklı bir dosya türünü işlemek veya çıkarımları farklı şekilde yürütmek için, MLflow modeli dağıtımını puanlama betiğiyle özelleştirerek dağıtımı oluşturabilirsiniz.

Dosya uzantısı Model girdisi olarak döndürülen veri türü İmza gereksinimi
.csv, .parquet, .pqt pd.DataFrame ColSpec. Sağlanmadıysa, sütun yazma zorunlu tutulmaz.
.png, .jpg, .jpeg, , .tiff, .bmp, .gif np.ndarray TensorSpec. Giriş, varsa tensor şekliyle eşleşecek şekilde yeniden şekillendirilir. İmza mevcut değilse, np.uint8 türündeki tensörler türetilir. Daha fazla bilgi için MLflow modellerinin görüntü işleme konusundaki dikkat edilmesi gerekenler bölümüne bakın.

Uyarı

Giriş verilerinde bulunabilecek desteklenmeyen dosyalar işin başarısız olmasına neden olur. Böyle durumlarda ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro' hatasına benzer bir hata görürsünüz. Dosya türü 'avro' desteklenmiyor.

MLflow modelleri için imza doğrulama uygulamasını anlama

Toplu dağıtım işleri, kullanılabilir MLflow modeli imzasını kullanarak verileri okurken giriş veri türlerini zorunlu kılmaktadır. Sonuç olarak, veri girişiniz model imzasında belirtilen türlerle uyumlu olmalıdır. Veriler beklendiği gibi ayrıştırılamıyorsa, iş ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv' gibi bir hatayla başarısız olur. Özel durum: 10 tabanında int() için geçersiz değişmez değer: 'value'.

İpucu

MLflow modellerindeki imzalar isteğe bağlıdır, ancak bunlar kesinlikle önerilir. Veri uyumluluğu sorunlarının erken algılanması için kullanışlı bir yol sağlar. Modelleri imzalarla günlüğe kaydetme hakkında daha fazla bilgi için bkz. Özel imza, ortam veya örnekler kullanan modelleri günlüğe kaydetme.

MLflow modelinizle ilişkili dosyayı açarak modelinizin model imzasını MLmodel inceleyebilirsiniz. İmzaların MLflow'da nasıl çalıştığı hakkında daha fazla bilgi için bkz . MLflow'da imzalar.

Aroma desteğini inceleme

Toplu dağıtımlar, MLflow modellerini yalnızca bir pyfunc çeşitle dağıtmayı destekler. Farklı bir versiyonu dağıtmak için, Puanlama betiğiyle model dağıtımını özelleştirme bölümüne bakın.

Puanlama betiği ile model dağıtımlarını özelleştirme

Dağıtım tanımında puanlama betiği belirtmeden MLflow modellerini toplu iş uç noktalarına dağıtabilirsiniz. Ancak, çıkarım yürütmeyi özelleştirmek için genellikle toplu iş sürücüsü olarak adlandırılan bu dosyayı belirtmeyi tercih edebilirsiniz.

Genellikle aşağıdaki senaryolar için bu iş akışını seçin:

  • MLflow dağıtımlarının toplu işlemle desteklemediği dosya türlerini işleyin.
  • Modelin çalışma şeklini kişiselleştirin; örneğin, işlevle mlflow.<flavor>.load() yüklemek için belirli bir aroma seçin.
  • Model kendi başına tamamlamıyorsa, puanlama prosedürünüzde ön veya son işlemeyi tamamlayın.
  • Resmi temsil eden tensor grafı gibi tablosal verilerle iyi sunulmayan modelin sunumunu ayarlayın.
  • Bellek kısıtlamaları nedeniyle her dosyayı aynı anda işleyemediği için modelin verileri öbekler halinde okumasına izin verin.

Önemli

MLflow modeli dağıtımı için puanlama betiğini belirtmek için dağıtımın çalıştırıldığı ortamı belirtmeniz gerekir.

Puanlama betiğini kullanma

Özel puanlama betiğiyle bir MLflow modeli dağıtmak için aşağıdaki adımları kullanın:

  1. MLflow modelinizin yerleştirildiği klasörü tanımlayın.

    1. Azure Machine Learning Studio'daModeller'e göz atın.

    2. Dağıtılacak modeli seçin ve ardından Yapıtlar sekmesini seçin.

    3. Görüntülenen klasörü not alın. Modeli kaydettiğinizde bu klasörü belirttiniz.

      Model yapıtlarının yerleştirildiği klasörü gösteren ekran görüntüsü.

  2. Puanlama betiği oluşturun. Önceki klasör adının model fonksiyona init() nasıl dahil olduğuna dikkat edin.

    deployment-custom/code/batch_driver.py

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license.
    
    import os
    import glob
    import mlflow
    import pandas as pd
    import logging
    
    
    def init():
        global model
        global model_input_types
        global model_output_names
    
        # AZUREML_MODEL_DIR is an environment variable created during deployment
        # It is the path to the model folder
        # Please provide your model's folder name if there's one
        model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0]
    
        # Load the model, it's input types and output names
        model = mlflow.pyfunc.load(model_path)
        if model.metadata and model.metadata.signature:
            if model.metadata.signature.inputs:
                model_input_types = dict(
                    zip(
                        model.metadata.signature.inputs.input_names(),
                        model.metadata.signature.inputs.pandas_types(),
                    )
                )
            if model.metadata.signature.outputs:
                if model.metadata.signature.outputs.has_input_names():
                    model_output_names = model.metadata.signature.outputs.input_names()
                elif len(model.metadata.signature.outputs.input_names()) == 1:
                    model_output_names = ["prediction"]
        else:
            logging.warning(
                "Model doesn't contain a signature. Input data types won't be enforced."
            )
    
    
    def run(mini_batch):
        print(f"run method start: {__file__}, run({len(mini_batch)} files)")
    
        data = pd.concat(
            map(
                lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch
            )
        )
    
        if model_input_types:
            data = data.astype(model_input_types)
    
        # Predict over the input data, minus the column filename which is not part of the model.
        pred = model.predict(data.drop("filename", axis=1))
    
        if pred is not pd.DataFrame:
            if not model_output_names:
                model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])]
            pred = pd.DataFrame(pred, columns=model_output_names)
    
        return pd.concat([data, pred], axis=1)
    
  3. Puanlama betiğinin yürütülebileceği bir ortam oluşturun. Bu örnekteki model MLflow olduğundan, conda gereksinimleri de model paketinde belirtilir. MLflow modelleri ve dahil edilen dosyalar hakkında daha fazla bilgi için bkz . MLmodel biçimi.

    Bu adımda, dosyadaki conda bağımlılıklarını kullanarak ortamı oluşturursunuz. Toplu dağıtımlar için gereken paketi de eklemeniz azureml-core gerekir.

    Not

    Paket azureml-core, 31 Mart 2025 itibarıyla kullanım dışı bırakılan ve 30 Haziran 2026'da destek sonu olan Azure Machine Learning SDK v1'in bir parçasıdır. Toplu dağıtım puanlama betikleri için hâlâ çalışma zamanı bağımlılığı olarak gereklidir.

    İpucu

    Modelinizi model kayıt defterine kaydettiyseniz, modelinizle ilişkili dosyayı indirip kopyalayabilirsiniz conda.yml . Bu dosyayı Azure Machine Learning Stüdyosu'daModeller> listesinden >modelinizi seçin altındabulabilirsiniz. Kök klasörde dosyayı seçin conda.yml ve ardından İçeriğini indir veya kopyala'yı seçin.

    Önemli

    Bu örnekte adresinde /heart-classifier-mlflow/environment/conda.yamlbelirtilen bir conda ortamı kullanılır. Bu dosya, özgün MLflow conda bağımlılıkları dosyası ile azureml-core paketinin birleştirilip eklenmesiyle oluşturulmuştur. Dosyayı doğrudan modelden kullanamazsınız conda.yml .

    Dağıtım tanımının kendisi, ortam tanımını anonim bir ortam olarak içerir. Dağıtımda aşağıdaki satırları görürsünüz:

    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    
  4. Dağıtımı yapılandırın:

    Oluşturulan uç nokta altında yeni bir dağıtım oluşturmak için aşağıdaki kod parçacığında gösterildiği gibi bir YAML yapılandırma oluşturun. Ek özellikler için tam toplu iş uç noktası YAML şemasına bakın.

    deployment-custom/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-custom
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    code_configuration:
      code: code
      scoring_script: batch_driver.py
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  5. Dağıtımı oluşturun:

    Aşağıdaki kodu çalıştırın:

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    

Toplu iş uç noktası artık kullanıma hazırdır.

Kaynakları temizleme

Alıştırmayı tamamladıktan sonra artık ihtiyacınız olmayan kaynakları silin.

Toplu uç noktasını ve altındaki tüm dağıtımları silmek için aşağıdaki kodu çalıştırın:

az ml batch-endpoint delete --name $ENDPOINT_NAME --yes

Bu komut toplu puanlama işlerini silmez.