Condividi tramite


Distribuire un modello in Azure Container Instances con l'interfaccia della riga di comando (v1)

Importante

Alcuni dei comandi di Azure CLI in questo articolo usano l'estensione azure-cli-ml o v1 per Azure Machine Learning. Il supporto per l'interfaccia della riga di comando v1 è terminato il 30 settembre 2025. Microsoft non fornirà più supporto tecnico o aggiornamenti per questo servizio. I flussi di lavoro esistenti che usano l'interfaccia della riga di comando v1 continueranno a funzionare dopo la data di fine del supporto. Tuttavia, potrebbero essere esposti a rischi per la sicurezza o a modifiche di rilievo nel caso di cambiamenti dell'architettura del prodotto.

È consigliabile passare all'estensione ml, o v2, il prima possibile. Per altre informazioni sull'estensione v2, vedere Azure Machine Learning estensione dell'interfaccia della riga di comando e Python SDK v2.

Importante

Questo articolo fornisce informazioni sull'uso di Azure Machine Learning SDK v1. SDK v1 è deprecato a partire dal 31 marzo 2025. Il supporto per questo terminerà il 30 giugno 2026. È possibile installare e usare l'SDK v1 fino a tale data. I flussi di lavoro esistenti che usano SDK v1 continueranno a funzionare dopo la data di fine del supporto. Tuttavia, potrebbero essere esposti a rischi per la sicurezza o a modifiche di rilievo nel caso di cambiamenti dell'architettura del prodotto.

È consigliabile passare all'SDK v2 prima del 30 giugno 2026. Per altre informazioni sull'SDK v2, vedere Cosa è Azure Machine Learning CLI and Python SDK v2? e il riferimento dell'SDK v2.

Importante

Questo articolo illustra come usare interfaccia della riga di comando e SDK v1 per distribuire un modello. Per 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 Azure Container Instances (ACI). Usa Azure Container Instances se:

  • si preferisce non gestire il proprio cluster Kubernetes
  • sono in grado di accettare la presenza di una sola replica del servizio, che potrebbe influire sulla disponibilità operativa

Per informazioni sulla disponibilità di quote e aree per ACI, vedere l'articolo Quote e disponibilità dell'area per Istanze di Azure Container.

Importante

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

È anche possibile fare riferimento a Azure Machine Learning - Deploy in Notebook locale.

Prerequisiti

Limitazioni

Nota

  • La distribuzione di Azure Container Instances in una rete virtuale non è supportata. Per l'isolamento della rete, considerare invece l'uso di endpoint online gestiti.
  • Per garantire un supporto efficace, è necessario fornire i log necessari per i contenitori ACI. Senza questi log, il supporto tecnico non può essere garantito. 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 Azure Container Instances, creare una configurazione di deployment che descrive le risorse di calcolo necessarie, ad esempio il 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

  • ACI è adatto solo per modelli piccoli con dimensioni minori di 1 GB.
  • Utilizza AKS a nodo singolo per lo sviluppo e i test di modelli più grandi.
  • È possibile distribuire fino a 1.000 modelli per distribuzione (per contenitore).

Uso dell'SDK

SI APPLICA A:Azure Machine Learning SDK v1 per Python

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 gli articoli di riferimento seguenti:

Uso del Azure CLI

APPLICABILE A:Azure CLI ml extension v1

Per eseguire la distribuzione tramite l'interfaccia della riga di comando, eseguire 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 nel file deploymentconfig.json vengono mappate ai parametri per AciWebservice.deploy_configuration. La tabella seguente descrive il mapping tra le entità nel file JSON e i parametri per il metodo :

Entità JSON Parametro per il metodo Descrizione
computeType ND La destinazione di calcolo. Per Istanze di Azure Container, il valore deve essere ACI.
containerResourceRequirements ND Contenitore per le entità CPU e memoria.
  cpu cpu_cores Il numero di core di CPU da allocare. Impostazione predefinita: 0.1
  memoryInGB memory_gb La quantità di memoria (in GB) da allocare per questo servizio Web. Impostazione predefinita: 0.5
location location Area Azure in cui distribuire il servizio Web. Se non si specifica questo valore, viene usata la posizione dell'area di lavoro. Per altri dettagli sulle aree disponibili, vedere Aree ACI.
authEnabled auth_enabled Indica se abilitare l'autenticazione per questo servizio Web. L'impostazione predefinita è False
sslEnabled ssl_enabled Indica se abilitare TLS per questo servizio Web. L'impostazione predefinita è False.
appInsightsEnabled enable_app_insights Indica se abilitare AppInsights per questo servizio Web. L'impostazione predefinita è 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 Il CNAME se TLS è abilitato
dnsNameLabel dns_name_label Etichetta del nome DNS per l'endpoint di assegnazione dei punteggi. Se non si specifica questo valore, viene generata un'etichetta del nome DNS univoco per l'endpoint di assegnazione dei punteggi.

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 ACI da testare in anticipo. La soluzione crea contenitori ACI in base alle esigenze.

Importante

La soluzione aggiunge un ID dell'area di lavoro crittografato a tutte le risorse ACI sottostanti che crea. Tutti i nomi ACI della stessa area di lavoro hanno lo stesso suffisso. Il nome del servizio di Azure Machine Learning rimane identico a quello fornito dal cliente service_name. Le API SDK Azure Machine Learning che gli utenti vedono non necessitano di alcuna modifica. La soluzione non offre alcuna garanzia sui nomi delle risorse sottostanti che crea.

Passaggi successivi