Menyebarkan model MLflow dalam penyebaran batch

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Dalam artikel ini, pelajari cara menyebarkan model MLflow ke Azure Pembelajaran Mesin untuk kedua inferensi batch menggunakan titik akhir batch. Saat menyebarkan model MLflow ke titik akhir batch, Azure Pembelajaran Mesin:

  • Menyediakan gambar dasar MLflow/lingkungan yang dikumpulkan yang berisi dependensi yang diperlukan untuk menjalankan pekerjaan Azure Pembelajaran Mesin Batch.
  • Membuat alur pekerjaan batch dengan skrip penilaian untuk Anda yang dapat digunakan untuk memproses data menggunakan paralelisasi.

Catatan

Untuk informasi selengkapnya tentang jenis file input yang didukung dan detail tentang cara kerja model MLflow, lihat Pertimbangan saat menyebarkan ke inferensi batch.

Tentang contoh ini

Contoh ini menunjukkan bagaimana Anda dapat menyebarkan model MLflow ke titik akhir batch untuk melakukan prediksi batch. Contoh ini menggunakan model MLflow berdasarkan Himpunan Data Penyakit Jantung UCI. Database berisi 76 atribut, tetapi kami menggunakan subset 14 di antaranya. Model ini mencoba memprediksi adanya penyakit jantung pada pasien. Bilangan bulat bernilai dari 0 (tanpa kehadiran) hingga 1 (kehadiran).

Model ini telah dilatih menggunakan pengklasifikasi XGBBoost dan semua prapemrosedaan yang diperlukan telah dipaketkan sebagai scikit-learn alur, menjadikan model ini alur end-to-end yang beralih dari data mentah ke prediksi.

Contoh dalam artikel ini didasarkan pada sampel kode yang terkandung dalam repositori azureml-examples . Untuk menjalankan perintah secara lokal tanpa harus menyalin/menempelkan YAML dan file lainnya, pertama-tama kloning repositori lalu ubah direktori ke folder:

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

File untuk contoh ini ada di:

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

Ikuti di Jupyter Notebooks

Anda bisa mengikuti sampel ini di buku catatan berikut. Di repositori kloning, buka notebook: mlflow-for-batch-tabular.ipynb.

Prasyarat

Sebelum mengikuti langkah-langkah dalam artikel ini, pastikan Anda memiliki prasyarat berikut:

  • Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning.

  • Ruang kerja Azure Machine Learning. Jika Anda tidak memilikinya, gunakan langkah-langkah dalam artikel Mengelola ruang kerja Azure Pembelajaran Mesin untuk membuatnya.

  • Pastikan Anda memiliki izin berikut di ruang kerja:

    • Membuat atau mengelola titik akhir dan penyebaran batch: Gunakan peran Pemilik, Kontributor, atau Kustom yang memungkinkan Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.

    • Membuat penyebaran ARM di grup sumber daya ruang kerja: Gunakan peran Pemilik, Kontributor, atau Kustom yang memungkinkan Microsoft.Resources/deployments/write dalam grup sumber daya tempat ruang kerja disebarkan.

  • Anda perlu menginstal perangkat lunak berikut untuk bekerja dengan Azure Pembelajaran Mesin:

    Azure CLI dan mlekstensi untuk Azure Pembelajaran Mesin.

    az extension add -n ml
    

    Catatan

    Penyebaran komponen alur untuk Titik Akhir Batch diperkenalkan dalam ekstensi versi 2.7 ml untuk Azure CLI. Gunakan az extension update --name ml untuk mendapatkan versi terakhirnya.

Menyambungkan ke ruang kerja Anda

Ruang kerja adalah sumber daya tingkat teratas untuk Azure Machine Learning, menyediakan tempat terpusat untuk bekerja dengan semua artefak yang Anda buat saat Anda menggunakan Azure Machine Learning. Di bagian ini, kita akan menyambungkan ke ruang kerja tempat Anda akan melakukan tugas penyebaran.

Teruskan nilai untuk ID langganan, ruang kerja, lokasi, dan grup sumber daya Anda dalam kode berikut:

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

Langkah-langkah

Ikuti langkah-langkah ini untuk menyebarkan model MLflow ke titik akhir batch untuk menjalankan inferensi batch melalui data baru:

  1. Titik Akhir Batch hanya dapat menyebarkan model terdaftar. Dalam hal ini, kita sudah memiliki salinan lokal model di repositori, jadi kita hanya perlu menerbitkan model ke registri di ruang kerja. Anda dapat melewati langkah ini jika model yang coba Anda sebarkan sudah terdaftar.

    MODEL_NAME='heart-classifier-mlflow'
    az ml model create --name $MODEL_NAME --type "mlflow_model" --path "model"
    
  2. Sebelum bergerak maju, kita perlu memastikan penyebaran batch yang akan kita buat dapat berjalan pada beberapa infrastruktur (komputasi). Penyebaran batch dapat berjalan pada komputasi Azure Pembelajaran Mesin apa pun yang sudah ada di ruang kerja. Itu berarti bahwa beberapa penyebaran batch dapat berbagi infrastruktur komputasi yang sama. Dalam contoh ini, kita akan mengerjakan kluster komputasi Azure Pembelajaran Mesin yang disebut cpu-cluster. Mari kita verifikasi komputasi ada di ruang kerja atau membuatnya sebaliknya.

    Buat kluster komputasi sebagai berikut:

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  3. Sekarang saatnya untuk membuat titik akhir dan penyebaran batch. Mari kita mulai dengan titik akhir terlebih dahulu. Titik akhir hanya memerlukan nama dan deskripsi untuk dibuat. Nama titik akhir akan berakhir di URI yang terkait dengan titik akhir Anda. Karena itu, nama titik akhir batch harus unik dalam wilayah Azure. Misalnya, hanya ada satu titik akhir batch dengan nama mybatchendpoint di westus2.

    Dalam hal ini, mari kita tempatkan nama titik akhir dalam variabel sehingga kita dapat dengan mudah mereferensikannya nanti.

    ENDPOINT_NAME="heart-classifier"
    
  4. Buat titik akhir:

    Untuk membuat titik akhir baru, buat YAML konfigurasi seperti berikut ini:

    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
    

    Kemudian, buat titik akhir dengan perintah berikut:

    az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
    
  5. Sekarang, mari buat penyebaran. Model MLflow tidak mengharuskan Anda menunjukkan lingkungan atau skrip penilaian saat membuat penyebaran seperti yang dibuat untuk Anda. Namun, Anda dapat menentukannya jika Anda ingin menyesuaikan bagaimana penyebaran melakukan inferensi.

    Untuk membuat penyebaran baru di bawah titik akhir yang dibuat, buat YAML konfigurasi seperti berikut ini. Anda dapat memeriksa skema YAML titik akhir batch lengkap untuk properti tambahan.

    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
    

    Kemudian, buat penyebaran dengan perintah berikut:

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

    Penting

    Konfigurasikan timeout dalam penyebaran Anda berdasarkan berapa lama waktu yang dibutuhkan model Anda untuk menjalankan inferensi pada satu batch. Semakin besar ukuran batch, semakin lama nilai ini harus. Remeber yang mini_batch_size menunjukkan jumlah file dalam batch, bukan jumlah sampel. Saat bekerja dengan data tabular, setiap file mungkin berisi beberapa baris yang akan meningkatkan waktu yang diperlukan titik akhir batch untuk memproses setiap file. Gunakan nilai tinggi pada kasus tersebut untuk menghindari kesalahan waktu habis.

  6. Meskipun Anda dapat memanggil penyebaran tertentu di dalam titik akhir, Anda biasanya ingin memanggil titik akhir itu sendiri dan membiarkan titik akhir memutuskan penyebaran mana yang akan digunakan. Penyebaran tersebut diberi nama penyebaran "default". Ini memberi Anda kemungkinan mengubah penyebaran default dan karenanya mengubah model yang melayani penyebaran tanpa mengubah kontrak dengan pengguna yang memanggil titik akhir. Gunakan instruksi berikut untuk memperbarui penyebaran default:

    DEPLOYMENT_NAME="classifier-xgboost-mlflow"
    az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME
    
  7. Pada titik ini, titik akhir batch kami siap digunakan.

Menguji penyebaran

Untuk menguji titik akhir kami, kita akan menggunakan sampel data tanpa label yang terletak di repositori ini dan yang dapat digunakan dengan model. Titik akhir batch hanya dapat memproses data yang terletak di cloud dan yang dapat diakses dari ruang kerja Azure Pembelajaran Mesin. Dalam contoh ini, kita akan mengunggahnya ke penyimpanan data Azure Pembelajaran Mesin. Terutama, kita akan membuat aset data yang dapat digunakan untuk memanggil titik akhir untuk penilaian. Namun, perhatikan bahwa titik akhir batch menerima data yang dapat ditempatkan di berbagai lokasi.

  1. Mari kita buat aset data terlebih dahulu. Aset data ini terdiri dari folder dengan beberapa file CSV yang ingin kita proses secara paralel menggunakan titik akhir batch. Anda dapat melewati langkah ini adalah data Anda sudah terdaftar sebagai aset data atau Anda ingin menggunakan jenis input yang berbeda.

    a. Buat definisi aset data di YAML:

    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. Buat aset data:

    az ml data create -f heart-dataset-unlabeled.yml
    
  2. Sekarang setelah data diunggah dan siap digunakan, mari kita panggil titik akhir:

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

    Catatan

    Utilitas jq mungkin tidak diinstal pada setiap penginstalan. Anda bisa mendapatkan instruksi penginstalan di tautan ini.

    Tip

    Perhatikan bagaimana kami tidak menunjukkan nama penyebaran dalam operasi pemanggilan. Itu karena titik akhir secara otomatis merutekan pekerjaan ke penyebaran default. Karena titik akhir kami hanya memiliki satu penyebaran, maka titik akhir tersebut adalah yang default. Anda dapat menargetkan penyebaran tertentu dengan menunjukkan argumen/parameter deployment_name.

  3. Pekerjaan batch dimulai segera setelah perintah kembali. Anda dapat memantau status pekerjaan hingga selesai:

    az ml job show -n $JOB_NAME --web
    

Menganalisis output

Prediksi output dihasilkan dalam predictions.csv file seperti yang ditunjukkan dalam konfigurasi penyebaran. Pekerjaan menghasilkan output bernama yang disebut score tempat file ini ditempatkan. Hanya satu file yang dihasilkan per pekerjaan batch.

File disusun sebagai berikut:

  • Ada satu baris per setiap titik data yang dikirim ke model. Untuk data tabular, itu berarti bahwa file (predictions.csv) berisi satu baris untuk setiap baris yang ada di setiap file yang diproses. Untuk jenis data lainnya (misalnya gambar, audio, teks), ada satu baris per setiap file yang diproses.

  • Kolom berikut berada dalam file (berurutan):

    • row (opsional), indeks baris yang sesuai dalam file data input. Ini hanya berlaku jika data input bersifat tabular. Prediksi dikembalikan dalam urutan yang sama dengan yang muncul di file input sehingga Anda dapat mengandalkan nomor baris agar sesuai dengan prediksi yang sesuai.
    • prediction, prediksi yang terkait dengan data input. Nilai ini dikembalikan "apa adanya" yang disediakan oleh fungsi model predict(). .
    • file_name, nama file tempat data dibaca. Dalam data tabular, gunakan bidang ini untuk mengetahui prediksi mana yang termasuk dalam data input mana.

Anda dapat mengunduh hasil pekerjaan dengan menggunakan nama pekerjaan:

Untuk mengunduh prediksi, gunakan perintah berikut:

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

Setelah file diunduh, Anda dapat membukanya menggunakan alat favorit Anda. Contoh berikut memuat prediksi menggunakan Pandas dataframe.

import pandas as pd

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

Outputnya terlihat sebagai berikut:

baris prediction file
0 0 heart-unlabeled-0.csv
1 1 heart-unlabeled-0.csv
2 0 heart-unlabeled-0.csv
... ... ...
307 0 heart-unlabeled-3.csv

Tip

Perhatikan bahwa dalam contoh ini data input adalah data tabular dalam CSV format dan ada 4 file input yang berbeda (heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv dan heart-unlabeled-3.csv).

Pertimbangan saat menyebarkan ke inferensi batch

Azure Pembelajaran Mesin mendukung penyebaran model MLflow ke titik akhir batch tanpa menunjukkan skrip penilaian. Ini mewakili cara mudah untuk menyebarkan model yang memerlukan pemrosesan data dalam jumlah besar secara batch. Azure Pembelajaran Mesin menggunakan informasi dalam spesifikasi model MLflow untuk mengatur proses inferensi.

Cara pekerjaan didistribusikan pada pekerja

Titik Akhir Batch mendistribusikan pekerjaan di tingkat file, untuk data terstruktur dan tidak terstruktur. Sebagai konsekuensinya, hanya file URI dan folder URI yang didukung untuk fitur ini. Setiap pekerja memproses batch file Mini batch size pada satu waktu. Untuk data tabular, titik akhir batch tidak memperhitungkan jumlah baris di dalam setiap file saat mendistribusikan pekerjaan.

Peringatan

Struktur folder berlapis tidak dijelajahi selama inferensi. Jika Anda mempartisi data menggunakan folder, pastikan untuk meratakan struktur sebelumnya.

Penyebaran batch akan memanggil predict fungsi model MLflow sekali per file. Untuk file CSV yang berisi beberapa baris, ini dapat memberlakukan tekanan memori dalam komputasi yang mendasar dan dapat meningkatkan waktu yang diperlukan model untuk mencetak satu file (khususnya untuk model mahal seperti model bahasa besar). Jika Anda menemukan beberapa pengecualian di luar memori atau entri waktu habis dalam log, pertimbangkan untuk memisahkan data dalam file yang lebih kecil dengan lebih sedikit baris atau menerapkan batching pada tingkat baris di dalam skrip model/penilaian.

Dukungan jenis file

Jenis data berikut didukung untuk inferensi batch saat menyebarkan model MLflow tanpa lingkungan dan skrip penilaian. Jika Anda ingin memproses jenis file yang berbeda, atau menjalankan inferensi dengan cara yang berbeda yang dilakukan titik akhir batch secara default, Anda selalu dapat membuat penyebaran dengan skrip penilaian seperti yang dijelaskan dalam Menggunakan model MLflow dengan skrip penilaian.

Ekstensi {i>file Jenis yang dikembalikan sebagai input model Persyaratan tanda tangan
.csv, , .parquet.pqt pd.DataFrame ColSpec. Jika tidak disediakan, penentuan jenis kolom tidak diberlakukan.
.png, , .jpg.jpeg, .tiff, , .bmp,.gif np.ndarray TensorSpec. Input dibentuk ulang agar sesuai dengan bentuk tensor jika tersedia. Jika tidak ada tanda tangan yang tersedia, tensor jenis np.uint8 disimpulkan. Untuk panduan tambahan, baca Pertimbangan untuk model MLflow yang memproses gambar.

Peringatan

Perhatikan bahwa setiap file yang tidak didukung yang mungkin ada dalam data input akan membuat pekerjaan gagal. Anda akan melihat entri kesalahan sebagai berikut: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro'. Tipe file 'avro' tidak didukung.".

Penerapan tanda tangan untuk model MLflow

Jenis data input diberlakukan oleh pekerjaan penyebaran batch saat membaca data menggunakan tanda tangan model MLflow yang tersedia. Ini berarti bahwa input data Anda harus mematuhi jenis yang ditunjukkan dalam tanda tangan model. Jika data tidak dapat diurai seperti yang diharapkan, pekerjaan akan gagal dengan pesan kesalahan yang mirip dengan yang berikut: "ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv'. Pengecualian: literal tidak valid untuk int() dengan basis 10: 'value'".

Tip

Tanda tangan dalam model MLflow bersifat opsional tetapi sangat didorong karena memberikan cara mudah untuk mendeteksi masalah kompatibilitas data secara dini. Untuk informasi selengkapnya tentang cara mencatat model dengan tanda tangan, baca Model pengelogan dengan tanda tangan, lingkungan, atau sampel kustom.

Anda dapat memeriksa tanda tangan model model Anda dengan membuka file yang MLmodel terkait dengan model MLflow Anda. Untuk detail selengkapnya tentang cara kerja tanda tangan di MLflow lihat Tanda Tangan di MLflow.

Dukungan flavor

Penyebaran batch hanya mendukung penyebaran model MLflow dengan pyfunc rasa. Jika Anda perlu menyebarkan rasa yang berbeda, lihat Menggunakan model MLflow dengan skrip penilaian.

Menyesuaikan penyebaran model MLflow dengan skrip penilaian

Model MLflow dapat disebarkan ke titik akhir batch tanpa menunjukkan skrip penilaian dalam definisi penyebaran. Namun, Anda dapat ikut serta untuk menunjukkan file ini (biasanya disebut sebagai driver batch) untuk menyesuaikan bagaimana inferensi dijalankan.

Anda biasanya akan memilih alur kerja ini saat:

  • Anda perlu memproses jenis file yang tidak didukung oleh penyebaran batch penyebaran MLflow.
  • Anda perlu menyesuaikan cara model dijalankan, misalnya, menggunakan rasa tertentu untuk memuatnya dengan mlflow.<flavor>.load().
  • Anda perlu melakukan pemrosesan pra/pos dalam rutinitas penilaian Anda ketika tidak dilakukan oleh model itu sendiri.
  • Output model tidak dapat diwakili dengan baik dalam data tabular. Misalnya, ini adalah tensor yang mewakili gambar.
  • Model Anda tidak dapat memproses setiap file sekaligus karena kendala memori dan perlu membacanya dalam gugus.

Penting

Jika Anda memilih untuk menunjukkan skrip penilaian untuk penyebaran model MLflow, Anda juga harus menentukan lingkungan tempat penyebaran akan berjalan.

Langkah-langkah

Gunakan langkah-langkah berikut untuk menyebarkan model MLflow dengan skrip penilaian kustom.

  1. Identifikasi folder tempat model MLflow Anda ditempatkan.

    a. Buka portal Azure Pembelajaran Mesin.

    b. Buka bagian Model.

    c. Pilih model yang ingin Anda sebarkan dan klik pada tab Artefak.

    d. Catat folder yang ditampilkan. Folder ini ditunjukkan ketika model terdaftar.

    Cuplikan layar memperlihatkan folder tempat artefak model ditempatkan.

  2. Buat skrip penilaian. Perhatikan bagaimana nama model folder yang Anda identifikasi sebelumnya telah disertakan init() dalam fungsi .

    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. Mari kita buat lingkungan tempat skrip penilaian dapat dijalankan. Karena model kami adalah MLflow, persyaratan conda juga ditentukan dalam paket model (untuk detail selengkapnya tentang model MLflow dan file yang disertakan di dalamnya lihat Format MLmodel). Kita kemudian akan membangun lingkungan menggunakan dependensi conda dari file. Namun, kita juga perlu menyertakan paket azureml-core yang diperlukan untuk Penyebaran Batch.

    Tip

    Jika model Anda sudah terdaftar di registri > model, Anda dapat mengunduh/menyalin file yang conda.yml terkait dengan model Anda dengan membuka Model studio> Azure Pembelajaran Mesin Pilih model Anda dari daftar > Artefak. Buka folder akar di navigasi dan pilih file yang conda.yml tercantum. Klik Unduh atau salin kontennya.

    Penting

    Contoh ini menggunakan lingkungan conda yang ditentukan di /heart-classifier-mlflow/environment/conda.yaml. File ini dibuat dengan menggabungkan file dependensi conda MLflow asli dan menambahkan paket azureml-core. Anda tidak dapat menggunakan conda.yml file dari model secara langsung.

    Definisi lingkungan akan disertakan dalam definisi penyebaran itu sendiri sebagai lingkungan anonim. Anda akan melihat di baris berikut dalam penyebaran:

    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    
  4. Konfigurasikan penyebaran:

    Untuk membuat penyebaran baru di bawah titik akhir yang dibuat, buat YAML konfigurasi seperti berikut ini. Anda dapat memeriksa skema YAML titik akhir batch lengkap untuk properti tambahan.

    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. Mari kita buat penyebaran sekarang:

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    
  6. Pada titik ini, titik akhir batch kami siap digunakan.

Membersihkan sumber daya

Jalankan kode berikut untuk menghapus titik akhir batch dan semua penyebaran yang mendasarinya. Pekerjaan penilaian batch tidak akan dihapus.

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

Langkah berikutnya