Che cosa sono i modelli di distribuzione?

Un modello di distribuzione è un artefatto riutilizzabile a livello di registro che comprende l'infrastruttura e le impostazioni di runtime necessarie a un modello per gestire il traffico su un endpoint online gestito. Gli autori di modelli pubblicano un modello di distribuzione insieme al modello in modo che i consumer possano distribuire il modello in modo coerente senza apprendere tutti i dettagli dell'infrastruttura. In qualità di consumatore, effettuare la distribuzione del modello con un breve payload YAML o REST perché il template di distribuzione specifica già l'ambiente, le variabili di ambiente, i probe e altre impostazioni.

Note

La sintassi YAML descritta in dettaglio in questo documento si basa sullo schema JSON per la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. Il funzionamento di questa sintassi è garantito solo con la versione più recente dell'estensione dell'interfaccia della riga di comando di Machine Learning v2. È possibile trovare gli schemi per le versioni di estensione precedenti in https://azuremlschemasprod.azureedge.net/.

Perché usare i modelli di distribuzione?

I modelli di distribuzione consentono di separare i problemi di creazione di modelli dall'utilizzo del modello:

  • Riusabilità. Creare un modello di distribuzione una sola volta e riutilizzarlo in molti modelli nel Registro di sistema o in più versioni dello stesso modello.
  • Barriere di protezione. Limitare i tipi di istanza che i consumer possono usare impostando allowed_instance_types sul modello e pubblicare un set curato di modelli di distribuzione per i consumer impostando allowed_deployment_templates sul modello.
  • Coerenza. Ogni utente che distribuisce il modello ottiene la stessa immagine dell'ambiente, la stessa porta di scoring, gli stessi probe e le stesse impostazioni delle richieste, riducendo così le differenze tra le distribuzioni.
  • Ciclo di vita disaccoppiato. Aggiornare una versione di un modello di distribuzione senza modificare l'artefatto del modello, quindi puntare default_deployment_template del modello alla nuova versione quando si vuole che i client adottino tale versione.

Concetti chiave

Un modello di distribuzione presenta le caratteristiche seguenti:

  • Ambito registro. I modelli di distribuzione si trovano in un registro di Azure Machine Learning, non in un'area di lavoro. Puoi farvi riferimento tramite l'URI dell'asset del registro: azureml://registries/<registry-name>/deploymenttemplates/<template-name>/versions/<version>.
  • Versionato. Ogni modello di distribuzione ha un nome e una versione. Gli utenti fanno riferimento a una versione specifica, quindi gli aggiornamenti al modello non modificano le distribuzioni in esecuzione finché gli utenti non eseguono una nuova distribuzione.
  • Digitare Managed. I modelli di distribuzione supportano attualmente il Managed tipo, destinato agli endpoint online gestiti.
  • Associato a un ambiente di registro. Il campo environment in un modello di distribuzione deve fare riferimento a un ambiente con ambito registro. Gli ambienti con ambito dell'area di lavoro e le definizioni inline di ambiente non sono supportati.

Un modello che usa i modelli di distribuzione ha due campi correlati:

  • default_deployment_template — il modello di distribuzione che viene applicato quando un utente distribuisce il modello senza specificare una sovrascrittura.
  • allowed_deployment_templates : un elenco facoltativo e curato di modelli di distribuzione che l'autore del modello consiglia agli utenti di usare come override.

Una distribuzione che fa riferimento a un modello con default_deployment_template può sovrascriverlo impostando properties."azureml.deploymentTemplateOverride" sull'URI dell'asset del registro del modello sostitutivo.

Flusso di lavoro in breve

Il flusso completo ha tre ruoli: il proprietario dell'ambiente, l'autore del modello e l'utilizzatore del modello. La stessa persona può svolgere tutti e tre i ruoli.

  1. Creare un ambiente. Il proprietario dell'ambiente crea un ambiente in un'area di lavoro e lo condivide in un registro.
  2. Creare un modello di distribuzione. L'autore del modello crea un modello di distribuzione nel registro che fa riferimento all'ambiente con ambito di registro e imposta proprietà dell'infrastruttura come default_instance_type, allowed_instance_types, percorso di scoring e porta, variabili di ambiente e probe.
  3. Registrare il modello. L'autore del modello registra il modello nel registro durante il caricamento dei pesi del modello e l'impostazione di default_deployment_template (e facoltativamente allowed_deployment_templates) sul modello.
  4. Distribuire il modello. Il consumatore crea un endpoint online gestito in un'area di lavoro e crea una distribuzione che fa riferimento al modello del registro. La distribuzione usa il modello di distribuzione predefinito del modello o specifica un override presente nell'elenco di elementi consentiti del modello.

Per istruzioni dettagliate, vedere:

Relazione con ambienti e modelli

I modelli di distribuzione si trovano tra ambienti e modelli nel Registro di sistema:

  • Un ambiente descrive l'immagine del contenitore e le dipendenze di Python che eseguono il codice di scoring. È possibile fare riferimento a un ambiente con ambito registro da molti modelli di distribuzione.
  • Un modello di distribuzione descrive come eseguire un modello in un endpoint online gestito facendo riferimento a un ambiente con ambito registro e impostazioni dell'infrastruttura.
  • Un modello nel Registro di sistema può aggiungere un modello di distribuzione predefinito e, facoltativamente, limitare il set di sostituzioni consentite del modello di distribuzione. Modelli diversi possono riutilizzare lo stesso modello di distribuzione o fissare modelli di distribuzione diversi.

Modificabilità

I modelli di distribuzione e i modelli seguono regole di mutabilità diverse in modo che una versione del modello di distribuzione rimanga una destinazione stabile e riproducibile mentre una versione del modello può raccogliere le associazioni di infrastruttura aggiornate.

  • La versione del modello di distribuzione non è modificabile. Dopo aver creato una versione di un modello di distribuzione, solo i campi tags e description di quella versione possono essere aggiornati direttamente. I campi che influiscono sul comportamento di runtime, ad esempio environment, environment_variablesdefault_instance_type, allowed_instance_typesrequest_settingsliveness_probe, e readiness_probe , non sono modificabili. Per modificare uno di questi, creare una nuova versione del modello di distribuzione. Ciò garantisce che un utente che si vincola a una versione specifica del modello di distribuzione riceva sempre la stessa configurazione dell'infrastruttura.
  • La versione del modello è modificabile per i riferimenti al modello di distribuzione. In una versione di modello esistente, è possibile aggiornare default_deployment_template e allowed_deployment_templates in modo che puntino a nuovi modelli di distribuzione o a nuove versioni di un modello di distribuzione esistente. Non è necessario creare una nuova versione del modello per implementare una nuova configurazione dell'infrastruttura; aggiornare invece la versione del modello di distribuzione e aggiornare i puntatori del modello, a meno che non si scelga di creare una nuova versione del modello.

Limitazioni e considerazioni

  • I modelli di distribuzione sono in anteprima. Lo schema e il comportamento possono cambiare.
  • I modelli di distribuzione supportano solo il Managed tipo. Usarli con endpoint online gestiti, non con endpoint online di Kubernetes o endpoint batch.
  • Il campo environment deve fare riferimento a un ambiente con ambito registro. Condividi gli ambienti dell'area di lavoro in un registro prima di farvi riferimento.
  • L'elenco allowed_deployment_templates del modello è un'indicazione per l'autore, non una restrizione vincolante. Un autore di modelli lo usa per pubblicare un set curato di modelli di override convalidati, ma la piattaforma non blocca una distribuzione che esegue l'override di un modello all'esterno dell'elenco.
  • Un instance_type specificato in una distribuzione deve essere presente nell'elenco allowed_instance_types del modello di distribuzione, se tale elenco è impostato nel modello.