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
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 wdrażać modele.
Rozszerzenie interfejsu wiersza polecenia platformy Azure (wersja 1) dla usługi Machine Learning, zestaw SDK języka Python usługi Azure Machine Learning lub rozszerzenie usługi Azure Machine Learning Visual Studio Code.
Ważne
Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają
azure-cli-ml
rozszerzenia , lub v1 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 v2 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 w języku Python w tym artykule zakładają, że ustawiono następujące zmienne:
ws
— Ustaw wartość obszaru roboczego.model
— Ustaw wartość zarejestrowanego modelu.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
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
- 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 przy użyciu usługi Application Insights
- Zbieranie danych dla modeli w środowisku produkcyjnym