Wdrażanie modelu w Azure Container Instances przy użyciu interfejsu wiersza polecenia (wersja 1)

Ważne

W tym artykule przedstawiono sposób wdrażania modelu przy użyciu interfejsu wiersza polecenia i zestawu SDK w wersji 1. Aby zapoznać się z zalecanym podejściem dla wersji 2, zobacz Wdrażanie i ocenianie modelu uczenia maszynowego przy użyciu punktu końcowego online.

Dowiedz się, jak za pomocą usługi Azure Machine Learning wdrożyć model jako usługę internetową w usłudze Azure Container Instances (ACI). Użyj Azure Container Instances, jeśli:

  • nie chcesz zarządzać własnym klastrem Kubernetes
  • Czy masz tylko jedną replikę usługi, co może mieć wpływ na czas pracy

Aby uzyskać informacje na temat limitu przydziału i dostępności regionu dla usługi ACI, zobacz limity przydziału i dostępność regionów dla Azure Container Instances artykule.

Ważne

Zdecydowanie zaleca się debugowanie lokalnie przed wdrożeniem w usłudze internetowej, aby uzyskać więcej informacji, zobacz Debugowanie lokalnie

Możesz również skorzystać z usługi Azure Machine Learning — Wdrażanie w notesie lokalnym

Wymagania wstępne

Ograniczenia

Gdy obszar roboczy usługi Azure Machine Learning jest skonfigurowany przy użyciu prywatnego punktu końcowego, wdrażanie w usłudze Azure Container Instances w sieci wirtualnej jest nieobsługiwane. Zamiast tego rozważ użycie zarządzanego punktu końcowego online z izolacją sieci.

Wdrażanie w usłudze ACI

Aby wdrożyć model w Azure Container Instances, utwórz konfigurację wdrożenia, która opisuje wymagane zasoby obliczeniowe. Na przykład liczba rdzeni i pamięci. Potrzebna jest również konfiguracja wnioskowania, która opisuje środowisko potrzebne do hostowania modelu i usługi internetowej. Aby uzyskać więcej informacji na temat tworzenia konfiguracji wnioskowania, zobacz How and where to deploy models (Jak i gdzie wdrażać modele).

Uwaga

  • Usługa ACI jest odpowiednia tylko dla małych modeli o rozmiarze poniżej 1 GB.
  • Zalecamy używanie usługi AKS z jednym węzłem do testowania większych modeli.
  • Liczba wdrażanych modeli jest ograniczona do 1000 modeli na wdrożenie (na kontener).

Używanie zestawu SDK

DOTYCZY:Zestaw SDK języka Python w wersji 1

from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model

deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)

Aby uzyskać więcej informacji na temat klas, metod i parametrów używanych w tym przykładzie, zobacz następujące dokumenty referencyjne:

Przy użyciu interfejsu wiersza polecenia platformy Azure

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 1

Aby wdrożyć przy użyciu interfejsu wiersza polecenia, użyj następującego polecenia. Zastąp mymodel:1 ciąg nazwą i wersją zarejestrowanego modelu. Zastąp myservice ciąg nazwą, aby nadać tej usłudze:

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

Wpisy w dokumencie deploymentconfig.json są mapować na parametry AciWebservice.deploy_configuration. W poniższej tabeli opisano mapowanie między jednostkami w dokumencie JSON i parametrami metody :

Jednostka JSON Parametr metody Opis
computeType NA Docelowy zasób obliczeniowy. W przypadku usługi ACI wartość musi mieć wartość ACI.
containerResourceRequirements NA Kontener dla jednostek procesora CPU i pamięci.
  cpu cpu_cores Liczba rdzeni procesora CPU do przydzielenia. Ustawienia domyślne 0.1
  memoryInGB memory_gb Ilość pamięci (w GB) do przydzielenia dla tej usługi sieci Web. Domyślny 0.5
location location Region świadczenia usługi Azure do wdrożenia tej usługi internetowej. Jeśli nie określono lokalizacji obszaru roboczego, zostanie użyta. Więcej szczegółów na temat dostępnych regionów można znaleźć tutaj: Regiony ACI
authEnabled auth_enabled Czy włączyć uwierzytelnianie dla tej usługi sieci Web. Wartość domyślna to Fałsz
sslEnabled ssl_enabled Czy włączyć protokół SSL dla tej usługi sieci Web. Wartość domyślna to False.
appInsightsEnabled enable_app_insights Czy włączyć usługę AppInsights dla tej usługi internetowej. Wartość domyślna to Fałsz
sslCertificate ssl_cert_pem_file Plik certyfikatu wymagany w przypadku włączenia protokołu SSL
sslKey ssl_key_pem_file Plik klucza wymagany w przypadku włączenia protokołu SSL
cname ssl_cname Nazwa cname dla, jeśli protokół SSL jest włączony
dnsNameLabel dns_name_label Etykieta nazwy DNS dla punktu końcowego oceniania. Jeśli nie określono unikatowej etykiety nazwy DNS, zostanie wygenerowana dla punktu końcowego oceniania.

Poniższy kod JSON jest przykładową konfiguracją wdrożenia do użycia z interfejsem wiersza polecenia:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

Aby uzyskać więcej informacji, zobacz dokumentację az ml model deploy .

Korzystanie z programu VS Code

Zobacz , jak zarządzać zasobami w programie VS Code.

Ważne

Nie musisz z wyprzedzeniem tworzyć kontenera ACI na potrzeby testowania. Kontenery ACI są tworzone według potrzeb.

Ważne

Dołączamy skrót identyfikatora obszaru roboczego do wszystkich tworzonych zasobów usługi ACI. Wszystkie nazwy usługi ACI z tego samego obszaru roboczego będą miały ten sam sufiks. Nazwa usługi Azure Machine Learning service nadal będzie taka sama jak "service_name", a interfejsy API zestawu AZURE Machine Learning SDK dla wszystkich użytkowników nie wymagają żadnych zmian. Nie udzielamy żadnych gwarancji dotyczących nazw tworzonych zasobów bazowych.

Następne kroki