Pacchetti di modelli per la distribuzione (anteprima)
Dopo aver eseguito il training di un modello di apprendimento automatico, è necessario distribuirlo in modo che altri utenti possano usare le sue previsioni. Tuttavia, la distribuzione di un modello richiede più dei pesi o degli artefatti del modello. I pacchetti di modelli rappresentano una funzionalità di Azure Machine Learning che consente di raccogliere tutte le dipendenze necessarie per distribuire un modello di apprendimento automatico a una piattaforma di gestione. È possibile spostare i pacchetti nelle aree di lavoro e persino al di fuori di Azure Machine Learning.
Importante
Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate.
Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Che cos'è un pacchetto di modelli?
Come procedura consigliata, prima di distribuire un modello, tutte le dipendenze richieste dal modello per essere eseguito correttamente devono essere raccolte e risolte, per poter distribuire il modello tramite un approccio riproducibile e solido.
In genere, le dipendenze di un modello includono:
- Immagine o ambiente di base in cui il modello viene eseguito.
- Elenco di pacchetti e dipendenze Python da cui dipende il modello per funzionare in modo appropriato.
- Asset extra di cui il modello potrebbe necessitare per generare inferenza. Questi asset possono includere le mappe delle etichette e i parametri di elaborazione.
- Il software necessario per fare in modo che il server di inferenza gestisca le richieste, ad esempio, server Flask o TensorFlow Serving.
- Routine di inferenza (se necessario).
Tutti questi elementi devono essere raccolti, quindi distribuiti nell'infrastruttura di gestione. L'asset risultante generato dopo la raccolta di tutte le dipendenze è un pacchetto di modelli.
Vantaggi dei modelli di pacchetti
I modelli di pacchetti prima della distribuzione hanno i vantaggi seguenti:
- Riproducibilità: tutte le dipendenze vengono raccolte al momento della creazione del pacchetto e non al momento della distribuzione. Una volta risolte le dipendenze, è possibile distribuire i pacchetti tutte le volte in cui è necessario, garantendo al contempo che le dipendenze siano già state risolte.
- Risoluzione più rapida dei conflitti: Azure Machine Learning rileva eventuali configurazioni errate correlate alle dipendenze, come un pacchetto Python mancante, durante la preparazione del pacchetto del modello. Non è necessario distribuire il modello per scoprire questi problemi.
- Integrazione più semplice con il server di inferenza: considerando che il server di inferenza in uso potrebbe necessitare di configurazioni software (ad esempio, un pacchetto TorchServe), tale software può generare conflitti con le dipendenze del modello. I modelli di pacchetti in Azure Machine Learning inseriscono le dipendenze richieste dal server di inferenza per rilevare i conflitti prima di distribuire un modello.
- Portabilità: è possibile spostare un pacchetto di modelli di Azure Machine Learning da un'area di lavoro all'altra usando i registri. È anche possibile generare pacchetti da poter distribuire al di fuori di Azure Machine Learning.
- Supporto MLflow con reti private: per i modelli MLflow, Azure Machine Learning richiede una connessione Internet per poter installare in modo dinamico i pacchetti Python necessari per l'esecuzione dei modelli. Creando pacchetti di modelli MLflow, questi pacchetti Python vengono risolti durante l'operazione di creazione del pacchetto di modelli, così che il pacchetto di modelli MLflow non debba richiedere una connessione Internet per essere distribuito.
Suggerimento
Creare un pacchetto di un modello MLflow prima della distribuzione è molto consigliato e persino richiesto per gli endpoint senza connettività di rete in uscita. Un modello MLflow indica le sue dipendenze nel modello stesso, richiedendo pertanto l'installazione dinamica dei pacchetti. Quando viene creato un pacchetto del modello MLflow, questa installazione dinamica viene eseguita al momento della creazione del pacchetto e non al momento della distribuzione.
Distribuzione di pacchetti di modelli
È possibile fornire pacchetti di modelli come input agli endpoint online. L'utilizzo di pacchetti di modelli consente di semplificare i flussi di lavoro MLOps riducendo le possibilità di errore al momento della distribuzione, dal momento che tutte le dipendenze vengono raccolte al momento dell'operazione di creazione del pacchetto. È anche possibile configurare il pacchetto di modelli per generare immagini docker da distribuire ovunque a di fuori di Azure Machine Learning, in locale e nel cloud.
Creazione del pacchetto prima della distribuzione
Il modo più semplice per effettuare la distribuzione tramite un pacchetto di modelli è quello di specificare ad Azure Machine Learning di distribuire un pacchetto di modelli prima di eseguire la distribuzione. Durante l'utilizzo dell'interfaccia della riga di comando di Azure, dell'SDK di Azure Machine Learning SDK o di studio di Azure Machine Learning per creare una distribuzione in un endpoint online, è possibile specificare l'utilizzo di un pacchetto di modelli come segue:
Usare il flag --with-package
durante la creazione di una distribuzione:
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning crea per prima cosa il pacchetto del modello, quindi esegue la distribuzione.
Nota
Quando si usano pacchetti, se si indica un ambiente di base con dipendenze conda
o pip
, non è necessario includere le dipendenze nel server di inferenza (azureml-inference-server-http
). Queste dipendenze vengono invece aggiunte automaticamente.
Distribuire un modello in un pacchetto
È possibile distribuire un modello inserito in un pacchetto direttamente in un endpoint online. Questa procedura consigliata garantisce la riproducibilità dei risultati. Vedere Creare pacchetti di modelli e distribuirli in endpoint online.
Per distribuire il pacchetto al di fuori di Azure Machine Learning, vedere Creare pacchetti di modelli e distribuirli al di fuori di Azure Machine Learning.