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

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:

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

  2. Temukan buku catatan yang dikloning di langkah 1, pilih atau buat Instans Komputasi untuk menjalankan buku catatan.

    Screenshot of the running local service on notebook

  3. Buku catatan menampilkan URL dan port yang dijalankan layanan. Contohnya, https://localhost:6789. Anda juga dapat menjalankan sel yang berisi print('Local service port: {}'.format(local_service.port)) untuk menampilkan port.

    Screenshot of the running local service port

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

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