Udostępnij za pośrednictwem


Lokalne wdrażanie modelu

Dowiedz się, jak za pomocą usługi Azure Machine Learning wdrożyć model jako usługę internetową w wystąpieniu obliczeniowym usługi Azure Machine Learning. Użyj wystąpień obliczeniowych, jeśli spełniony jest jeden z następujących warunków:

  • Musisz szybko wdrożyć i zweryfikować model.
  • Testujesz model, który jest opracowywany.

Napiwek

Wdrażanie modelu z notesu Jupyter Notebook w wystąpieniu obliczeniowym w usłudze internetowej na tej samej maszynie wirtualnej jest wdrożeniem lokalnym. W takim przypadku komputer "lokalny" jest wystąpieniem obliczeniowym.

Uwaga

Punkty końcowe usługi Azure Machine Learning (wersja 2) zapewniają ulepszone, prostsze środowisko wdrażania. Punkty końcowe obsługują scenariusze wnioskowania w czasie rzeczywistym i wsadowego. Punkty końcowe zapewniają ujednolicony interfejs do wywoływania wdrożeń modeli i zarządzania nimi w różnych typach obliczeniowych. Zobacz Co to są punkty końcowe usługi Azure Machine Learning?.

Wymagania wstępne

Wdrażanie w wystąpieniach obliczeniowych

Przykładowy notes, który demonstruje wdrożenia lokalne, jest uwzględniony w wystąpieniu obliczeniowym. Wykonaj następujące kroki, aby załadować notes i wdrożyć model jako usługę internetową na maszynie wirtualnej:

  1. W usłudze Azure Machine Learning Studio wybierz pozycję "Notesy", a następnie wybierz pozycję how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb w obszarze "Przykładowe notesy". Sklonuj ten notes do folderu użytkownika.

  2. Znajdź notes sklonowany w kroku 1, wybierz lub utwórz wystąpienie obliczeniowe, aby uruchomić notes.

    Zrzut ekranu przedstawiający uruchomioną usługę lokalną w notesie

  3. W notesie zostanie wyświetlony adres URL i port, na którym działa usługa. Na przykład https://localhost:6789. Możesz również uruchomić komórkę zawierającą print('Local service port: {}'.format(local_service.port)) , aby wyświetlić port.

    Zrzut ekranu przedstawiający uruchomiony port usługi lokalnej

  4. Aby przetestować usługę z wystąpienia obliczeniowego, użyj https://localhost:<local_service.port> adresu URL. Aby przetestować z klienta zdalnego, uzyskaj publiczny adres URL usługi uruchomionej w wystąpieniu obliczeniowym. Publiczny adres URL można określić przy użyciu następującej formuły;

    • Maszyna wirtualna notesu: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score.
    • Wystąpienie obliczeniowe: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score.

    Na przykład:

    • Maszyna wirtualna notesu: https://vm-name-6789.northcentralus.notebooks.azureml.net/score
    • Wystąpienie obliczeniowe: https://vm-name-6789.northcentralus.instances.azureml.net/score

Testowanie usługi

Aby przesłać przykładowe dane do uruchomionej usługi, użyj następującego kodu. Zastąp wartość service_url adresem URL z poprzedniego kroku:

Uwaga

Podczas uwierzytelniania we wdrożeniu w wystąpieniu obliczeniowym uwierzytelnianie jest wykonywane przy użyciu identyfikatora Entra firmy Microsoft. Wywołanie metody interactive_auth.get_authentication_header() w przykładowym kodzie uwierzytelnia Użytkownika przy użyciu identyfikatora Entra firmy Microsoft i zwraca nagłówek, który następnie może służyć do uwierzytelniania w usłudze w wystąpieniu obliczeniowym. Aby uzyskać więcej informacji, zobacz Konfigurowanie uwierzytelniania dla zasobów i przepływów pracy usługi Azure Machine Learning.

Podczas uwierzytelniania we wdrożeniu w usłudze Azure Kubernetes Service lub Azure Container Instances jest używana inna metoda uwierzytelniania. Aby uzyskać więcej informacji, zobacz Konfigurowanie uwierzytelniania dla modeli maszyn platformy Azure wdrożonych jako usługi internetowe.

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)

Następne kroki