Wdrażanie modelu w usłudze 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 usługi 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 usługi Azure Container Instances .
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
Obszar roboczy usługi Azure Machine Learning. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Azure Machine Learning.
Model uczenia maszynowego zarejestrowany w obszarze roboczym. Jeśli nie masz zarejestrowanego modelu, zobacz Jak i gdzie wdrożyć modele.
Rozszerzenie interfejsu wiersza polecenia platformy Azure (wersja 1) dla usługi Machine Learning, zestawu SDK języka Python usługi Azure Machine Learning lub rozszerzenia programu Visual Studio Code usługi Azure Machine Learning.
Ważne
Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają
azure-cli-ml
rozszerzenia , lub w wersji 1 dla usługi Azure Machine Learning. Obsługa rozszerzenia w wersji 1 zakończy się 30 września 2025 r. Będzie można zainstalować rozszerzenie v1 i używać go do tej daty.Zalecamy przejście do
ml
rozszerzenia , lub w wersji 2 przed 30 września 2025 r. Aby uzyskać więcej informacji na temat rozszerzenia w wersji 2, zobacz Rozszerzenie interfejsu wiersza polecenia usługi Azure ML i zestaw Python SDK w wersji 2.Fragmenty kodu języka Python w tym artykule zakładają, że ustawiono następujące zmienne:
ws
- Ustaw na obszar roboczy.model
- Ustaw na zarejestrowany model.inference_config
— Ustaw na konfigurację wnioskowania dla modelu.
Aby uzyskać więcej informacji na temat ustawiania tych zmiennych, zobacz How and where to deploy models (Jak i gdzie wdrażać modele).
Fragmenty kodu interfejsu wiersza polecenia w tym artykule zakładają, że utworzono
inferenceconfig.json
dokument. Aby uzyskać więcej informacji na temat tworzenia tego dokumentu, zobacz How and where to deploy models (Jak i gdzie wdrażać modele).
Ograniczenia
Uwaga
- Wdrażanie usługi Azure Container Instances w sieci wirtualnej nie jest obsługiwane. Zamiast tego w przypadku izolacji sieci rozważ użycie zarządzanych punktów końcowych online.
- Aby zapewnić skuteczną pomoc techniczną, niezbędne jest dostarczenie niezbędnych dzienników dla kontenerów usługi ACI. Bez tych dzienników nie można zagwarantować pomocy technicznej. Zaleca się korzystanie z narzędzi usługi Log Analytics przez
enable_app_insights=True
określenie w konfiguracji wdrożenia w celu wydajnego zarządzania dziennikami kontenerów usługi ACI i analizowania ich.
Wdrażanie w usłudze ACI
Aby wdrożyć model w usłudze 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 interfejsu wiersza polecenia 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 dla 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 obiekt 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 internetowej. 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ści domyślne to False |
sslEnabled |
ssl_enabled |
Czy włączyć protokół TLS 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 sieci Web. Wartości domyślne to False |
sslCertificate |
ssl_cert_pem_file |
Plik certyfikatu wymagany w przypadku włączenia protokołu TLS |
sslKey |
ssl_key_pem_file |
Plik klucza wymagany w przypadku włączenia protokołu TLS |
cname |
ssl_cname |
CNAME dla, jeśli protokół TLS 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 to przykładowa konfiguracja 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 identyfikator obszaru roboczego skrótu do wszystkich utworzonych zasobów usługi ACI. Wszystkie nazwy ACI z tego samego obszaru roboczego będą miały ten sam sufiks. Nazwa usługi Azure Machine Learning nadal byłaby tym samym klientem, pod warunkiem "service_name", a wszyscy użytkownicy, którzy mają do czynienia z interfejsami API zestawu SDK usługi Azure Machine Learning, nie potrzebują żadnych zmian. Nie udzielamy żadnych gwarancji dotyczących nazw tworzonych zasobów bazowych.
Następne kroki
- Jak wdrożyć model przy użyciu niestandardowego obrazu platformy Docker
- Rozwiązywanie problemów z wdrażaniem
- Aktualizowanie usługi internetowej
- Zabezpieczanie usługi internetowej za pomocą usługi Azure Machine Learning przy użyciu protokołu TLS
- Korzystanie z modelu uczenia maszynowego wdrożonego jako usługa internetowa
- Monitorowanie modeli usługi Azure Machine Learning za pomocą usługi Application Insights
- Zbieranie danych dla modeli w środowisku produkcyjnym