Menyebarkan paket model ke titik akhir online (pratinjau)

Paket model adalah kemampuan di Azure Pembelajaran Mesin yang memungkinkan Anda mengumpulkan semua dependensi yang diperlukan untuk menyebarkan model pembelajaran mesin ke platform penyajian. Membuat paket sebelum menyebarkan model menyediakan penyebaran yang kuat dan andal dan alur kerja MLOps yang lebih efisien. Paket dapat dipindahkan di seluruh ruang kerja dan bahkan di luar Azure Pembelajaran Mesin. Pelajari selengkapnya tentang paket Model (pratinjau)

Penting

Fitur ini masih dalam pratinjau umum. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas.

Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Dalam artikel ini, Anda mempelajari cara mengemas model dan menyebarkannya ke titik akhir online di Azure Pembelajaran Mesin.

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 Cara mengelola ruangkerja untuk membuatnya.

  • Kontrol akses berbasis peran Azure (Azure RBAC) digunakan untuk memberikan akses ke operasi di Azure Machine Learning. Untuk melakukan langkah-langkah dalam artikel ini, akun pengguna Anda harus diberi peran pemilik atau kontributor untuk ruang kerja Azure Pembelajaran Mesin, atau peran kustom. Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

Tentang contoh ini

Dalam contoh ini, Anda mengemas model jenis kustom dan menyebarkannya ke titik akhir online untuk inferensi online.

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

Bagian ini menggunakan contoh di titik akhir folder /online/deploy-packages/custom-model.

Menyambungkan ke ruang kerja Anda

Koneksi ke ruang kerja Azure Pembelajaran Mesin tempat Anda akan melakukan pekerjaan Anda.

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

Mengemas model

Anda dapat membuat paket model secara eksplisit untuk memungkinkan Anda mengontrol bagaimana operasi pengemasan dilakukan. Anda dapat membuat paket model dengan menentukan:

  • Model ke paket: Setiap paket model hanya dapat berisi satu model. Azure Pembelajaran Mesin tidak mendukung pengemasan beberapa model di bawah paket model yang sama.
  • Lingkungan dasar: Lingkungan digunakan untuk menunjukkan gambar dasar, dan dalam paket Python bergantung pada kebutuhan model Anda. Untuk model MLflow, Azure Pembelajaran Mesin secara otomatis menghasilkan lingkungan dasar. Untuk model kustom, Anda perlu menentukannya.
  • Teknologi penyajian: Tumpukan inferensi yang digunakan untuk menjalankan model.

Tip

Jika model Anda adalah MLflow, Anda tidak perlu membuat paket model secara manual. Kita dapat secara otomatis mengemas sebelum penyebaran. Lihat Menyebarkan model MLflow ke titik akhir online.

  1. Paket model mengharuskan model didaftarkan di ruang kerja Anda atau di registri Azure Pembelajaran Mesin. Dalam contoh ini, Anda sudah memiliki salinan lokal model di repositori, jadi Anda hanya perlu menerbitkan model ke registri di ruang kerja. Anda dapat melewati bagian ini jika model yang coba Anda sebarkan sudah terdaftar.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Model kami memerlukan paket berikut untuk dijalankan dan kami memilikinya yang ditentukan dalam file conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Catatan

    Perhatikan bagaimana hanya persyaratan model yang ditunjukkan dalam YAML conda. Paket apa pun yang diperlukan untuk server inferensi akan disertakan oleh operasi paket.

    Tip

    Jika model Anda memerlukan paket yang dihosting di umpan privat, Anda dapat mengonfigurasi paket Anda untuk menyertakannya. Baca Paket model yang memiliki dependensi dalam umpan Python privat.

  3. Buat lingkungan dasar yang berisi persyaratan model dan gambar dasar. Hanya dependensi yang diperlukan oleh model Anda yang ditunjukkan di lingkungan dasar. Untuk model MLflow, lingkungan dasar bersifat opsional dalam hal ini Azure Pembelajaran Mesin membuatnya secara otomatis untuk Anda.

    Buat definisi lingkungan dasar:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Kemudian buat lingkungan sebagai berikut:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Buat spesifikasi paket:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Mulai operasi paket model:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Hasil dari operasi paket adalah lingkungan.

Menyebarkan paket model

Paket model dapat disebarkan langsung ke titik akhir online di Azure Pembelajaran Mesin. Ikuti langkah-langkah ini untuk menyebarkan paket ke titik akhir online:

  1. Pilih nama untuk titik akhir untuk menghosting penyebaran paket dan membuatnya:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Buat penyebaran, menggunakan paket . Perhatikan cara environment dikonfigurasi dengan paket yang telah Anda buat.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Tip

    Perhatikan bahwa Anda tidak menentukan model atau skrip penilaian dalam contoh ini; mereka semua bagian dari paket.

  3. Mulai penyebaran:

    az ml online-deployment create -f deployment.yml
    
  4. Pada titik ini, penyebaran siap dikonsumsi. Anda dapat menguji cara kerjanya dengan membuat file permintaan sampel:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Mengirim permintaan ke titik akhir

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Langkah selanjutnya