Bagikan melalui


Menyebarkan dan menilai model pembelajaran mesin menggunakan titik akhir online

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

Dalam artikel ini, Anda belajar menyebarkan model Anda ke titik akhir online untuk digunakan dalam inferensi real time. Anda mulai dengan menyebarkan model di komputer lokal Anda untuk men-debug kesalahan apa pun. Kemudian, Anda menyebarkan dan menguji model di Azure, melihat log penyebaran, dan memantau perjanjian tingkat layanan (SLA). Pada akhir artikel ini, Anda akan memiliki titik akhir HTTPS/REST yang dapat diskalakan yang dapat Anda gunakan untuk inferensi real time.

Titik akhir online adalah titik akhir yang digunakan untuk inferensi real time. Ada dua jenis titik akhir online: titik akhir online terkelola dan titik akhir online Kubernetes. Untuk informasi selengkapnya tentang titik akhir dan perbedaan antara titik akhir online terkelola dan titik akhir online Kubernetes, lihat Apa itu titik akhir Azure Pembelajaran Mesin?

Titik akhir online terkelola membantu menyebarkan model pembelajaran mesin Anda secara turnkey. Titik akhir online terkelola bekerja dengan mesin CPU dan GPU yang kuat di Azure dengan cara yang dapat diskalakan dan dikelola sepenuhnya. Titik akhir online yang dikelola menangani penyajian, penskalaan, pengamanan, dan pemantauan model Anda, membebaskan Anda dari overhead pengaturan dan pengelolaan infrastruktur yang mendasarinya.

Contoh utama dalam dokumen ini menggunakan titik akhir online terkelola untuk penyebaran. Untuk menggunakan Kubernetes, lihat catatan dalam dokumen ini yang sebaris dengan diskusi titik akhir online terkelola.

Prasyarat

BERLAKU UNTUK: Ekstensi ml Azure CLI v2 (saat ini)

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

  • 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 ditetapkan sebagaipemilik atau kontributor untuk ruang kerja Azure Machine Learning, atau peran khusus yang memungkinkan Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Jika Anda menggunakan studio untuk membuat/mengelola titik akhir/penyebaran online, Anda memerlukan izin tambahan "Microsoft.Resources/deployments/write" dari pemilik grup sumber daya. Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

  • (Opsional) Untuk menerapkan secara lokal, Anda harus memasang Docker Engine di komputer lokal Anda. Kami sangat merekomendasikan opsi ini, jadi lebih mudah untuk menghapus masalah.

  • Pastikan Anda memiliki cukup kuota komputer virtual (VM) yang dialokasikan untuk penyebaran. Azure Pembelajaran Mesin mencadangkan 20% sumber daya komputasi Anda untuk melakukan peningkatan pada beberapa SKU VM. Misalnya, jika Anda meminta 10 instans dalam penyebaran, Anda harus memiliki kuota untuk 12 untuk setiap jumlah inti untuk SKU VM. Kegagalan untuk memperhitungkan sumber daya komputasi tambahan menghasilkan kesalahan. Ada beberapa SKU VM yang dikecualikan dari reservasi kuota tambahan. Untuk informasi selengkapnya tentang alokasi kuota, lihat alokasi kuota komputer virtual untuk penyebaran.

  • Atau, Anda dapat menggunakan kuota dari kumpulan kuota bersama Azure Pembelajaran Mesin untuk waktu yang terbatas. Azure Pembelajaran Mesin menyediakan kumpulan kuota bersama tempat pengguna di berbagai wilayah dapat mengakses kuota untuk melakukan pengujian dalam waktu terbatas, tergantung pada ketersediaan. Saat Anda menggunakan studio untuk menyebarkan model Llama-2, Phi, Nemotron, Mistral, Dolly, dan Deci-DeciLM dari katalog model ke titik akhir online terkelola, Azure Pembelajaran Mesin memungkinkan Anda mengakses kumpulan kuota bersamanya untuk waktu yang singkat sehingga Anda dapat melakukan pengujian. Untuk informasi selengkapnya tentang kumpulan kuota bersama, lihat Kuota bersama Azure Pembelajaran Mesin.

Siapkan sistem Anda

Atur variabel lingkungan

Jika belum mengatur default untuk Azure CLI, simpan pengaturan default Anda. Untuk menghindari melewati nilai untuk langganan, ruang kerja, dan grup sumber daya Anda beberapa kali, jalankan kode ini:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Mengkloning repositori contoh

Untuk mengikuti artikel ini, pertama-tama klon repositori contoh (azureml-examples). Kemudian, jalankan kode berikut untuk masuk ke direktori repositori cli/ :

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

Tip

Gunakan --depth 1 untuk mengkloning hanya penerapan terbaru ke repositori, yang mengurangi waktu untuk menyelesaikan operasi.

Perintah dalam tutorial ini ada di file deploy-local-endpoint.sh dan deploy-managed-online-endpoint.sh di cli direktori, dan file konfigurasi YAML berada di endpoints/online/managed/sample/ subdirektori.

Catatan

File konfigurasi YAML untuk titik akhir online Kubernetes berada di subdirektori endpoints/online/kubernetes/ .

Tentukan titik akhir

Untuk menentukan titik akhir online, tentukan nama titik akhir dan mode autentikasi. Untuk informasi selengkapnya tentang titik akhir online terkelola, lihat Titik akhir online.

Mengatur nama titik akhir

Untuk mengatur nama titik akhir Anda, jalankan perintah berikut. Ganti YOUR_ENDPOINT_NAME dengan nama yang unik di wilayah Azure. Untuk informasi selengkapnya tentang aturan penamaan, lihat batas titik akhir.

Untuk Linux, jalankan perintah ini:

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Mengonfigurasi titik akhir

Cuplikan berikut memperlihatkan file endpoints/online/managed/sample/endpoint.yml:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

Referensi untuk format YAML titik akhir dijelaskan dalam tabel berikut. Untuk mempelajari cara menentukan atribut ini, lihat referensi YAML titik akhir online. Untuk informasi tentang batas yang terkait dengan titik akhir terkelola, lihat batasan untuk titik akhir online.

Kunci Deskripsi
$schema (Optional) Skema YAML. Untuk melihat semua opsi yang tersedia dalam file YAML, Anda dapat melihat skema dalam cuplikan kode sebelumnya di browser.
name Nama titik akhir.
auth_mode Gunakan key untuk autentikasi berbasis kunci.
Gunakan aml_token untuk autentikasi berbasis token Azure Machine Learning.
Gunakan aad_token untuk autentikasi berbasis token Microsoft Entra (pratinjau).
Untuk informasi selengkapnya tentang mengautentikasi, lihat Mengautentikasi klien untuk titik akhir online.

Menentukan penyebaran

Penyebaran adalah kumpulan sumber daya yang diperlukan untuk menghosting model yang melakukan inferensi aktual. Untuk contoh ini, Anda menyebarkan model scikit-learn yang melakukan regresi dan menggunakan skrip penilaian score.py untuk menjalankan model berdasarkan permintaan input tertentu.

Untuk mempelajari atribut utama penyebaran, lihat Penyebaran online.

Mengonfigurasi penyebaran

Konfigurasi penyebaran Anda menggunakan lokasi model yang ingin Anda sebarkan.

Cuplikan berikut menunjukkan file titik akhir/online/terkelola/sampel/blue-deployment.yml , dengan semua input yang diperlukan untuk mengonfigurasi penyebaran:

blue-deployment.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

File blue-deployment.yml menentukan atribut penyebaran berikut:

  • model - menentukan properti model sebaris, menggunakan path (tempat mengunggah file). CLI secara otomatis mengunggah file model dan mendaftarkan model dengan nama yang dibuat secara otomatis.
  • environment - menggunakan definisi sebaris yang mencakup tempat untuk mengunggah file, CLI secara otomatis mengunggah conda.yaml file dan mendaftarkan lingkungan. Kemudian, untuk membangun lingkungan, penyebaran menggunakan image (dalam contoh ini, itu mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) untuk gambar dasar, dan conda_file dependensi diinstal di atas gambar dasar.
  • code_configuration - selama penyebaran, file lokal seperti sumber Python untuk model penilaian, diunggah dari lingkungan pengembangan.

Untuk informasi selengkapnya tentang skema YAML, lihat referensi YAML titik akhir online.

Catatan

Untuk menggunakan titik akhir Kubernetes alih-alih titik akhir online terkelola sebagai target komputasi:

  1. Buat dan lampirkan kluster AKS sebagai target komputasi ke ruang kerja Azure Machine Learning menggunakan Azure Machine Learning studio.
  2. Gunakan YAML titik akhir untuk menargetkan Kubernetes, bukan YAML titik akhir terkelola. Anda perlu mengedit YAML untuk mengubah nilai compute menjadi nama target komputasi terdaftar Anda. Anda dapat menggunakan deployment.yaml ini yang memiliki properti tambahan yang berlaku untuk penyebaran Kubernetes.

Semua perintah yang digunakan dalam artikel ini untuk titik akhir online terkelola juga berlaku untuk titik akhir Kubernetes, kecuali untuk kemampuan berikut yang tidak berlaku untuk titik akhir Kube:

Memahami skrip penilaian

Tip

Format skrip penilaian untuk titik akhir online terkelola adalah format yang sama yang digunakan dalam CLI versi sebelumnya dan di Python SDK.

Skrip penilaian yang ditentukan harus code_configuration.scoring_script memiliki init() fungsi dan run() fungsi.

Contoh ini menggunakan file score.py: score.py

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

Fungsi init() ini dipanggil saat kontainer diinisialisasi/dimulai. Inisialisasi ini biasanya terjadi tak lama setelah penyebaran dibuat atau diperbarui. Fungsi ini init adalah tempat untuk menulis logika untuk operasi inisialisasi global seperti penembolokan model dalam memori (seperti yang ditunjukkan dalam file score.py ini).

Fungsi run() ini dipanggil setiap kali titik akhir dipanggil, dan melakukan penilaian dan prediksi aktual. Dalam file score.py ini, run() fungsi mengekstrak data dari input JSON, memanggil metode model predict() scikit-learn, lalu mengembalikan hasil prediksi.

Menyebarkan dan men-debug secara lokal dengan menggunakan titik akhir lokal

Kami sangat menyarankan Agar Anda menguji-menjalankan titik akhir Anda secara lokal untuk memvalidasi dan men-debug kode dan konfigurasi Anda sebelum Anda menyebarkan ke Azure. Azure CLI dan Python SDK mendukung titik akhir dan penyebaran lokal, sementara azure Pembelajaran Mesin studio dan templat ARM tidak.

Untuk menyebarkan secara lokal, Docker Engine harus diinstal dan berjalan. Mesin Docker biasanya dimulai ketika komputer dimulai. Jika tidak, Anda dapat memecahkan masalah Docker Engine.

Tip

Anda dapat menggunakan paket Python server HTTP inferensi Azure Pembelajaran Mesin untuk men-debug skrip penilaian Anda secara lokal tanpa Docker Engine. Penelusuran kesalahan dengan server inferensi membantu Anda men-debug skrip penilaian sebelum menyebarkan ke titik akhir lokal sehingga Anda dapat men-debug tanpa terpengaruh oleh konfigurasi kontainer penyebaran.

Untuk informasi selengkapnya tentang penelusuran kesalahan titik akhir online secara lokal sebelum menyebarkan ke Azure, lihat Penelusuran kesalahan titik akhir online.

Menyebarkan model secara lokal

Pertama-tama buat titik akhir. Secara opsional, untuk titik akhir lokal, Anda dapat melewati langkah ini dan langsung membuat penyebaran (langkah berikutnya), yang pada gilirannya akan membuat metadata yang diperlukan. Menyebarkan model secara lokal berguna untuk tujuan pengembangan dan pengujian.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

Sekarang, buat penyebaran bernama blue di bagian titik akhir.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

Bendera --local mengarahkan CLI untuk menyebarkan titik akhir di lingkungan Docker.

Tip

Gunakan Visual Studio Code untuk menguji dan mendebug titik akhir Anda secara lokal. Untuk informasi selengkapnya, lihat mendebug titik akhir online secara lokal di Visual Studio Code.

Verifikasi bahwa penyebaran lokal berhasil

Periksa status penyebaran untuk melihat apakah model disebarkan tanpa kesalahan:

az ml online-endpoint show -n $ENDPOINT_NAME --local

Output harus serupa dengan JSON berikut. provisioning_state adalah Succeeded.

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

Tabel berikut berisi peluang nilai untuk provisioning_state:

Nilai Deskripsi
Membuat Sumber daya sedang dibuat.
Memperbarui Sumber daya sedang diperbarui.
Menghapus Sumber daya sedang dihapus.
Berhasil Operasi buat/perbarui berhasil.
Gagal Operasi buat/perbarui/hapus gagal.

Panggil titik akhir lokal untuk menilai data dengan model Anda

Panggil titik akhir untuk menilai model dengan menggunakan invoke perintah dan meneruskan parameter kueri yang disimpan dalam file JSON:

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

Jika Anda ingin menggunakan klien REST (seperti curl), Anda harus memiliki URI penilaian. Untuk mendapatkan penilaian URI, jalankanaz ml online-endpoint show --local -n $ENDPOINT_NAME. Dalam data yang dikembalikan, temukan atribut scoring_uri.

Meninjau log output dari operasi panggil

Dalam contoh file score.py, metode run() mencatat output tertentu ke konsol.

Anda dapat melihat output ini dengan menggunakan get-logs perintah :

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Menyebarkan titik akhir online Anda ke Azure

Selanjutnya, sebarkan titik akhir online Anda ke Azure. Sebagai praktik terbaik untuk produksi, kami sarankan Anda mendaftarkan model dan lingkungan yang akan Anda gunakan dalam penyebaran Anda.

Mendaftarkan model dan lingkungan Anda

Kami menyarankan agar Anda mendaftarkan model dan lingkungan sebelum penyebaran ke Azure sehingga Anda dapat menentukan nama dan versi terdaftar mereka selama penyebaran. Mendaftarkan aset memungkinkan Anda menggunakannya kembali tanpa perlu mengunggahnya setiap kali Anda membuat penyebaran, sehingga meningkatkan reproduksi dan keterlacakan.

Catatan

Tidak seperti penyebaran ke Azure, penyebaran lokal tidak mendukung penggunaan model dan lingkungan terdaftar. Sebaliknya, penyebaran lokal menggunakan file model lokal dan menggunakan lingkungan hanya dengan file lokal. Untuk penyebaran ke Azure, Anda dapat menggunakan aset lokal atau terdaftar (model dan lingkungan). Di bagian artikel ini, penyebaran ke Azure menggunakan aset terdaftar, tetapi Anda memiliki opsi untuk menggunakan aset lokal sebagai gantinya. Untuk contoh konfigurasi penyebaran yang mengunggah file lokal yang akan digunakan untuk penyebaran lokal, lihat Mengonfigurasi penyebaran.

Untuk mendaftarkan model dan lingkungan, gunakan formulir model: azureml:my-model:1 atau environment: azureml:my-env:1. Untuk pendaftaran, Anda dapat mengekstrak definisi YAML dari model dan environment ke file YAML terpisah dan menggunakan perintah az ml model create dan az ml environment create. Untuk mempelajari perintah ini lebih lanjut, jalankan az ml model create -h dan az ml environment create -h.

  1. Buat definisi YAML untuk model:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. Daftarkan model:

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. Buat definisi YAML untuk lingkungan:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. Daftarkan lingkungan:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

Untuk informasi selengkapnya tentang mendaftarkan model Anda sebagai aset, lihat Mendaftarkan model Anda sebagai aset di Pembelajaran Mesin dengan menggunakan CLI. Untuk informasi selengkapnya tentang membuat lingkungan, lihat Mengelola lingkungan Azure Pembelajaran Mesin dengan CLI & SDK (v2).

Mengonfigurasi penyebaran yang menggunakan aset terdaftar

Konfigurasi penyebaran Anda menggunakan model terdaftar yang ingin Anda sebarkan dan lingkungan terdaftar Anda.

Gunakan aset terdaftar (model dan lingkungan) dalam definisi penyebaran Anda. Cuplikan berikut menunjukkan endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml file, dengan semua input yang diperlukan untuk mengonfigurasi penyebaran:

blue-deployment-with-registered-assets.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

Menggunakan jenis dan gambar instans CPU dan GPU yang berbeda

Anda dapat menentukan jenis instans CPU atau GPU dan gambar dalam definisi penyebaran Anda untuk penyebaran lokal dan penyebaran ke Azure.

Definisi penyebaran Anda dalam file blue-deployment-with-registered-assets.yml menggunakan instans jenis Standard_DS3_v2 tujuan umum dan gambar mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestDocker non-GPU . Untuk komputasi GPU, pilih SKU jenis komputasi GPU dan gambar Docker GPU.

Untuk tipe instans tujuan umum dan GPU yang didukung, lihat SKU VM yang didukung titik akhir online terkelola. Untuk daftar gambar dasar CPU dan GPU Azure Machine Learning, lihat gambar dasar Azure Machine Learning.

Catatan

Untuk menggunakan Kubernetes, alih-alih titik akhir terkelola, sebagai target komputasi, lihat Pengantar target komputasi Kubernetes.

Selanjutnya, sebarkan titik akhir online Anda ke Azure.

Sebarkan ke Azure

  1. Buat titik akhir di cloud Azure.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Buat penyebaran bernama blue di bawah titik akhir.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    Pembuatan penyebaran dapat memakan waktu hingga 15 menit, tergantung pada apakah lingkungan atau gambar yang mendasar sedang dibangun untuk pertama kalinya. Penyebaran berikutnya yang menggunakan lingkungan yang sama diproses lebih cepat.

    Tip

    • Jika Anda lebih suka tidak memblokir konsol CLI, Anda dapat menambahkan bendera --no-wait ke perintah . Namun, opsi ini akan menghentikan tampilan interaktif status penyebaran.

    Penting

    Bendera --all-traffic dalam kode az ml online-deployment create yang digunakan untuk membuat penyebaran mengalokasikan 100% lalu lintas titik akhir ke penyebaran biru yang baru dibuat. Meskipun ini berguna untuk tujuan pengembangan dan pengujian, untuk produksi, Anda mungkin ingin merutekan lalu lintas ke penyebaran baru melalui perintah eksplisit. Contohnya,az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Untuk men-debug kesalahan dalam penyebaran Anda, lihat Pemecahan masalah penyebaran titik akhir online.

Memeriksa status titik akhir

  1. show Gunakan perintah untuk menampilkan informasi di provisioning_state untuk titik akhir dan penyebaran:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Cantumkan semua titik akhir di ruang kerja dalam format tabel dengan menggunakan list perintah :

    az ml online-endpoint list --output table
    

Periksa status penyebaran online

Periksa log untuk melihat apakah model disebarkan tanpa kesalahan.

  1. Untuk melihat output log dari kontainer, gunakan perintah CLI berikut:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    Secara default, log ditarik dari kontainer server inferensi. Untuk melihat log dari kontainer penginisialisasi penyimpanan, tambahkan --container storage-initializer bendera. Untuk informasi selengkapnya tentang log penyebaran, lihat Mendapatkan log kontainer.

Panggil titik akhir lokal untuk menilai data dengan model Anda

  1. invoke Gunakan perintah atau klien REST pilihan Anda untuk memanggil titik akhir dan menilai beberapa data:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Dapatkan kunci yang digunakan untuk mengautentikasi ke titik akhir:

    Tip

    Anda dapat mengontrol prinsip keamanan Microsoft Entra mana yang bisa mendapatkan kunci autentikasi dengan menetapkannya ke peran kustom yang memungkinkan Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action dan Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Untuk informasi selengkapnya tentang mengelola otorisasi ke ruang kerja, lihat Mengelola akses ke ruang kerja Azure Pembelajaran Mesin.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Gunakan curl untuk menilai data.

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    Perhatikan bahwa Anda menggunakan show perintah dan get-credentials untuk mendapatkan kredensial autentikasi. Perhatikan juga bahwa Anda menggunakan --query bendera untuk hanya memfilter atribut yang diperlukan. Untuk mempelajari selengkapnya tentang --query bendera, lihat Kueri output perintah Azure CLI.

  4. Untuk melihat log pemanggilan, jalankan get-logs lagi.

[Opsional] Perbarui penyebaran

Jika Anda ingin memperbarui kode, model, atau lingkungan, perbarui file YAML, lalu jalankan perintah az ml online-endpoint update.

Catatan

Jika Anda memperbarui jumlah instans (untuk menskalakan penyebaran Anda) bersama dengan pengaturan model lain (seperti kode, model, atau lingkungan) dalam satu update perintah, operasi penskalaan akan dilakukan terlebih dahulu, maka pembaruan lainnya akan diterapkan. Ini adalah praktik yang baik untuk melakukan operasi ini secara terpisah di lingkungan produksi.

Untuk memahami cara kerja update:

  1. Buka file online/model-1/onlinescoring/score.py.

  2. Ubah baris terakhir dari fungsi init(): setelah logging.info("Init complete"), tambahkan logging.info("Updated successfully").

  3. Simpan file.

  4. Jalankan perintah ini:

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    Catatan

    Memperbarui dengan menggunakan YAML adalah deklaratif. Artinya, perubahan dalam YAML akan tercermin dalam sumber daya Azure Resource Manager yang mendasarinya (titik akhir & penyebaran). Pendekatan deklaratif memudahkan GitOps: Semua perubahan pada titik akhir/penyebaran (bahkan instance_count) melalui YAML.

    Tip

    • Anda dapat menggunakan parameter pembaruan generik, seperti --set parameter , dengan perintah CLI update untuk mengambil alih atribut di YAML Anda atau untuk mengatur atribut tertentu tanpa meneruskannya dalam file YAML. Penggunaan --set untuk atribut tunggal sangat berguna dalam skenario pengembangan/pengujian. Misalnya, untuk meningkatkan skala nilai instance_count untuk penyebaran pertama, Anda dapat menggunakan bendera --set instance_count=2. Namun, karena YAML tidak diperbarui, teknik ini tidak memudahkan GitOps.
    • Menentukan file YAML TIDAK wajib. Misalnya, jika Anda ingin menguji pengaturan konkurensi yang berbeda untuk penyebaran tertentu, Anda dapat mencoba sesuatu seperti az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Ini akan mempertahankan semua konfigurasi yang ada tetapi hanya memperbarui parameter yang ditentukan.
  5. Karena Anda memodifikasi init() fungsi, yang berjalan ketika titik akhir dibuat atau diperbarui, pesan Updated successfully akan berada di log. Ambil URL dengan menjalankan:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Perintah update juga berfungsi dengan penyebaran lokal. Gunakan perintah az ml online-deployment update yang sama dengan bendera --local.

Catatan

Pembaruan untuk penyebaran di bagian ini adalah contoh pembaruan bergulir di tempat.

  • Untuk titik akhir online terkelola, penyebaran diperbarui ke konfigurasi baru dengan simpul 20% pada satu waktu. Artinya, jika penyebaran memiliki 10 simpul, 2 simpul sekali waktu diperbarui.
  • Untuk titik akhir online Kubernetes, sistem secara berulang membuat instans penyebaran baru dengan konfigurasi baru dan menghapus yang lama.
  • Untuk penggunaan produksi, Anda harus mempertimbangkan penyebaran biru-hijau, yang menawarkan alternatif yang lebih aman untuk memperbarui layanan web.

(Opsional) Konfigurasikan penskalaan otomatis

Skala otomatis secara otomatis menjalankan jumlah sumber daya yang tepat untuk menangani beban pada aplikasi Anda. Titik akhir online terkelola mendukung penskalaan otomatis melalui integrasi dengan fitur skala otomatis pemantauan Azure. Untuk mengonfigurasi penskalaan otomatis, lihat Cara menskalakan otomatis titik akhir online.

[Opsional] Pantau SLA menggunakan Azure Monitor

Untuk melihat metrik dan mengatur peringatan berdasarkan SLA Anda, selesaikan langkah-langkah yang dijelaskan di Memantau titik akhir online.

[Opsional] Integrasikan dengan Log Analytics

get-logs Perintah untuk CLI atau get_logs metode untuk SDK hanya menyediakan beberapa ratus baris log terakhir dari instans yang dipilih secara otomatis. Namun, Log Analytics menyediakan cara untuk menyimpan dan menganalisis log dalam waktu yang lama. Untuk informasi selengkapnya tentang menggunakan pengelogan, lihat Memantau titik akhir online.

Hapus titik akhir dan penyebaran

Hapus titik akhir dan semua penyebaran yang mendasarnya:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait