Menyebarkan model secara lokal
Pelajari cara menggunakan Azure Machine Learning untuk menyebarkan model sebagai layanan web di instans komputasi Azure Machine Learning Anda. Gunakan instans komputasi jika salah satu kondisi berikut ini benar:
- Anda perlu menyebarkan dan memvalidasi model Anda dengan cepat.
- Anda sedang menguji model yang sedang dikembangkan.
Tip
Menyebarkan model dari Jupyter Notebook pada instans komputasi, ke layanan web pada VM yang sama merupakan penyebaran lokal. Dalam kasus ini, komputer 'lokal' adalah instans komputasi.
Catatan
Azure Pembelajaran Mesin Endpoints (v2) memberikan pengalaman penyebaran yang lebih baik dan lebih sederhana. Titik akhir mendukung skenario inferensi real-time dan batch. Titik akhir menyediakan antarmuka terpadu untuk menjalankan dan mengelola penyebaran model di seluruh jenis komputasi. Lihat Apa itu titik akhir Azure Pembelajaran Mesin?.
Prasyarat
- Ruang kerja Azure Machine Learning dengan instans komputasi berjalan. Untuk informasi selengkapnya, lihat Membuat sumber daya untuk memulai.
Menyebarkan ke instans komputasi
Contoh buku catatan yang menunjukkan penyebaran lokal disertakan pada instans komputasi Anda. Gunakan langkah-langkah berikut untuk memuat buku catatan dan menyebarkan model sebagai layanan web di VM:
Dari studio Azure Machine Learning, pilih "Notebook", lalu pilih how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb pada "Buku catatan sampel". Kloning buku catatan ini ke folder pengguna Anda.
Temukan buku catatan yang dikloning di langkah 1, pilih atau buat Instans Komputasi untuk menjalankan buku catatan.
Buku catatan menampilkan URL dan port yang dijalankan layanan. Contohnya,
https://localhost:6789
. Anda juga dapat menjalankan sel yang berisiprint('Local service port: {}'.format(local_service.port))
untuk menampilkan port.Untuk menguji layanan dari instans komputasi, gunakan URL
https://localhost:<local_service.port>
. Untuk menguji dari klien jarak jauh, dapatkan URL publik layanan yang berjalan pada instans komputasi. URL publik dapat ditentukan menggunakan rumus berikut;- Notebook VM:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score
. - Instans komputasi:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score
.
Contohnya,
- Notebook VM:
https://vm-name-6789.northcentralus.notebooks.azureml.net/score
- Instans komputasi:
https://vm-name-6789.northcentralus.instances.azureml.net/score
- Notebook VM:
Menguji layanan
Untuk mengirimkan data sampel ke layanan yang sedang berjalan, gunakan kode berikut. Ganti nilai service_url
dengan URL dari langkah sebelumnya:
Catatan
Saat mengautentikasi ke penyebaran pada instans komputasi, autentikasi dibuat menggunakan ID Microsoft Entra. Panggilan ke interactive_auth.get_authentication_header()
dalam kode contoh mengautentikasi Anda menggunakan ID Microsoft Entra, dan mengembalikan header yang kemudian dapat digunakan untuk mengautentikasi ke layanan pada instans komputasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk sumber daya dan alur kerja Azure Machine Learning.
Saat mengautentikasi penyebaran pada Azure Kubernetes Service atau Azure Container Instances, metode autentikasi yang berbeda akan digunakan. Untuk informasi selengkapnya, lihat Mengonfigurasi autentikasi untuk model Komputer Azure yang disebarkan sebagai layanan web.
import requests
import json
from azureml.core.authentication import InteractiveLoginAuthentication
# Get a token to authenticate to the compute instance from remote
interactive_auth = InteractiveLoginAuthentication()
auth_header = interactive_auth.get_authentication_header()
# Create and submit a request using the auth header
headers = auth_header
# Add content type header
headers.update({'Content-Type':'application/json'})
# Sample data to send to the service
test_sample = json.dumps({'data': [
[1,2,3,4,5,6,7,8,9,10],
[10,9,8,7,6,5,4,3,2,1]
]})
test_sample = bytes(test_sample,encoding = 'utf8')
# Replace with the URL for your compute instance, as determined from the previous section
service_url = "https://vm-name-6789.northcentralus.notebooks.azureml.net/score"
# for a compute instance, the url would be https://vm-name-6789.northcentralus.instances.azureml.net/score
resp = requests.post(service_url, test_sample, headers=headers)
print("prediction:", resp.text)
Langkah berikutnya
- Cara menyebarkan model menggunakan gambar Docker kustom
- Pemecahan masalah penyebaran
- Menggunakan TLS untuk mengamankan layanan web melalui Azure Machine Learning
- Menggunakan model ML yang disebarkan sebagai layanan web
- Memantau model Azure Machine Learning Anda dengan Application Insights
- Mengumpulkan data untuk model dalam produksi