Een model implementeren in Azure Container Instances met CLI (v1)

Belangrijk

In dit artikel wordt beschreven hoe u de CLI en SDK v1 gebruikt om een model te implementeren. Zie Een machine learning-model implementeren en scoren met behulp van een online-eindpunt voor de aanbevolen aanpak voor v2.

Meer informatie over het gebruik van Azure Machine Learning om een model te implementeren als een webservice op Azure Container Instances (ACI). Gebruik Azure Container Instances als u:

  • liever niet uw eigen Kubernetes-cluster beheren
  • Kunt u slechts één replica van uw service gebruiken, wat van invloed kan zijn op de uptime

Zie het artikel Quota en beschikbaarheid van regio's voor Azure Container Instances voor meer informatie over de beschikbaarheid van quota en regio's voor ACI.

Belangrijk

Het wordt ten zeerste aangeraden om lokaal fouten op te sporen voordat u implementeert in de webservice. Zie Lokaal fouten opsporen voor meer informatie

U kunt ook verwijzen naar Azure Machine Learning: Deploy to Local Notebook (Implementeren naar lokale notebook)

Vereisten

Beperkingen

Wanneer uw Azure Machine Learning-werkruimte is geconfigureerd met een privé-eindpunt, wordt implementeren naar Azure Container Instances in een VNet niet ondersteund. Overweeg in plaats daarvan het gebruik van een beheerd online-eindpunt met netwerkisolatie.

Implementeren naar ACI

Als u een model wilt implementeren in Azure Container Instances, maakt u een implementatieconfiguratie waarin de benodigde rekenresources worden beschreven. Bijvoorbeeld het aantal kernen en geheugen. U hebt ook een deductieconfiguratie nodig, waarin de omgeving wordt beschreven die nodig is om het model en de webservice te hosten. Zie Modellen implementeren voor meer informatie over het maken van de deductieconfiguratie.

Notitie

  • ACI is alleen geschikt voor modellen die kleiner zijn dan 1 GB.
  • U wordt aangeraden AKS met één knooppunt te gebruiken om grotere modellen te ontwikkelen en te testen.
  • Het aantal modellen dat moet worden geïmplementeerd, is beperkt tot duizend modellen per implementatie (per container).

De SDK gebruiken

VAN TOEPASSING OP: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)

Zie de volgende referentiedocumenten voor meer informatie over de klassen, methoden en parameters die in dit voorbeeld worden gebruikt:

Met behulp van de Azure CLI

VAN TOEPASSING OP:Azure CLI ml-extensie v1

Als u wilt implementeren met behulp van de CLI, gebruikt u de volgende opdracht. Vervang door mymodel:1 de naam en versie van het geregistreerde model. Vervang door myservice de naam om deze service te geven:

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

De vermeldingen in de documenttoewijzing deploymentconfig.json voor de parameters voor AciWebservice.deploy_configuration. In de volgende tabel wordt de toewijzing tussen de entiteiten in het JSON-document en de parameters beschreven voor de methode:

JSON-entiteit Methodeparameter Beschrijving
computeType NA Het rekendoel. Voor ACI moet de waarde ACI zijn.
containerResourceRequirements NA Container voor de CPU en geheugenentiteiten.
  cpu cpu_cores Het aantal CPU-kernen om toe te wijzen. Standaard 0.1
  memoryInGB memory_gb De hoeveelheid geheugen in GB dat moet worden toegewezen voor deze webservice. Standaard 0.5
location location De Azure-regio om deze webservice in te implementeren. Als deze niet wordt opgegeven, wordt de werkruimtelocatie gebruikt. Meer informatie over beschikbare regio's vindt u hier: ACI-regio's
authEnabled auth_enabled Hiermee wordt aangegeven of verificatie moet worden ingeschakeld voor deze webservice. Standaard ingesteld op False.
sslEnabled ssl_enabled Hiermee wordt aangegeven of SSL moet worden ingeschakeld voor deze webservice. Standaard ingesteld op False.
appInsightsEnabled enable_app_insights Hiermee wordt aangegeven of AppInsights moet worden ingeschakeld voor deze webservice. Standaard ingesteld op False.
sslCertificate ssl_cert_pem_file Het certificaatbestand dat nodig is als SSL is ingeschakeld
sslKey ssl_key_pem_file Het sleutelbestand dat nodig is als SSL is ingeschakeld
cname ssl_cname De CNAME die nodig is als SSL is ingeschakeld
dnsNameLabel dns_name_label Het DNS-naamlabel voor het score-eindpunt. Als er geen naamlabel wordt opgegeven, wordt er een uniek DNS-naamlabel voor het score-eindpunt gegenereerd.

De volgende JSON is een voorbeeldimplementatie die gebruikt kan worden met de CLI:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

Zie de naslaginformatie az ml model deploy voor meer informatie.

VS Code gebruiken

Meer informatie over het beheren van resources in VS Code.

Belangrijk

U hoeft geen ACI-container te maken om van tevoren te testen. ACI-containers worden naar behoefte gemaakt.

Belangrijk

We voegen de gehashte werkruimte-id toe aan alle onderliggende ACI-resources die worden gemaakt. Alle ACI-namen uit dezelfde werkruimte hebben hetzelfde achtervoegsel. De naam van de Azure Machine Learning-service is nog steeds dezelfde klant die 'service_name' heeft opgegeven en alle gebruikers die de Azure Machine Learning SDK-API's gebruiken, hoeven niet te worden gewijzigd. Er worden geen garanties gegevens met betrekking tot de namen van onderliggende resources die worden gemaakt.

Volgende stappen