Distribuera en modell till Azure Container Instances med CLI (v1)
Viktigt!
Den här artikeln visar hur du använder CLI och SDK v1 för att distribuera en modell. Den rekommenderade metoden för v2 finns i Distribuera och poängsätta en maskininlärningsmodell med hjälp av en onlineslutpunkt.
Lär dig hur du använder Azure Machine Learning för att distribuera en modell som en webbtjänst på Azure Container Instances (ACI). Använd Azure Container Instances om du:
- föredrar att inte hantera ett eget Kubernetes-kluster
- Är OK med att bara ha en enda replik av tjänsten, vilket kan påverka drifttiden
Information om kvot- och regionstillgänglighet för ACI finns i artikeln Kvoter och regiontillgänglighet för Azure Container Instances .
Viktigt!
Du bör felsöka lokalt innan du distribuerar till webbtjänsten. Mer information finns i Felsöka lokalt
Du kan också läsa Azure Machine Learning – Distribuera till lokal notebook
Förutsättningar
En Azure Machine Learning-arbetsyta. Mer information finns i Skapa en Azure Machine Learning-arbetsyta.
En maskininlärningsmodell som är registrerad på din arbetsyta. Om du inte har en registrerad modell kan du läsa Hur och var du distribuerar modeller.
Azure CLI-tillägget (v1) för Machine Learning-tjänsten, Azure Machine Learning Python SDK eller Azure Machine Learning Visual Studio Code-tillägget.
Viktigt!
Några av Azure CLI-kommandona i den här artikeln använder
azure-cli-ml
tillägget , eller v1, för Azure Machine Learning. Stödet för v1-tillägget upphör den 30 september 2025. Du kommer att kunna installera och använda v1-tillägget fram till det datumet.Vi rekommenderar att du övergår till
ml
tillägget , eller v2, före den 30 september 2025. Mer information om v2-tillägget finns i Azure ML CLI-tillägget och Python SDK v2.Python-kodfragmenten i den här artikeln förutsätter att följande variabler anges:
ws
– Ange till din arbetsyta.model
– Ange till din registrerade modell.inference_config
– Ange inferenskonfigurationen för modellen.
Mer information om hur du ställer in dessa variabler finns i Hur och var du distribuerar modeller.
CLI-kodfragmenten i den här artikeln förutsätter att du har skapat ett
inferenceconfig.json
dokument. Mer information om hur du skapar det här dokumentet finns i Hur och var du distribuerar modeller.
Begränsningar
Kommentar
- Det går inte att distribuera Azure Container Instances i ett virtuellt nätverk. Överväg i stället att använda hanterade onlineslutpunkter för nätverksisolering.
- För att säkerställa ett effektivt stöd är det viktigt att du anger de loggar som krävs för dina ACI-containrar. Utan dessa loggar kan teknisk support inte garanteras. Vi rekommenderar att du använder log analytics-verktyg genom att
enable_app_insights=True
ange i distributionskonfigurationen för att hantera och analysera dina ACI-containerloggar effektivt.
Distribuera till ACI
Om du vill distribuera en modell till Azure Container Instances skapar du en distributionskonfiguration som beskriver de beräkningsresurser som behövs. Till exempel antal kärnor och minne. Du behöver också en slutsatsdragningskonfiguration som beskriver den miljö som behövs för att vara värd för modellen och webbtjänsten. Mer information om hur du skapar inferenskonfigurationen finns i Hur och var du distribuerar modeller.
Kommentar
- ACI lämpar sig endast för små modeller som är mindre än 1 GB.
- Vi rekommenderar att du använder AKS med en nod för utveckling och testning av större modeller.
- Antalet modeller som ska distribueras är begränsat till 1 000 modeller per distribution (per container).
Med SDK
GÄLLER FÖR: Python SDK azureml v1
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)
Mer information om de klasser, metoder och parametrar som används i det här exemplet finns i följande referensdokument:
Använda Azure CLI
GÄLLER FÖR: Azure CLI ml-tillägget v1
Använd följande kommando för att distribuera med hjälp av CLI. Ersätt mymodel:1
med namnet och versionen av den registrerade modellen. Ersätt myservice
med namnet för att ge den här tjänsten:
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json
Posterna i deploymentconfig.json
dokumentet mappas till parametrarna för AciWebservice.deploy_configuration. I följande tabell beskrivs mappningen mellan entiteterna i JSON-dokumentet och parametrarna för metoden:
JSON-entitet | Metodparameter | beskrivning |
---|---|---|
computeType |
NA | Beräkningsmålet. För ACI måste värdet vara ACI . |
containerResourceRequirements |
NA | Container för cpu- och minnesentiteterna. |
cpu |
cpu_cores |
Antalet CPU-kärnor som ska allokeras. Standardvärden 0.1 |
memoryInGB |
memory_gb |
Mängden minne (i GB) som ska allokeras för den här webbtjänsten. Standard 0.5 |
location |
location |
Den Azure-region som den här webbtjänsten ska distribueras till. Om den inte anges används arbetsytans plats. Mer information om tillgängliga regioner finns här: ACI-regioner |
authEnabled |
auth_enabled |
Om du vill aktivera autentisering för den här webbtjänsten. Standardvärdet är False |
sslEnabled |
ssl_enabled |
Om du vill aktivera TLS för den här webbtjänsten. Standardvärdet är Falskt. |
appInsightsEnabled |
enable_app_insights |
Om du vill aktivera AppInsights för den här webbtjänsten. Standardvärdet är False |
sslCertificate |
ssl_cert_pem_file |
Certifikatfilen som behövs om TLS är aktiverat |
sslKey |
ssl_key_pem_file |
Nyckelfilen som behövs om TLS är aktiverat |
cname |
ssl_cname |
CNAME för om TLS är aktiverat |
dnsNameLabel |
dns_name_label |
Dns-namnetiketten för bedömningsslutpunkten. Om den inte anges genereras en unik dns-namnetikett för bedömningsslutpunkten. |
Följande JSON är ett exempel på distributionskonfiguration för användning med CLI:
{
"computeType": "aci",
"containerResourceRequirements":
{
"cpu": 0.5,
"memoryInGB": 1.0
},
"authEnabled": true,
"sslEnabled": false,
"appInsightsEnabled": false
}
Mer information finns i referensen för az ml model deploy .
Använda VS Code
Se hur du hanterar resurser i VS Code.
Viktigt!
Du behöver inte skapa en ACI-container för att testa i förväg. ACI-containrar skapas efter behov.
Viktigt!
Vi lägger till hash-arbetsytans ID till alla underliggande ACI-resurser som skapas. Alla ACI-namn från samma arbetsyta har samma suffix. Namnet på Azure Machine Learning-tjänsten skulle fortfarande vara samma kund som "service_name" och alla användarinriktade Azure Machine Learning SDK-API:er behöver ingen ändring. Vi ger inga garantier för namnen på de underliggande resurser som skapas.
Nästa steg
- Distribuera en modell med en anpassad Docker-avbildning
- Felsökning av distribution
- Uppdatera webbtjänsten
- Använda TLS för att skydda en webbtjänst via Azure Machine Learning
- Använda en ML-modell som distribuerats som en webbtjänst
- Övervaka dina Azure Machine Learning-modeller med Application Insights
- Samla in data för modeller i produktion