Dela via


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

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