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 akan belajar menyebarkan model ke titik akhir online untuk digunakan dalam inferensi real time. Anda akan mulai dengan menyebarkan model di komputer lokal Anda untuk men-debug kesalahan apa pun. Kemudian, Anda akan menyebarkan dan menguji model di Azure. Anda juga akan belajar 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 Machine Learning?.
Titik akhir online terkelola membantu menyebarkan model ML 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 sebagai gantinya, lihat catatan dalam dokumen ini yang sejajar 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:
Azure CLI dan ekstensi
ml
ke Azure CLI. Untuk informasi lebih lanjut, lihat Memasang, menyiapkan, dan menggunakan CLI (v2).Penting
Contoh CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan shell Bash (atau kompatibel). Misalnya, dari sistem Linux atau Subsistem Windows untuk Linux.
Ruang kerja Azure Machine Learning. Jika Anda tidak memilikinya, gunakan langkah-langkah di Memasang, menyiapkan, dan menggunakan CLI (v2) 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 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 akan 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.
Alokasi kuota komputer virtual untuk penyebaran
Untuk titik akhir online terkelola, Azure Machine Learning mencadangkan 20% sumber daya komputasi Anda untuk melakukan peningkatan. Oleh karena itu, jika Anda meminta sejumlah instans tertentu dalam penyebaran, Anda harus memiliki kuota yang ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU
tersedia untuk menghindari kesalahan. Misalnya, jika Anda meminta 10 instans VM Standard_DS3_v2 (yang dilengkapi dengan 4 core) dalam penyebaran, Anda harus memiliki kuota untuk 48 core (12 instances * 4 cores
) yang tersedia. Untuk melihat peningkatan penggunaan dan permintaan kuota Anda, lihat Melihat penggunaan dan kuota Anda di portal Azure.
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 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 subdirektori endpoints/online/managed/sample/
.
Catatan
File konfigurasi YAML untuk titik akhir online Kubernetes berada di subdirektori endpoints/online/kubernetes/
.
Menentukan titik akhir
Untuk menentukan titik akhir, Anda perlu menentukan:
- Nama titik akhir: Nama titik akhir. Nama harus unik dalam wilayah Azure. Untuk informasi selengkapnya tentang aturan penamaan, lihat batas titik akhir online terkelola.
- Mode autentikasi: Metode autentikasi untuk titik akhir. Pilih antara autentikasi berbasis kunci dan autentikasi berbasis token Azure Machine Learning. Kunci tidak kedaluwarsa, tetapi token kedaluwarsa. Untuk informasi selengkapnya tentang mengautentikasi, lihat Mengautentikasi ke titik akhir online.
- Secara opsional, Anda dapat menambahkan deskripsi dan tag ke titik akhir Anda.
Mengatur nama titik akhir
Untuk mengatur nama titik akhir Anda, jalankan perintah berikut (ganti YOUR_ENDPOINT_NAME
dengan nama unik).
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 selengkapnya tentang batas terkait titik akhir terkelola, lihat Mengelola dan menammbah kuota sumber daya dengan Azure Machine Learning.
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. Untuk mendapatkan token terbaru, gunakan az ml online-endpoint get-credentials perintah . |
Menentukan penyebaran
Penyebaran adalah kumpulan sumber daya yang diperlukan untuk menghosting model yang melakukan inferensi aktual. Untuk menyebarkan model, Anda harus memiliki:
- File model (atau nama dan versi model yang sudah terdaftar di ruang kerja Anda). Dalam contoh, kami memiliki model scikit-learn yang melakukan regresi.
- Skrip penilaian, yaitu, kode yang menjalankan model pada permintaan input tertentu. Skrip penilaian menerima data yang dikirimkan ke layanan web yang disebarkan dan meneruskannya ke model. Skrip kemudian menjalankan model dan mengembalikan responsnya ke klien. Skrip penilaian khusus untuk model Anda dan harus memahami data yang diharapkan model sebagai input dan kembali sebagai output. Dalam contoh ini, kita memiliki file score.py .
- Lingkungan tempat model Anda berjalan. Lingkungan dapat menjadi gambar Docker dengan dependensi Conda atau Dockerfile.
- Pengaturan untuk menentukan jenis instans dan kapasitas penskalaan.
Tabel berikut ini menjelaskan atribut utama penyebaran:
Atribut | Deskripsi |
---|---|
Nama | Nama penyebaran. |
Nama titik akhir 2 | Nama titik akhir untuk membuat penyebaran di bawah. |
Model | Model yang digunakan untuk penyebaran. Nilai ini dapat berupa referensi ke model berversi yang ada di ruang kerja atau spesifikasi model sebaris. |
Jalur kode | Jalur ke direktori pada lingkungan pengembangan lokal yang berisi semua kode sumber Python untuk menilai model. Anda dapat menggunakan direktori dan paket bertumpuk. |
Skrip penskoran | Jalur relatif ke file penilaian di direktori kode sumber. Kode Python ini harus memiliki fungsi init() dan fungsi run() . Fungsi init() ini akan dipanggil setelah model dibuat atau diperbarui (Anda dapat menggunakannya untuk menyimpan model dalam memori, misalnya). Fungsi run() ini disebut pada setiap pemanggilan titik akhir untuk melakukan penilaian/prediksi aktual. |
Lingkungan | Lingkungan untuk menghosting model dan kode. Nilai ini dapat berupa referensi ke lingkungan versi yang ada di ruang kerja atau spesifikasi lingkungan inline. |
Jenis instans | Ukuran VM untuk digunakan untuk penyebaran. Untuk daftar ukuran yang didukung, lihat Daftar SKU titik akhir online terkelola. |
Jumlah instans | Jumlah instans yang digunakan untuk penyebaran. Mendasarkan nilai pada beban kerja yang Anda harapkan. Untuk ketersediaan tinggi, kami sarankan Anda menetapkan nilai ke setidaknya 3 . Kami memesan tambahan 20% untuk melakukan peningkatan. Untuk informasi selengkapnya, lihat kuota titik akhir online terkelola. |
Catatan
- Model dan gambar kontainer (seperti yang didefinisikan dalam Lingkungan) dapat dirujuk lagi kapan saja oleh penyebaran ketika instans di balik penyebaran melalui patch keamanan dan/atau operasi pemulihan lainnya. Jika Anda menggunakan model terdaftar atau gambar kontainer di Azure Container Registry untuk penyebaran dan menghapus model atau gambar kontainer, penyebaran yang mengandalkan aset ini dapat gagal saat pencitraan ulang terjadi. Jika Anda menghapus model atau gambar kontainer, pastikan penyebaran dependen dibuat ulang atau diperbarui dengan model atau gambar kontainer alternatif.
- Registri kontainer yang dimaksud lingkungan dapat bersifat privat hanya jika identitas titik akhir memiliki izin untuk mengaksesnya melalui autentikasi Azure Active Directory dan Azure RBAC. Untuk alasan yang sama, registri Docker privat selain Azure Container Registry tidak didukung.
Mengonfigurasi penyebaran
Cuplikan berikut menunjukkan file endpoints/online/managed/sample/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-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Catatan
Dalam file blue-deployment.yml , kami telah menentukan atribut penyebaran berikut:
model
- Dalam contoh ini, kami menentukan properti model sebaris menggunakanpath
. File model secara otomatis diunggah dan didaftarkan dengan nama yang dibuat secara otomatis.environment
- Dalam contoh ini, kita memiliki definisi sebaris yang menyertakanpath
. Kami akan menggunakanenvironment.docker.image
untuk gambar. Dependensiconda_file
akan dipasang di atas gambar.
Selama penyebaran, file lokal seperti sumber data Python untuk model penilaian, diunggah dari lingkungan pengembangan.
Untuk informasi selengkapnya tentang skema YAML, lihat referensi YAML titik akhir online.
Catatan
Untuk menggunakan Azure alih-alih titik akhir terkelola sebagai target komputasi:
- Buat dan lampirkan kluster AKS sebagai target komputasi ke ruang kerja Azure Machine Learning menggunakan Azure Machine Learning studio.
- Gunakan YAML titik akhir untuk menargetkan Kubernetes alih-alih YAML titik akhir terkelola. Anda harus mengedit YAML untuk mengubah nilai
target
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 (kecuali pemantauan SLA opsional dan integrasi Azure Log Analytics) dapat digunakan baik dengan titik akhir terkelola maupun dengan titik akhir Kubernetes.
Daftarkan model dan lingkungan Anda secara terpisah
Dalam contoh ini, kami menentukan path
(tempat untuk mengunggah file dari) sebaris. CLI secara otomatis mengunggah file dan mendaftarkan model dan lingkungan. Sebagai praktik terbaik untuk produksi, Anda harus mendaftarkan model dan lingkungan secara terpisah dan menentukan nama dan versi terdaftar dalam YAML. 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
.
Untuk informasi selengkapnya tentang mendaftarkan model Anda sebagai aset, lihat Mendaftarkan model Anda sebagai aset di Azure Machine Learning dengan menggunakan CLI. Untuk informasi selengkapnya tentang membuat lingkungan, lihat Mengelola lingkungan Azure Machine Learning dengan CLI & SDK (v2).
Menggunakan jenis dan gambar instans CPU dan GPU yang berbeda
Definisi sebelumnya dalam file blue-deployment.yml menggunakan instans jenis Standard_DS3_v2
tujuan umum dan gambar mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
Docker 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.
Menggunakan lebih dari satu model dalam penyebaran
Saat ini, Anda hanya dapat menentukan satu model per penyebaran dalam definisi penyebaran saat Anda menggunakan Azure CLI, Python SDK, atau alat klien lainnya.
Untuk menggunakan lebih dari satu model dalam penyebaran, daftarkan folder model yang berisi semua model sebagai file atau subdirektori. Dalam skrip penilaian Anda, gunakan variabel lingkungan AZUREML_MODEL_DIR
untuk mendapatkan jalur ke folder root model. Struktur direktori yang mendasar akan dipertahankan. Untuk contoh penyebaran beberapa model ke satu penyebaran, lihat Menyebarkan beberapa model ke satu penyebaran (contoh CLI) dan Menyebarkan beberapa model ke satu penyebaran (contoh SDK).
Tip
Jika Anda memiliki lebih dari 1500 file untuk didaftarkan, Anda dapat mempertimbangkan untuk mengompresi file atau subdirektori sebagai .tar.gz saat mendaftarkan model. Untuk menggunakan model, Anda dapat membongkar file atau subdirektori dalam fungsi init() dari skrip penilaian. Atau, ketika Anda mendaftarkan model, atur azureml.unpack
properti ke True
, yang akan memungkinkan uncompression otomatis. Dalam kedua kasus, uncompression terjadi sekali dalam tahap inisialisasi.
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.
Seperti disebutkan sebelumnya, skrip penilaian yang ditentukan di code_configuration.scoring_script
harus 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 kita lakukan dalam contoh ini).
Fungsi run()
ini dipanggil untuk setiap pemanggilan titik akhir, dan melakukan penilaian dan prediksi aktual. Dalam contoh ini, kita akan mengekstrak data dari input JSON, memanggil metode model predict()
scikit-learn, lalu mengembalikan hasilnya.
Sebarkan dan debug secara lokal menggunakan titik akhir lokal
Kami sangat menyarankan Agar Anda menguji titik akhir secara lokal dengan 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 studio Azure Machine Learning dan templat ARM tidak.
Untuk menyebarkan secara lokal, Docker Engine harus diinstal dan dijalankan. 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 Machine Learning 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.
Titik akhir lokal memiliki batasan berikut:
- Mereka tidak mendukung aturan lalu lintas, autentikasi, atau pengaturan pemeriksaan.
- Mereka hanya mendukung satu penyebaran per titik akhir.
- Mereka hanya mendukung file model lokal. Jika Anda ingin menguji model terdaftar, pertama-tama unduh menggunakan CLI atau SDK, lalu gunakan
path
dalam definisi penyebaran untuk merujuk ke folder induk.
Untuk informasi selengkapnya tentang penelusuran kesalahan titik akhir online secara lokal sebelum menyebarkan ke Azure, lihat Men-debug titik akhir online secara lokal di Visual Studio Code.
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 apakah penyebaran lokal berhasil
Periksa status untuk melihat apakah model tersebut 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
:
Provinsi | 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 telah gagal. |
Panggil titik akhir lokal untuk menilai data dengan model Anda
Panggil titik akhir untuk menilai model dengan menggunakan perintah yang mudah invoke
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
. Contoh perintah berbasis curl tersedia nanti di dokumen ini.
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.
Sebarkan ke Azure
Untuk membuat titik akhir di cloud, jalankan kode berikut:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Untuk membuat penyebaran bernama blue
di bagian titik akhir, jalankan kode berikut:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Penyebaran ini dapat memakan waktu hingga 15 menit, tergantung pada apakah lingkungan atau gambar yang mendasarinya dibuat untuk pertama kalinya atau tidak. Penyebaran berikutnya yang menggunakan lingkungan yang sama akan selesai diproses lebih cepat.
Tip
- Jika lebih suka untuk tidak memblokir konsol CLI, Anda dapat menambahkan bendera
--no-wait
ke perintah. Namun, tindakan ini akan menghentikan tampilan interaktif status penyebaran.
Penting
--all-traffic
Bendera di atas az ml online-deployment create
mengalokasikan 100% lalu lintas titik akhir ke penyebaran biru yang baru dibuat. Meskipun ini sangat membantu untuk tujuan pengembangan dan pengujian, untuk produksi, Anda mungkin ingin membuka lalu lintas ke penyebaran baru melalui perintah eksplisit. Contohnya,az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
.
Tip
- Gunakan Pemecahan masalah penyebaran titik akhir online untuk men-debug kesalahan.
Memeriksa status titik akhir
Perintah show
berisi informasi di provisioning_state
untuk titik akhir dan penyebaran:
az ml online-endpoint show -n $ENDPOINT_NAME
Anda dapat mencantumkan semua titik akhir di ruang kerja dalam format tabel dengan menggunakan perintah list
:
az ml online-endpoint list --output table
Memeriksa 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
Anda dapat menggunakan perintah invoke
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
Contoh berikut menunjukkan cara menggunakan kunci untuk mengautentikasi ke titik akhir:
Tip
Anda dapat mengontrol prinsipal keamanan Azure Active Directory mana yang bisa mendapatkan kunci autentikasi dengan menetapkan mereka ke peran khusus yang mengizinkan Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
dan Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
. Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Azure Machine Learning.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Selanjutnya, 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 kami menggunakan perintah show
dan get-credentials
untuk mendapatkan kredensial autentikasi. Selain itu perhatikan bahwa kami menggunakan bendera --query
untuk memfilter atribut ke hanya yang kami butuhkan. Untuk mempelajari selengkapnya tentang--query
, lihat Mengkueri output perintah Azure CLI.
Untuk melihat log pemanggilan, jalankan get-logs
lagi.
Untuk informasi tentang mengautentikasi menggunakan token, lihat Mengautentikasi ke titik akhir online.
[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
:
Buka file online/model-1/onlinescoring/score.py.
Ubah baris terakhir dari fungsi
init()
: setelahlogging.info("Init complete")
, tambahkanlogging.info("Updated successfully")
.Simpan file.
Jalankan perintah ini:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.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 CLIupdate
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 nilaiinstance_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.
- Anda dapat menggunakan parameter pembaruan generik, seperti
Karena Anda memodifikasi
init()
fungsi, yang berjalan ketika titik akhir dibuat atau diperbarui, pesanUpdated 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 sebelumnya untuk penyebaran 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 pada satu waktu akan diperbarui.
- Untuk titik akhir online Kubernetes, sistem akan 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 menjalankan jumlah sumber daya yang tepat untuk menangani beban pada aplikasi Anda secara otomatis. 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
Jika tidak ingin menggunakan penyebaran, Anda harus menghapusnya dengan menjalankan perintah berikut (ini akan menghapus titik akhir dan semua penyebaran yang mendasarinya):
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Langkah berikutnya
- Peluncuran yang aman untuk titik akhir online
- Menyebarkan model dengan REST
- Cara menskalakan otomatis titik akhir online terkelola
- Cara memantau titik akhir online terkelola
- Akses sumber daya Azure dari titik akhir online dengan identitas terkelola
- Mengatasi masalah penyebaran titik akhir online
- Aktifkan isolasi jaringan dengan titik akhir online terkelola
- Menampilkan biaya untuk titik akhir online terkelola Azure Machine Learning
- Mengelola dan meningkatkan kuota untuk sumber daya dengan Azure Machine Learning
- Gunakan titik akhir batch untuk penilaian batch