Aracılığıyla paylaş


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, toplu iş uç noktalarını kullanarak toplu çıkarım için MLflow modellerinin 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 temel görüntüsü veya seçilmiş bir ortam sağlar.
  • Paralelleştirme kullanarak verileri işlemek için kullanılabilecek 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 için bkz . Toplu çıkarıma dağıtmayla ilgili önemli noktalar.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.

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

  • Machine Learning çalışma alanında aşağıdaki izinlere sahip olduğunuzdan emin olun:

    • Toplu iş uç noktalarını ve dağıtımlarını oluşturma veya yönetme: İzin veren Microsoft.MachineLearningServices/workspaces/batchEndpoints/*bir Sahip, Katkıda Bulunan veya Özel rol kullanın.
    • Çalışma alanı kaynak grubunda Azure Resource Manager dağıtımları oluşturma: Çalışma alanının dağıtıldığı kaynak grubunda izin veren Microsoft.Resources/deployments/write bir Sahip, Katkıda Bulunan veya Özel rol kullanın.
  • Machine Learning ile çalışmak için aşağıdaki yazılımı yükleyin:

    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
    

    Batch Uç Noktaları için işlem hattı bileşeni dağıtımları, Azure CLI uzantısının ml 2.7 sürümünde kullanıma sunulmuştur. 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ı Machine Learning için en üst düzey kaynaktır. 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ğiniz, çalışma alanınız, konumunuz ve kaynak grubunuzun değerlerini 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 (iletişim durumu) tamsayı değeri olan 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/yapıştırmak zorunda kalmadan komutları yerel olarak çalıştırmak için önce depoyu kopyalayın ve ardından dizinleri klasöre değiştirin:

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

Genel Jupyter Not Defteri'ni kullanarak bu örnekle birlikte izleyebilirsiniz. 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ırabilmek için toplu iş uç noktasına bir MLflow modeli dağıtacaksınız. Dağıtıma devam etmeden önce modelinizin kayıtlı olduğundan ve çalışma alanında kullanılabilir bir işlem kümesi olduğundan emin olmanız gerekir.

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ırıldığı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ş 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 adıyla mybatchendpoint yalnızca bir toplu iş uç noktası 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ğini belirtmenizi gerektirmez. Ortam veya puanlama betiği sizin için otomatik olarak oluşturulur. Ancak, dağıtımın çıkarımını özelleştirmek istiyorsanız ortamı veya puanlama betiğini belirtebilirsiniz.

  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

Dağıtımınızdaki değeri, modelinizin çıkarımını timeout tek bir toplu işlemde çalıştırma süresine göre yapılandırın. Toplu iş boyutu ne kadar büyükse değer o kadar uzun olur timeout . 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 yüksek timeout değerler kullanın.

Uç noktayı çağırma

Uç noktanın 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 etme

Uç noktanızı test etmek için bu depoda bulunan ve modelle birlikte kullanılabilecek etiketlenmemiş verilerin bir örneğini kullanırsınız. 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 kullanılabilecek bir veri varlığı oluşturursunuz. Toplu iş uç noktalarının çeşitli konumlara yerleştirilebilen 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ğimiz birden çok CSV dosyasını içeren bir klasörden oluşur. Verilerinizin zaten bir veri varlığı olarak kayıtlı olması veya farklı bir giriş türü kullanmak istemeniz 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, işlemde dağıtım adının belirtilmediği dikkat invoke 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şkenini/parametresini deployment_namebelirterek belirli bir dağıtımı hedefleyebilirsiniz.

    Aşağıdaki 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öndürüldüğü anda bir toplu iş 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 etme

Çıkış tahminleri, dağıtım yapılandırmasında gösterildiği gibi predictions.csv dosyasında oluşturulur. İş, bu dosyanın yerleştirildiği score adlı bir çıkış oluşturur. Toplu iş başına yalnızca bir dosya oluşturulur.

Dosya aşağıdaki gibi yapılandırılmıştır:

  • Modele gönderilen her veri noktası başına bir satır. Tablo verileri için, dosya predictions.csv 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.

  • Aşağıdaki sütunlar dosyadadır (belirtilen sırada):

    • 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. Karşılık gelen tahminle eşleşmesi için satır numarasını kullanabilirsiniz.

    • prediction: Giriş verileriyle ilişkili tahmin. Bu değer, modelin predict(). işlevi tarafından sağlandığı gibi "olduğu gibi" döndürülür.

    • file_name: Verilerin okunduğu dosya adını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, bir Pandas veri çerçevesi 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

Machine Learning, puanlama betiği göstermeden toplu iş uç noktalarına 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. 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şfedilir. 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ırabilir. Günlüklerde birkaç bellek dışı özel durum veya zaman aşımı girdisiyle karşılaşırsanız, verileri daha az satıra sahip 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 girişi olarak döndürülen 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. Kullanılabilir imza yoksa, türün np.uint8 tensorları çıkarılır. Daha fazla bilgi için bkz . Görüntüleri işleyen MLflow modelleri için dikkat edilmesi gerekenler.

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 zorlamayı anlama

Toplu dağıtım işleri, kullanılabilir MLflow modeli imzasını kullanarak verileri okurken girişin veri türlerini zorlar. Sonuç olarak, veri girişiniz model imzasında belirtilen türlerle uyumlu hale getirir. 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 örneklerle 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 çeşit dağıtmak için bkz . Puanlama betiğiyle model dağıtımlarını özelleştirme.

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

MLflow modelleri, dağıtım tanımında puanlama betiği belirtilmeden toplu iş uç noktalarına dağıtılabilir. Ancak çıkarım yürütmeyi özelleştirmek için bu dosyayı (genellikle toplu iş sürücüsü olarak adlandırılır) belirtmeyi kabul edebilirsiniz.

Bu iş akışını genellikle aşağıdaki senaryolar için seçersiniz:

  • MLflow dağıtımlarının toplu dağıtımları tarafından desteklenmeyen işlem dosyası türleri.
  • Modelin çalışma şeklini özelleştirin; örneğin, işlevle mlflow.<flavor>.load() birlikte yüklemek için belirli bir tür kullanın.
  • Modelin kendisi tarafından tamamlanmadığında puanlama yordamınızda ö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 portalında Modeller'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. Bu klasör, model kaydedildiğinde belirtildi.

      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 işleve 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 gerekli olan paketi de eklemeniz azureml-core gerekir.

    İpucu

    Modeliniz model kayıt defterinde zaten kayıtlıysa, modelinizle ilişkili dosyayı indirip kopyalayabilirsiniz conda.yml . Dosya, Modeller'in altındaki Azure Machine Learning stüdyosu'da kullanılabilir Yapıtlar listesinden>modelinizi seçin.> 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ı birleştirilerek ve paket eklenerek oluşturulmuştur azureml-core . Dosyayı doğrudan modelden kullanamazsınız conda.yml .

    Ortam tanımı, dağıtım tanımının kendisine anonim bir ortam olarak eklenir. 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ını denetleyebilirsiniz.

    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 gerekli olmayan kaynakları silin.

Toplu iş uç noktasını ve temel alınan 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.