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 ditt eget Kubernetes-kluster
  • Är OK med att bara ha en enda replik av din tjänst, vilket kan påverka drifttiden

Information om kvot- och regionstillgänglighet för ACI finns i artikeln Kvoter och regionstillgänglighet för Azure Container Instances.

Viktigt

Vi rekommenderar starkt att du felsöker 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

Begränsningar

När din Azure Machine Learning-arbetsyta har konfigurerats med en privat slutpunkt stöds inte distribution till Azure Container Instances i ett virtuellt nätverk. Överväg i stället att använda en hanterad onlineslutpunkt med nätverksisolering.

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 krä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.

Anteckning

  • ACI är endast lämpligt för små modeller som är mindre än 1 GB.
  • Vi rekommenderar att du använder AKS med en nod för att dev-testa 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 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ägg 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 mappar 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 Description
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 webbtjänsten ska distribueras till. Om 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 Falskt
sslEnabled ssl_enabled Om du vill aktivera SSL för den här webbtjänsten. Standardvärdet är Falskt.
appInsightsEnabled enable_app_insights Om appinsights ska aktiveras för den här webbtjänsten. Standardvärdet är Falskt
sslCertificate ssl_cert_pem_file Certifikatfilen som behövs om SSL är aktiverat
sslKey ssl_key_pem_file Nyckelfilen som behövs om SSL är aktiverat
cname ssl_cname Cname för om SSL är aktiverat
dnsNameLabel dns_name_label Dns-namnetiketten för bedömningsslutpunkten. Om inget 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 distributionsreferensen för az ml-modellen .

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-arbetsyte-ID till alla underliggande ACI-resurser som skapas. Alla ACI-namn från samma arbetsyta har samma suffix. Azure Machine Learning-tjänstens namn skulle fortfarande vara samma kund som tillhandahålls "service_name" och alla användare som står inför Azure Machine Learning SDK-API:er behöver ingen ändring. Vi ger inga garantier för namnen på underliggande resurser som skapas.

Nästa steg