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
Un'area di lavoro di Azure Machine Learning. Per ulteriori informazioni, vedere Creare un'area di lavoro di Azure Machine Learning.
Un modello di Machine Learning registrato nell'area di lavoro. Se non si ha un modello registrato, vedere Come e dove distribuire i modelli.
L'estensione dell'interfaccia della riga di comando (v1) di Azure per il servizio Machine Learning, Azure Machine Learning Python SDK, o l'estensione Azure Machine Learning Visual Studio Code.
Importante
Alcuni comandi dell'interfaccia della riga di comando (CLI) di Azure in questo articolo usano l'estensione
azure-cli-ml
, o v1, per Azure Machine Learning. L'assistenza per l'estensione v1 terminerà il 30 settembre 2025. Sarà possibile installare e usare l'estensione v1 fino a tale data.Consigliamo di passare all'estensione
ml
, o v2, prima del 30 settembre 2025. Per ulteriori informazioni sull'estensione v2, vedere Estensione dell'interfaccia della riga di comando di Azure ML e Python SDK v2.I frammenti di codice Python in questo articolo presuppongono che siano impostate le variabili seguenti:
ws
- Impostare l'area di lavoro.model
- Impostare il modello registrato.inference_config
- Impostare la configurazione dell'inferenza per il modello.
Per ulteriori informazioni sull'impostazione di queste variabili, vedere Come e dove distribuire i modelli.
I frammenti di interfaccia della riga di comando (CLI) in questo articolo presuppongono che sia stato creato un documento
inferenceconfig.json
. Per ulteriori informazioni sulla creazione di questo documento, vedere Come e dove distribuire i modelli.
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
- Come distribuire un modello con un'immagine Docker personalizzata
- Risoluzione dei problemi di distribuzione
- Aggiornare il servizio Web
- Usare TLS per proteggere un servizio Web tramite Azure Machine Learning
- Usare un modello di Machine Learning distribuito come servizio Web
- Monitorare i modelli di Azure Machine Learning con Application Insights
- Raccogliere i dati per i modelli nell'ambiente di produzione