Share via


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 her iki toplu çıkarım için MLflow modellerini Azure Machine Learning'e dağıtmayı öğrenin. MLflow modellerini toplu iş uç noktalarına dağıtırken Azure Machine Learning:

  • Azure Machine Learning Batch işini çalıştırmak için gerekli bağımlılıkları içeren bir MLflow temel görüntüsü/seçilmiş 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.

Not

Desteklenen giriş dosyası türleri ve MLflow modelinin nasıl çalıştığı hakkında daha fazla bilgi için bkz. Toplu çıkarıma dağıtım sırasında dikkat edilmesi gerekenler.

Bu örnek hakkında

Bu örnekte toplu tahminler gerçekleştirmek için bir MLflow modelini toplu iş uç noktasına nasıl dağıtabileceğiniz gösterilmektedir. Bu örnekte UCI Kalp Hastalığı Veri Kümesini temel alan bir MLflow modeli kullanılır. Veritabanında 76 öznitelik var, ancak bunların 14'ünün alt kümesini kullanıyoruz. Model, bir hastada kalp hastalığının varlığını tahmin etmeye çalışır. 0 'dan (iletişim durumu yok) 1'e (iletişim durumu) değerlenen tamsayıdır.

Model bir XGBBoost sınıflandırıcı kullanılarak eğitilmiştir ve gerekli tüm ön işleme işlem scikit-learn hattı olarak paketlenmiştir ve bu da modeli ham verilerden tahminlere giden uçtan uca bir işlem hattı haline getirmiştir.

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 örnekteki dosyalar şunlardır:

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

Jupyter Notebooks'ta takip edin

Aşağıdaki not defterlerinde bu örneği izleyebilirsiniz. Kopyalanan depoda not defterini açın: mlflow-for-batch-tabular.ipynb.

Önkoşullar

Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • 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ı. Yoksa, azure machine learning çalışma alanlarını yönetme makalesindeki adımları kullanarak bir tane oluşturun.

  • Ç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 ARM 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.

  • Azure Machine Learning ile çalışmak için aşağıdaki yazılımı yüklemeniz gerekir:

    Azure CLI ve mlAzure Machine Learning uzantısı.

    az extension add -n ml
    

    Not

    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. Son sürümünü almak için kullanın az extension update --name ml .

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

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

Abonelik kimliğiniz, çalışma alanınız, konumunuz ve kaynak grubunuzun değerlerini aşağıdaki kodda geçirin:

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

Adımlar

Yeni veriler üzerinde toplu çıkarım çalıştırmak için bir MLflow modelini toplu iş uç noktasına dağıtmak için şu adımları izleyin:

  1. Batch Uç Noktası yalnızca kayıtlı modelleri dağıtabilir. Bu durumda, depoda modelin yerel bir kopyası zaten var, bu nedenle modeli yalnızca çalışma alanında kayıt defterinde yayımlamamız gerekiyor. Dağıtmaya çalıştığınız model zaten kayıtlıysa bu adımı atlayabilirsiniz.

    MODEL_NAME='heart-classifier-mlflow'
    az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"
    
  2. Devam etmeden önce, oluşturmak üzere olduğumuz toplu dağıtımların bazı altyapılarda (işlem) çalıştırıldığından emin olmamız gerekir. Batch dağıtımları, çalışma alanında zaten var olan tüm Azure Machine Learning işlemlerinde çalıştırılabilir. Başka bir deyişle, birden çok toplu dağıtım aynı işlem altyapısını paylaşabilir. Bu örnekte adlı cpu-clusterbir Azure Machine Learning işlem kümesi üzerinde çalışacağız. şimdi işlem çalışma alanında var olduğunu doğrulayalım veya başka bir şekilde oluşturalım.

    Aşağıdaki gibi bir işlem kümesi oluşturun:

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  3. Şimdi toplu iş uç noktasını ve dağıtımını oluşturmanın zamanı geldi. Önce uç noktayla başlayalım. Uç noktaların oluşturulması için yalnızca bir ad ve açıklama gerekir. Uç noktanın adı, uç noktanızla ilişkili URI'ye eklenecektir. Bu nedenle, toplu uç nokta adlarının bir Azure bölgesinde benzersiz olması gerekir. Örneğin, içinde westus2adı mybatchendpoint olan tek bir toplu iş uç noktası olabilir.

    Bu durumda, uç noktanın adını bir değişkene yerleştirelim, böylece daha sonra kolayca başvurabiliriz.

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

    Yeni bir uç nokta oluşturmak için aşağıdakine 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
    

    Ardından aşağıdaki komutla uç noktayı oluşturun:

    az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
    
  5. Şimdi dağıtımı oluşturalım. MLflow modelleri, dağıtımları sizin için oluşturulduğu gibi oluştururken bir ortamı veya puanlama betiğini belirtmenizi gerektirmez. Ancak, dağıtımın çıkarımını özelleştirmek istiyorsanız bunları belirtebilirsiniz.

    Oluşturulan uç nokta altında yeni bir dağıtım oluşturmak için aşağıdakine benzer 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
    

    Ardından, aşağıdaki komutla dağıtımı oluşturun:

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

    Önemli

    Dağıtımınızda, modelinizin çıkarım işlemini tek bir toplu işlemde çalıştırması için gereken süreye göre yapılandırın timeout . Toplu iş boyutu ne kadar büyük ise bu değerin o kadar uzun olması gerekir. Örnek sayısını değil, toplu iş içindeki dosya sayısını gösteren remeber mini_batch_size . 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. Zaman aşımı hatalarını önlemek için bu durumlarda yüksek değerler kullanın.

  6. Bir uç noktanın içinde belirli bir dağıtımı çağırabilirsiniz ancak genellikle uç noktanın kendisini çağırmak ve hangi dağıtımın kullanılacağına uç noktanın karar vermesine izin vermek istersiniz. Bu tür bir dağıtım "varsayılan" dağıtım olarak adlandırılır. Bu, varsayılan dağıtımı değiştirme ve dolayısıyla kullanıcının uç noktayı çağırmasıyla yapılan sözleşmeyi değiştirmeden dağıtımı sunan modeli değiştirme olanağı sağlar. 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
    
  7. Bu noktada toplu iş uç noktamız kullanılmaya hazırdır.

Dağıtımı test etme

Uç noktamızı test etmek için bu depoda bulunan ve modelle birlikte kullanılabilen etiketlenmemiş verilerin bir örneğini kullanacağız. Batch uç noktaları yalnızca bulutta bulunan ve Azure Machine Learning çalışma alanından erişilebilen verileri işleyebilir. Bu örnekte bunu bir Azure Machine Learning veri deposuna yükleyeceğiz. Özellikle puanlama için uç noktayı çağırmak için kullanılabilecek bir veri varlığı oluşturacağız. Ancak, toplu iş uç noktalarının çeşitli konumlara yerleştirilebilen verileri kabul ettiğini unutmayın.

  1. Önce veri varlığını oluşturalım. Bu 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.

    a. içinde YAMLbir veri varlığı tanımı oluşturun:

    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
    

    b. Veri varlığını oluşturun:

    az ml data create -f heart-dataset-unlabeled.yml
    
  2. Veriler karşıya yüklendiğine ve kullanılmaya hazır olduğuna göre şimdi uç noktayı çağıralım:

    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önergelerini bu bağlantıdan alabilirsiniz.

    İpucu

    Çağırma işleminde dağıtım adını göstermediğimize dikkat edin. Bunun nedeni uç noktanın işi otomatik olarak varsayılan dağıtıma yönlendirmesidir. Uç noktamızın yalnızca bir dağıtımı olduğundan, bu varsayılan dağıtımdır. bağımsız değişkenini/parametresini deployment_namebelirterek belirli bir dağıtımı hedefleyebilirsiniz.

  3. Komut döndürüldüğü anda bir toplu iş başlatılır. İş bitene kadar işin durumunu izleyebilirsiniz:

    az ml job show -n $JOB_NAME --web
    

Çıkışları çözümleme

Çıktı tahminleri, dağıtım yapılandırmasında predictions.csv gösterildiği gibi dosyasında oluşturulur. İş, bu dosyanın yerleştirildiği adlı score adlandırılmış 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ı için bir satır vardır. Tablosal veriler için, dosya (predictions.csv) işlenen dosyaların her birinde bulunan her satır için bir satır içerdiği anlamına gelir. Diğer veri türleri için (ör. görüntüler, ses, metin), işlenen her dosya için bir satır vardır.

  • Aşağıdaki sütunlar dosyasındadır (sırayla):

    • row (isteğe bağlı), giriş veri dosyasında karşılık gelen satır dizini. Bu yalnızca giriş verileri tablosal olduğunda geçerlidir. Tahminler, giriş dosyasında göründükleri sırayla döndürülür, böylece ilgili tahminle eşleşmesi için satır numarasına güvenebilirsiniz.
    • prediction, giriş verileriyle ilişkili tahmin. Bu değer, modelin predict(). işlevi tarafından sağlanan "olduğu gibi" döndürülür.
    • file_name, verilerin okunduğu dosya adı. Tablosal verilerde, hangi tahminin hangi giriş verilerine ait olduğunu öğrenmek 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 ./

Dosya indirildikten sonra, sık kullandığınız aracı kullanarak dosyayı açabilirsiniz. Aşağıdaki örnek, veri çerçevesini kullanarak Pandas tahminleri yükler.

import pandas as pd

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

Çıkış aşağıdaki gibi görünür:

satır Tahmin dosyası
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 biçiminde tablosal veriler CSV olduğuna ve 4 farklı giriş dosyası (heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv ve heart-unlabeled-3.csv) olduğuna dikkat edin.

Toplu çıkarıma dağıtılırken dikkat edilmesi gerekenler

Azure Machine Learning, puanlama betiği göstermeden toplu iş uç noktalarına MLflow modelleri dağıtmayı destekler. Bu, büyük miktarlardaki verilerin toplu olarak işlenmesini gerektiren modelleri dağıtmanın kullanışlı bir yolunu temsil eder. Azure Machine Learning, çıkarım işlemini yönetmek için MLflow modeli belirtimindeki bilgileri kullanır.

Çalışanlar üzerinde çalışma nasıl dağıtılır?

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 araştırılmaz. Klasörleri kullanarak verilerinizi bölümlediyseniz, yapıyı önceden düzleştirmeyi unutmayın.

Batch dağıtımları, MLflow modelinin işlevini dosya başına bir kez çağırır predict . Birden çok satır içeren CSV dosyaları için bu, temel işlemde bellek baskısı oluşturabilir ve modelin tek bir dosyayı puanlama süresini artırabilir (özellikle büyük dil modelleri gibi pahalı modeller için). Günlüklerde birkaç bellek dışı özel durumla 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 desteği

Ortam ve 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ı toplu iş uç noktalarının varsayılan olarak yaptığı şekilde yürütmek isterseniz, MLflow modellerini puanlama betiğiyle kullanma bölümünde açıklandığı gibi her zaman bir puanlama betiğiyle dağıtım oluşturabilirsiniz.

Dosya uzantısı Modelin 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. Ek yönergeler için bkz . Görüntüleri işleyen MLflow modelleriyle ilgili önemli noktalar.

Uyarı

Giriş verilerinde bulunabilecek desteklenmeyen tüm dosyalar işin başarısız olmasına neden olur. Şu şekilde bir hata girişi görürsünüz: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro'. 'avro' dosya türü desteklenmiyor."

MLflow modelleri için imza zorlama

Girişin veri türleri, kullanılabilir MLflow modeli imzası kullanılarak veriler okunurken toplu dağıtım işleri tarafından zorlanır. Bu, veri girişinizin model imzasında belirtilen türlerle uyumlu olması gerektiği anlamına gelir. Veriler beklendiği gibi ayrıştırılamıyorsa, iş aşağıdakine benzer bir hata iletisiyle başarısız olur: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv'. Özel durum: int() için 10 tabanında geçersiz değişmez değer: 'value'".

İpucu

MLflow modellerindeki imzalar isteğe bağlıdır, ancak veri uyumluluğu sorunlarını erken algılamak için uygun bir yol sağladığından bunlar kesinlikle önerilir. modelleri imzalarla günlüğe kaydetme hakkında daha fazla bilgi için Özel imza, ortam veya örneklerle modelleri günlüğe kaydetme bölümüne bakın.

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.

Flavor desteği

Toplu dağıtımlar yalnızca bir pyfunc çeşitle MLflow modellerini dağıtmayı destekler. Farklı bir çeşit dağıtmanız gerekiyorsa bkz . Puanlama betiğiyle MLflow modellerini kullanma.

Puanlama betiğiyle MLflow 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ın nasıl yürütüleceğini özelleştirmek için bu dosyayı (genellikle toplu iş sürücüsü olarak adlandırılır) belirtmeyi kabul edebilirsiniz.

Genellikle şu durumlarda bu iş akışını seçersiniz:

  • Toplu dağıtımlar MLflow dağıtımları tarafından desteklenmeyen bir dosya türünü işlemeniz gerekir.
  • Örneğin, modelin çalışma şeklini özelleştirmeniz, örneğin, ile mlflow.<flavor>.load()yüklemek için belirli bir çeşit kullanmanız gerekir.
  • Modelin kendisi tarafından yapılmadığında puanlama rutininizde ön/pos işlemesi yapmanız gerekir.
  • Modelin çıkışı tablosal verilerde düzgün bir şekilde temsil edilemiyor. Örneğin, bir görüntüyü temsil eden bir tensordur.
  • Bellek kısıtlamaları nedeniyle her dosyayı aynı anda işleyemezsiniz ve öbekler halinde okuması gerekir.

Önemli

MLflow modeli dağıtımı için puanlama betiğini belirtmeyi seçerseniz, dağıtımın çalıştırılacağı ortamı da belirtmeniz gerekir.

Adımlar

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

    a. Azure Machine Learning portalına gidin.

    b. Modeller bölümüne gidin.

    c. Dağıtmaya çalıştığınız modeli seçin ve Yapıtlar sekmesine tıklayın.

    d. 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. Daha önce tanımladığınız klasör adının model işleve nasıl eklendiğine init() 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şturalım. Modelimiz MLflow olduğundan, conda gereksinimleri model paketinde de belirtilir (MLflow modelleri hakkında daha fazla bilgi için ve içindeki dosyalar MLmodel biçimine bakın). Ardından, dosyadaki conda bağımlılıklarını kullanarak ortamı oluşturacağız. Ancak, Batch Dağıtımları için gereken paketi azureml-core de eklememiz gerekir.

    İpucu

    Modeliniz model kayıt defterine zaten kayıtlıysa Modeller Yapıtlar listesinden conda.yml> modelinizi seçin Azure Machine Learning stüdyosu>> giderek modelinizle ilişkili dosyayı indirebilir/kopyalayabilirsiniz. Gezintide kök klasörü açın ve listelenen dosyayı seçin conda.yml . İçeriğini indir veya kopyala'ya tıklayın.

    Ö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 paketi azureml-coreeklenerek oluşturulmuştur. Dosyayı doğrudan modelden kullanamazsınızconda.yml.

    Ortam tanımı, dağıtım tanımının kendisine anonim bir ortam olarak eklenir. Dağıtımda aşağıdaki satırlarda 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ğıdakine benzer 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. Şimdi dağıtımı oluşturalım:

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    
  6. Bu noktada toplu iş uç noktamız kullanılmaya hazırdır.

Kaynakları temizleme

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. Toplu puanlama işleri silinmez.

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

Sonraki adımlar