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 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 perbedaannya, lihat Titik akhir online terkelola vs. Titik akhir online Kubernetes.

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 terkelola mengurus penyajian, penskalaan, pengamanan, dan pemantauan model Anda. Bantuan ini membebaskan Anda dari kerumitan dan biaya pengaturan serta pengelolaan infrastruktur dasar.

Contoh utama dalam artikel 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)

  • Azure CLI dan ml ekstensi untuk Azure CLI, telah diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal dan menyiapkan CLI (v2).

  • Shell Bash atau shell yang kompatibel, misalnya, shell pada sistem Linux atau Subsistem Windows untuk Linux. Contoh Azure CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan jenis shell ini.

  • Ruang kerja Azure Machine Learning. Untuk instruksi membuat ruang kerja, lihat Menyiapkan.

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

  • (Opsional) Untuk menerapkan secara lokal, Anda harus memasang Docker Engine di komputer lokal Anda. Kami sangat merekomendasikan opsi ini, yang memudahkan untuk men-debug masalah.

  • Pastikan Anda memiliki cukup kuota komputer virtual (VM) yang dialokasikan untuk penyebaran. Azure Machine Learning mencadangkan 20% sumber daya komputasi milik Anda untuk proses peningkatan pada beberapa versi mesin virtual (VM). Misalnya, jika Anda meminta 10 instans dalam penyebaran, Anda harus memiliki kuota 12 untuk setiap jumlah inti untuk versi VM. Kegagalan untuk memperhitungkan sumber daya komputasi tambahan menghasilkan kesalahan. Beberapa versi VM 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 Machine Learning 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 kloning repositori azureml-examples, lalu masuk ke direktori repositori azureml-examples/cli.

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

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

Perintah dalam tutorial ini ada dalam file deploy-local-endpoint.sh dan deploy-managed-online-endpoint.sh di direktori cli . File konfigurasi YAML berada di subdirektori titik akhir/online/terkelola/sampel/ .

Catatan

File konfigurasi YAML untuk titik akhir online Kubernetes berada di subdirektori titik akhir/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.

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 Titik akhir online Azure Machine Learning dan titik akhir batch.

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 scikit-learn model yang melakukan regresi dan menggunakan skrip penilaian score.py untuk menjalankan model pada 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:

$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-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

File blue-deployment.yml menentukan atribut penyebaran berikut:

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

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 alih-alih 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 lain 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

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 dari repositori yang Anda kloning atau unduh sebelumnya:

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. Sistem ini melakukan penilaian dan prediksi sesungguhnya. 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 jalankan 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, tetapi studio Azure Machine Learning 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.

Anda dapat menggunakan paket Python server HTTP inferensi Azure Machine Learning untuk men-debug skrip penilaian Anda secara lokal tanpa Docker Engine. Penelusuran debug dengan server inferensi membantu Anda mempersiapkan skrip penilaian sebelum menyebarkan ke titik akhir lokal, sehingga Anda dapat melakukan debug tanpa terpengaruh oleh konfigurasi kontainer saat penyebaran.

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

Menyebarkan model secara lokal

Pertama, buat titik akhir. Secara opsional, untuk titik akhir lokal, Anda dapat melewati langkah ini. Anda dapat membuat penyebaran secara langsung (langkah berikutnya), yang pada gilirannya 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.

Petunjuk / Saran

Gunakan Visual Studio Code untuk menguji dan mendebug titik akhir Anda secara lokal. Untuk informasi selengkapnya, lihat Men-debug 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. Parameternya 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
Creating Sumber daya sedang dibuat.
Updating Sumber daya sedang diperbarui.
Deleting Sumber daya sedang dihapus.
Succeeded Operasi buat atau perbarui berhasil.
Failed Operasi buat, perbarui, atau 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 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. Setelah Anda mendaftarkan aset, Anda dapat menggunakannya kembali tanpa perlu mengunggahnya setiap kali membuat deployment. Praktik ini meningkatkan reproduksi dan keterlacakan.

Tidak seperti penyebaran ke Azure, penyebaran lokal tidak mendukung penggunaan model dan lingkungan terdaftar. Sebagai gantinya, penyebaran lokal memanfaatkan file model lokal dan lingkungan dengan file lokal saja.

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 di folder titik akhir/online/terkelola/sampel , 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. Beri nama file model.yml:

    $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 endpoints/online/managed/sample/model.yml
    
  3. Buat definisi YAML untuk lingkungan. Beri nama file environment.yml:

    $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 endpoints/online/managed/sample/environment.yml
    

Untuk informasi selengkapnya tentang cara mendaftarkan model Anda sebagai aset, lihat Mendaftarkan model dengan menggunakan Azure CLI atau Python SDK. Untuk informasi selengkapnya tentang membuat lingkungan, lihat Membuat lingkungan kustom.

Penting

Saat Anda menentukan lingkungan kustom untuk penyebaran Anda, pastikan paket azureml-inference-server-http disertakan dalam file conda. Paket ini sangat penting agar server inferensi berfungsi dengan baik. Jika Anda tidak terbiasa dengan cara membuat lingkungan kustom Anda sendiri, gunakan salah satu lingkungan yang dikumpulkan seperti minimal-py-inference (untuk model kustom yang tidak menggunakan mlflow) atau mlflow-py-inference (untuk model yang menggunakan mlflow). Anda dapat menemukan lingkungan yang telah dikurasi ini di tab Lingkungan pada instans Anda dari Azure Machine Learning Studio.

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 di bawah menunjukkan berkas endpoints/online/terkelola/sampel/blue-deployment-with-registered-assets.yml, dengan semua input yang diperlukan untuk konfigurasi penyebaran.

$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 tujuan umum Standard_DS3_v2 dan gambar Docker non-GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Untuk komputasi GPU, pilih versi jenis komputasi GPU dan gambar Docker GPU.

Untuk jenis instans tujuan umum dan GPU yang didukung, lihat Daftar SKU 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 pada 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.

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

    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. Menggunakan flag ini berguna untuk tujuan pengembangan dan pengujian, tetapi untuk produksi, Anda mungkin ingin mengalihkan lalu lintas ke deployment baru melalui perintah eksplisit. Misalnya, gunakan 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.

Periksa status titik akhir online

  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.

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:

    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 cara mengelola otorisasi ke ruang kerja, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

    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. Kemudian jalankan az ml online-endpoint update perintah .

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 dilakukan terlebih dahulu. Pembaruan lainnya diterapkan berikutnya. 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
    

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

    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. Pendekatan ini menyimpan semua konfigurasi yang ada tetapi hanya memperbarui parameter yang ditentukan.

  5. Karena Anda memodifikasi init() fungsi, yang berjalan saat titik akhir dibuat atau diperbarui, pesan Updated successfully muncul 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 20% node secara bersamaan. 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, pertimbangkan 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 penskalakan otomatis melalui integrasi dengan fitur skala otomatis Azure Monitor. Untuk mengonfigurasi autoscaling, lihat Titik akhir online skala otomatis.

[Opsional] Pantau SLA menggunakan Azure Monitor

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

[Opsional] Integrasikan dengan Log Analytics

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

Hapus titik akhir dan penyebaran

Gunakan perintah berikut untuk menghapus endpoint dan semua penyebaran terkaitnya.

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