Mengemas dan menyebarkan model di luar Azure Pembelajaran Mesin (pratinjau)

Anda dapat menyebarkan model di luar Azure Pembelajaran Mesin untuk penyajian online dengan membuat paket model (pratinjau). Azure Pembelajaran Mesin memungkinkan Anda membuat paket model yang mengumpulkan semua dependensi yang diperlukan untuk menyebarkan model pembelajaran mesin ke platform penyajian. Anda dapat memindahkan paket model di seluruh ruang kerja dan bahkan di luar Azure Pembelajaran Mesin. Untuk mempelajari selengkapnya tentang paket model, lihat Paket model untuk penyebaran (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 Azure App Service.

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 ruang kerja untuk membuatnya.

    Catatan

    Ruang kerja yang diaktifkan tautan privat tidak mendukung model pengemasan untuk penyebaran di luar Azure Pembelajaran Mesin.

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

Siapkan sistem Anda

Ikuti langkah-langkah ini untuk menyiapkan sistem Anda.

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

    Artikel ini menggunakan contoh dalam folder endpoints/online/deploy-with-packages/mlflow-model.

  2. 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>
    
  3. Paket mengharuskan model didaftarkan di ruang kerja Anda atau di registri Azure Pembelajaran Mesin. Dalam contoh ini, ada salinan lokal model di repositori, jadi Anda 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'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Menyebarkan paket model ke Azure App Service

Di bagian ini, Anda mengemas model MLflow yang terdaftar sebelumnya dan menyebarkannya ke Azure App Service.

  1. Menyebarkan model di luar Azure Pembelajaran Mesin memerlukan pembuatan spesifikasi paket. Untuk membuat paket yang sepenuhnya terputus dari Azure Pembelajaran Mesin, tentukan copy mode dalam konfigurasi model. Mode ini copy memberi tahu paket untuk menyalin artefak di dalam paket. Kode berikut menunjukkan cara menentukan mode salin untuk konfigurasi model:

    Buat spesifikasi YAML paket:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Tip

    Saat Anda menentukan konfigurasi model yang digunakan copy untuk properti mode, Anda menjamin bahwa semua artefak model disalin di dalam gambar docker yang dihasilkan alih-alih diunduh dari registri model Azure Pembelajaran Mesin, sehingga memungkinkan portabilitas sejati di luar Azure Pembelajaran Mesin. Untuk spesifikasi lengkap tentang semua opsi saat membuat paket, lihat Membuat spesifikasi paket.

  2. Mulai operasi paket.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Hasil operasi paket adalah lingkungan di Azure Pembelajaran Mesin. Keuntungan memiliki lingkungan ini adalah bahwa setiap lingkungan memiliki gambar docker yang sesuai yang dapat Anda gunakan dalam penyebaran eksternal. Gambar dihosting di Azure Container Registry. Langkah-langkah berikut menunjukkan bagaimana Anda mendapatkan nama gambar yang dihasilkan:

    1. Buka studio Azure Machine Learning.

    2. Pilih bagian Lingkungan .

    3. Pilih tab Lingkungan kustom.

    4. Cari lingkungan bernama heart-classifier-mlflow-package, yang merupakan nama paket yang baru saja Anda buat.

    5. Salin nilai yang ada di bidang registri kontainer Azure.

    A screenshot showing the section where the Azure container registry image name is displayed in Azure Machine Learning studio.

  4. Sekarang, sebarkan paket ini di App Service.

    1. Buka portal Azure dan buat sumber daya App Service baru.

    2. Di wizard pembuatan, pilih grup langganan dan sumber daya yang Anda gunakan.

    3. Di bagian Detail instans, beri nama aplikasi.

    4. Untuk Terbitkan, pilih Kontainer Docker.

    5. Untuk Sistem Operasi, pilih Linux.

      A screenshot showing how to configure the app service to deploy the generated docker container image.

    6. Konfigurasikan halaman lainnya sesuai kebutuhan dan pilih Berikutnya.

    7. Buka tab Docker .

    8. Untuk Opsi, pilih Kontainer Tunggal.

    9. Untuk Sumber Gambar, pilih Azure Container Registry.

    10. Konfigurasikan opsi registri kontainer Azure sebagai berikut:

      1. Untuk Registri, pilih Azure Container Registry yang terkait dengan ruang kerja Azure Pembelajaran Mesin.

      2. Untuk Gambar, pilih gambar yang Anda temukan di langkah 3(e) tutorial ini.

      3. Untuk Tag, pilih terbaru.

      A screenshot showing the section Docker of the wizard, where the docker image associated with the package is indicated.

    11. Konfigurasikan wizard lainnya sesuai kebutuhan.

    12. Pilih Buat. Model sekarang disebarkan di App Service yang Anda buat.

    13. Cara Anda memanggil dan mendapatkan prediksi tergantung pada server inferensi yang Anda gunakan. Dalam contoh ini, Anda menggunakan server inferensi Azure Pembelajaran Mesin, yang membuat prediksi di bawah rute /score. Untuk informasi selengkapnya tentang format dan fitur input, lihat detail paket azureml-inference-server-http.

    14. Siapkan payload permintaan. Format untuk model MLflow yang disebarkan dengan server inferensi Azure Pembelajaran Mesin adalah sebagai berikut:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Uji penyebaran model untuk melihat apakah berfungsi.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Langkah selanjutnya