Delen via


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 beoordelen met behulp van een online-eindpunt voor de aanbevolen aanpak voor v2.

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

  • liever niet uw eigen Kubernetes-cluster beheren
  • Is het goed dat u slechts één replica van uw service hebt, wat van invloed kan zijn op de uptime

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

Belangrijk

Het wordt ten zeerste aangeraden lokaal fouten op te sporen voordat u implementeert in de webservice. Zie Debug Lokaal 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 in Azure Container Instances in een virtueel netwerk 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 het geheugen. U hebt ook een deductieconfiguratie nodig, waarin de omgeving wordt beschreven die nodig is om het model en de webservice te hosten. Zie Hoe en waar u modellen kunt 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 gebruik van de Azure CLI

VAN TOEPASSING OP: Azure CLI ml-extensie v1

Gebruik de volgende opdracht om te implementeren met behulp van de CLI. Vervang door mymodel:1 de naam en versie van het geregistreerde model. Vervang myservice door 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 N.v.t. Het rekendoel. Voor ACI moet de waarde ACI zijn.
containerResourceRequirements N.v.t. 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 TLS 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 TLS is ingeschakeld
sslKey ssl_key_pem_file Het sleutelbestand dat nodig is als TLS is ingeschakeld
cname ssl_cname De CNAME voor als TLS 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 over az ml model deploy voor meer informatie.

VS Code gebruiken

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 een hash-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 gebruikersgerichte API's van de Azure Machine Learning SDK hoeven niet te worden gewijzigd. Er worden geen garanties gegevens met betrekking tot de namen van onderliggende resources die worden gemaakt.

Volgende stappen