Condividi tramite


Distribuire un modello a Istanze di Azure Container con l’interfaccia della riga di comando (CLI) (v1)

Importante

Questo articolo illustra come usare interfaccia della riga di comando (CLI) e SDK v1 per distribuire un modello. Per conoscere l'approccio consigliato per v2, vedere Distribuire e assegnare un punteggio a un modello di Machine Learning usando un endpoint online.

Informazioni su come usare Azure Machine Learning per distribuire un modello come servizio Web in Istanze di Azure Container (ACI). Usare Istanze di Azure Container se:

  • preferisce non gestire il proprio cluster Kubernetes
  • Se va bene avere una sola replica del servizio; ciò potrebbe influire sul tempo di attività

Per informazioni sulla disponibilità di quota e area per ACI, vedere l’articolo Quota e disponibilità dell'area per Istanze di Azure Container.

Importante

È consigliabile eseguire il debug in locale prima della distribuzione nel servizio Web. Per altre informazioni, vedere Eseguire il debug in locale

È anche possibile fare riferimento ad Azure Machine Learning - Eseguire la distribuzione a un notebook locale

Prerequisiti

Limiti

Nota

  • La distribuzione di Istanze di Azure Container in una rete virtuale non è supportata. Per l'isolamento della rete, prendere invece in considerazione l'uso di endpoint online gestiti.
  • Per garantire un supporto efficace, è essenziale fornire i log necessari per i contenitori ACI. Senza questi log, non è possibile garantire il supporto tecnico. È consigliabile usare gli strumenti di Log Analytics specificando enable_app_insights=True nella configurazione di distribuzione per gestire e analizzare in modo efficiente i log dei contenitori ACI.

Distribuire in ACI

Per distribuire un modello in Istanze di Azure Container, creare una configurazione di distribuzione che descriva le risorse di calcolo necessarie. Ad esempio, numero di core e memoria. È necessaria anche una configurazione di inferenza, che descriva l'ambiente necessario per ospitare il modello e il servizio Web. Per altre informazioni sulla creazione della configurazione dell'inferenza, vedere Come e dove distribuire i modelli.

Nota

  • Il servizio Istanze di Azure Container è adatto solo per i modelli più piccoli con dimensioni minori di 1 GB.
  • È consigliabile usare il servizio Azure Kubernetes a nodo singolo per lo sviluppo e il test di modelli più grandi.
  • Il numero di modelli da distribuire è limitato a 1.000 modelli per distribuzione (per contenitore).

Uso dell'SDK

SI APPLICA A: 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)

Per altre informazioni sulle classi, i metodi e i parametri usati in questo esempio, vedere i documenti di riferimento seguenti:

Con l'interfaccia della riga di comando di Azure

SI APPLICA A: Estensione ML dell'interfaccia della riga di comando di Azure v1

Per eseguire la distribuzione tramite l'interfaccia della riga di comando (CLI), usare il comando seguente. Sostituire mymodel:1 con il nome e la versione del modello registrato. Sostituire myservice con il nome per assegnare questo servizio:

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

Le voci del documento deploymentconfig.json vengono mappate ai parametri di AciWebservice.deploy_configuration. La tabella seguente descrive il mapping tra le entità nel documento JSON e i parametri per il metodo:

Entità JSON Parametro per il metodo Descrizione
computeType N/D La destinazione di calcolo. Per Istanze di Azure Container, il valore deve essere ACI.
containerResourceRequirements N/D Contenitore per le entità CPU e memoria.
  cpu cpu_cores Il numero di core di CPU da allocare. Il valore predefinito è 0.1
  memoryInGB memory_gb La quantità di memoria (in GB) da allocare per questo servizio Web. Il valore predefinito è 0.5
location location L'area di Azure in cui distribuire questo servizio Web. Se non specificata, verrà usata la località dell'area di lavoro. Altre informazioni sulle aree disponibili sono disponibili qui: Aree ACI
authEnabled auth_enabled Indica se abilitare o meno l'autenticazione per questo servizio Web. Il valore predefinito è False
sslEnabled ssl_enabled Indica se abilitare o meno TLS per questo servizio Web. Il valore predefinito è False.
appInsightsEnabled enable_app_insights Indica se abilitare o meno AppInsights per questo servizio Web. Il valore predefinito è False
sslCertificate ssl_cert_pem_file Il file cert necessario se TLS è abilitato
sslKey ssl_key_pem_file Il file della chiave necessario se TLS è abilitato
cname ssl_cname CNAME per se TLS è abilitato
dnsNameLabel dns_name_label L'etichetta del nome DNS per l'endpoint di assegnazione di punteggi. Se non specificata, per l'endpoint di assegnazione di punteggi verrà generata un'etichetta univoca del nome DNS.

Il codice JSON seguente è un esempio di configurazione della distribuzione da usare con l'interfaccia della riga di comando:

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

Per altre informazioni, vedere il riferimento alla distribuzione modello az ml.

Uso di VS Code

Vedere come gestire le risorse in VS Code.

Importante

Non è necessario creare un contenitore di Istanze Azure Container in anticipo. I contenitori di Istanze di Azure Container vengono creati in base alle esigenze.

Importante

Viene aggiunto l'ID dell'area di lavoro con hash a tutte le risorse ACI sottostanti create, tutti i nomi ACI della stessa area di lavoro avranno lo stesso suffisso. Il nome del servizio Azure Machine Learning sarà comunque lo stesso "service_name" fornito dal cliente e tutti gli utenti che utilizzano le API di Azure Machine Learning SDK non necessitano di alcuna modifica. Non vengono fornite garanzie sui nomi delle risorse sottostanti create.

Passaggi successivi