Che cosa sono gli endpoint di Azure Machine Learning?
SI APPLICA A:Estensione dell'interfaccia della riga di comando di Azure v2 (corrente)
Python SDK azure-ai-ml v2 (corrente)
Usare gli endpoint di Azure Machine Learning per semplificare le distribuzioni di modelli per distribuzioni di inferenza in tempo reale e batch. Gli endpoint forniscono un'interfaccia unificata per richiamare e gestire le distribuzioni di modelli tra tipi di calcolo.
Importante
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.
In questo articolo vengono fornite informazioni su:
- Endpoint
- Deployments
- Endpoint online gestiti
- Endpoint online Kubernetes
- Endpoint di inferenza batch
Quali sono gli endpoint e le distribuzioni?
Dopo aver eseguito il training di un modello di Machine Learning, è necessario distribuirlo in modo che altri utenti possano usarlo per eseguire l'inferenza. In Azure Machine Learning è possibile usare endpoint e distribuzioni per eseguire questa operazione.
Un endpoint, in questo contesto, è un percorso HTTPS che fornisce un'interfaccia per i client per inviare richieste (dati di input) e ricevere l'output di inferenza (punteggio) di un modello sottoposto a training. Un endpoint fornisce:
- Autenticazione con l'autenticazione basata su "token chiave & "
- Terminazione SSL
- URI di assegnazione dei punteggi stabile (endpoint-name.region.inference.ml.azure.com)
Una distribuzione è un set di risorse necessarie per ospitare il modello che esegue l'inferenza effettiva.
Un singolo endpoint può contenere più distribuzioni. Gli endpoint e le distribuzioni sono risorse indipendenti di Azure Resource Manager visualizzate nella portale di Azure.
Azure Machine Learning consente di implementare endpoint online ed endpoint batch.
Più interfacce per sviluppatori
Creare e gestire endpoint batch e online con più strumenti di sviluppo:
- Interfaccia della riga di comando di Azure e Python SDK
- API REST/Resource Manager di Azure
- studio di Azure Machine Learning portale Web
- portale di Azure (IT/Amministrazione)
- Supporto per le pipeline CI/CD MLOps usando le interfacce REST/ARM dell'interfaccia dell'interfaccia & della riga di comando di Azure
Che cosa sono gli endpoint online?
Gli endpoint online sono endpoint usati per l'inferenza online (in tempo reale). Rispetto agli endpoint batch, gli endpoint online contengono distribuzioni pronte per ricevere dati dai client e possono inviare risposte in tempo reale.
Il diagramma seguente illustra un endpoint online con due distribuzioni, "blu" e "verde". La distribuzione blu usa macchine virtuali con uno SKU della CPU ed esegue la versione 1 di un modello. La distribuzione verde usa macchine virtuali con uno SKU GPU e usa la versione 2 del modello. L'endpoint è configurato per instradare il 90% del traffico in ingresso alla distribuzione blu, mentre verde riceve il rimanente 10%.
Requisiti delle distribuzioni online
Per creare un endpoint online, è necessario specificare gli elementi seguenti:
- File di modello (in alternativa, specificare un modello registrato nell'area di lavoro)
- Script di assegnazione dei punteggi: codice necessario per eseguire l'assegnazione dei punteggi/l'inferenza
- Ambiente: immagine Docker con dipendenze Conda o un dockerfile
- Impostazioni di scalabilità delle istanze & di calcolo
Informazioni su come distribuire endpoint online dall'interfaccia della riga di comando /SDK e dal portale Web studio.
Testare e distribuire localmente per il debug più veloce
Distribuire localmente per testare gli endpoint senza distribuire nel cloud. Azure Machine Learning crea un'immagine Docker locale che simula l'immagine di Azure Machine Learning. Azure Machine Learning creerà ed eseguirà distribuzioni in locale e memorizza nella cache l'immagine per iterazioni rapide.
Distribuzione nativa blu/verde
Tenere presente che un singolo endpoint può avere più distribuzioni. L'endpoint online può eseguire il bilanciamento del carico per assegnare una percentuale di traffico a ogni distribuzione.
L'allocazione del traffico può essere usata per eseguire distribuzioni blu/verdi sicure bilanciando le richieste tra istanze diverse.
Suggerimento
Una richiesta può ignorare il bilanciamento del carico del traffico configurato includendo un'intestazione HTTP di azureml-model-deployment
. Impostare il valore dell'intestazione sul nome della distribuzione a cui si vuole instradare la richiesta.
Il traffico a una distribuzione può anche essere mirrorato (o copiato) in un'altra distribuzione. Il traffico di mirroring (chiamato anche shadowing) è utile quando si vuole testare le cose come latenza di risposta o condizioni di errore senza influire sul client live; ad esempio, quando si implementa una distribuzione blu/verde in cui il 100% del traffico viene instradato a blu e al 10% viene eseguito il mirroring della distribuzione verde. Con il mirroring, i risultati del traffico alla distribuzione verde non vengono restituiti ai client, ma vengono raccolte metriche e log. Il test della nuova distribuzione con mirroring/ombreggiatura del traffico è noto anche come test shadow e la funzionalità è attualmente una funzionalità di anteprima .
Informazioni su come implementare in modo sicuro gli endpoint online.
Integrazione di Application Insights
Tutti gli endpoint online si integrano con Application Insights per monitorare i contratti di servizio e diagnosticare i problemi.
Tuttavia , gli endpoint online gestiti includono anche l'integrazione predefinita con i log di Azure e le metriche di Azure.
Sicurezza
- Autenticazione: token di Chiave e Azure Machine Learning
- Identità gestita: assegnata dall'utente e dal sistema assegnato
- SSL per impostazione predefinita per la chiamata all'endpoint
Scalabilità automatica
La scalabilità automatica usa automaticamente la quantità corretta di risorse per gestire il carico dell'applicazione. Gli endpoint gestiti supportano la scalabilità automatica tramite l'integrazione con la funzionalità di scalabilità automatica di monitoraggio di Azure . È possibile configurare il ridimensionamento basato sulle metriche ,ad esempio l'utilizzo >della CPU 70%), la scalabilità basata su pianificazione (ad esempio, le regole di ridimensionamento per le ore di lavoro di picco) o una combinazione.
Debug in Visual Studio Code
Visual Studio Code consente di eseguire il debug interattivo degli endpoint.
Supporto dell'endpoint privato
Facoltativamente, è possibile proteggere la comunicazione con un endpoint online gestito usando endpoint privati.
È possibile configurare la sicurezza per le richieste di assegnazione dei punteggi in ingresso e le comunicazioni in uscita con l'area di lavoro e altri servizi separatamente. Le comunicazioni in ingresso usano l'endpoint privato dell'area di lavoro di Azure Machine Learning. Le comunicazioni in uscita usano endpoint privati creati per distribuzione.
Per altre informazioni, vedere Proteggere gli endpoint online.
Endpoint online gestiti e endpoint online Kubernetes
Esistono due tipi di endpoint online: endpoint online gestiti e endpoint online Kubernetes.
Gli endpoint online gestiti consentono di distribuire i modelli di Machine Learning in modo pronto all'uso. Funzionano con computer CPU e GPU potenti in Azure in modo scalabile e completamente gestito. Gli endpoint online gestiti si occupano di gestire, dimensionare, proteggere e monitorare i modelli, liberando l'utente dalle attività di configurazione e gestione dell'infrastruttura sottostante. Nell'esempio principale di questa documentazione vengono usati endpoint online gestiti per la distribuzione.
L'endpoint online Kubernetes consente di distribuire modelli e gestire endpoint online nel cluster Kubernetes completamente configurato e gestito ovunque, con CPU o GPU.
La tabella seguente evidenzia le differenze principali tra endpoint online gestiti e endpoint online Kubernetes.
Endpoint online gestiti | Endpoint online Kubernetes | |
---|---|---|
Utenti consigliati | Utenti che vogliono una distribuzione di modelli gestita e un'esperienza MLOps migliorata | Utenti che preferiscono Kubernetes e possono gestire autonomamente i requisiti dell'infrastruttura |
Provisioning dei nodi | Provisioning di calcolo gestito, aggiornamento, rimozione | Responsabilità dell'utente |
Manutenzione dei nodi | Aggiornamenti delle immagini del sistema operativo host gestito e protezione avanzata della sicurezza | Responsabilità dell'utente |
Ridimensionamento del cluster (ridimensionamento) | Scalabilità automatica e manuale gestita, che supporta il provisioning di nodi aggiuntivi | Scalabilità manuale e automatica, supportando il ridimensionamento del numero di repliche entro i limiti fissi del cluster |
Tipo di calcolo | Gestito dal servizio | Cluster Kubernetes gestito dal cliente (Kubernetes) |
Identità gestita | Supportato | Supportato |
Rete virtuale | Supportato tramite l'isolamento della rete gestita | Responsabilità dell'utente |
Registrazione di monitoraggio & predefinita | Monitoraggio di Azure e Log Analytics con tecnologia (include metriche e tabelle di log chiave per endpoint e distribuzioni) | Responsabilità dell'utente |
Registrazione con Application Insights (legacy) | Supportato | Supportato |
Visualizzare i costi | Informazioni dettagliate sul livello di endpoint/distribuzione | Livello cluster |
Costo applicato a | Macchine virtuali assegnate alle distribuzioni | Macchine virtuali assegnate al cluster |
Traffico con mirroring | Supportato (anteprima) | Non supportato |
Distribuzione senza codice | Supportato (modelli MLflow e Cluster ) | Supportato (modelli MLflow e Cluster ) |
Endpoint online gestiti
Gli endpoint online gestiti consentono di semplificare il processo di distribuzione. Gli endpoint online gestiti offrono i vantaggi seguenti rispetto agli endpoint online kubernetes:
Infrastruttura gestita
- Effettua automaticamente il provisioning del calcolo e ospita il modello (è sufficiente specificare il tipo di macchina virtuale e le impostazioni di scalabilità)
- Aggiorna e applica automaticamente patch all'immagine del sistema operativo host sottostante
- Ripristino automatico dei nodi in caso di errore di sistema
Monitoraggio e log
- Monitorare la disponibilità, le prestazioni e il contratto di servizio del modello usando l'integrazione nativa con Monitoraggio di Azure.
- Eseguire il debug delle distribuzioni usando i log e l'integrazione nativa con Azure Log Analytics.
Visualizzare i costi
- Gli endpoint online gestiti consentono di monitorare i costi a livello di endpoint e distribuzione
Nota
Gli endpoint online gestiti si basano sull'ambiente di calcolo di Azure Machine Learning. Quando si usa un endpoint online gestito, si pagano i costi di calcolo e rete. Non è previsto alcun supplemento aggiuntivo.
Se si usa una rete virtuale e si protegge il traffico in uscita (in uscita) dall'endpoint online gestito, è previsto un costo aggiuntivo. Per l'uscita, vengono creati tre endpoint privati per distribuzione per l'endpoint online gestito. Vengono usati per comunicare con l'account di archiviazione predefinito, le Registro Azure Container e l'area di lavoro. Potrebbero essere applicati costi aggiuntivi per la rete. Per altre informazioni sui prezzi, vedere il calcolatore prezzi di Azure.
Per un'esercitazione dettagliata, vedere Come distribuire gli endpoint online.
Che cosa sono gli endpoint batch?
Gli endpoint batch sono endpoint usati per eseguire l'inferenza batch su grandi volumi di dati in un periodo di tempo. Gli endpoint batch ricevono puntatori ai dati ed eseguono processi in modo asincrono per elaborare i dati in parallelo nei cluster di calcolo. Gli endpoint batch archiviano gli output in un archivio dati per un'ulteriore analisi.
Requisiti di distribuzione batch
Per creare una distribuzione batch è necessario specificare gli elementi seguenti:
- File di modello (in alternativa, specificare un modello registrato nell'area di lavoro)
- Calcolo
- Script di assegnazione dei punteggi: codice necessario per eseguire l'assegnazione dei punteggi/l'inferenza
- Ambiente: immagine Docker con dipendenze Conda
Se si distribuiscono modelli MLFlow nelle distribuzioni batch, non è necessario fornire uno script di assegnazione dei punteggi e un ambiente di esecuzione, perché entrambi vengono generati automaticamente.
Altre informazioni su come distribuire e usare endpoint batch.
Costo gestito con calcolo con scalabilità automatica
Richiamare un endpoint batch attiva un processo di inferenza batch asincrona. Il provisioning delle risorse di calcolo viene eseguito automaticamente all'avvio del processo e automaticamente deallocato al termine del processo. Quindi si paga solo per il calcolo quando lo si usa.
È possibile eseguire l'override delle impostazioni delle risorse di calcolo (ad esempio il numero di istanze) e le impostazioni avanzate (ad esempio dimensioni mini batch, soglia di errore e così via) per ogni singolo processo di inferenza batch per velocizzare l'esecuzione e ridurre i costi.
Origini dati flessibili e archiviazione
È possibile usare le opzioni seguenti per i dati di input quando si richiama un endpoint batch:
- Dati cloud: un percorso nell'archivio dati registrato di Azure Machine Learning, un riferimento all'asset di dati registrato V2 di Azure Machine Learning o a un URI pubblico. Per altre informazioni, vedere Dati in Azure Machine Learning.
- Dati archiviati in locale: i dati verranno caricati automaticamente nell'archivio dati registrato di Azure Machine Learning e passati all'endpoint batch.
Nota
- Se si usano filedataset V1 esistenti per gli endpoint batch, è consigliabile eseguirne la migrazione agli asset di dati V2. È quindi possibile fare riferimento direttamente agli asset di dati V2 quando si richiamano gli endpoint batch. Attualmente sono supportati solo gli asset di dati di tipo
uri_folder
ouri_file
. Gli endpoint batch creati con CLIv2 ga (2.4.0 e versioni successive) o l'API REST ga (2022-05-01 e versioni successive) non supporteranno i set di dati V1. - È anche possibile estrarre l'URI o il percorso degli archivi dati da V1 FileDatasets. A tale scopo, si userà il
az ml dataset show
comando con il--query
parametro e si useranno tali informazioni per invoke. - Anche se gli endpoint batch creati con le API precedenti continueranno a supportare fileDataset V1, si aggiungerà ulteriore supporto per gli asset di dati V2 nelle versioni più recenti dell'API per migliorare l'usabilità e la flessibilità. Per altre informazioni sugli asset di dati V2, vedere Usare i dati con SDK v2. Per altre informazioni sulla nuova esperienza V2, vedere Informazioni sulla versione 2.
Per altre informazioni sulle opzioni di input supportate, vedere Accesso ai dati dai processi di endpoint batch.
Specificare il percorso di output dell'archiviazione in qualsiasi archivio dati e percorso. Per impostazione predefinita, gli endpoint batch archiviano l'output nell'archivio BLOB predefinito dell'area di lavoro, organizzato in base al nome del processo (GUID generato dal sistema).
Sicurezza
- Autenticazione: Token di Azure Active Directory
- SSL: abilitato per impostazione predefinita per la chiamata all'endpoint
- Supporto della rete virtuale: gli endpoint batch supportano la protezione in ingresso. Un endpoint batch con protezione in ingresso accetta le richieste di assegnazione dei punteggi solo dagli host all'interno di una rete virtuale, ma non da Internet pubblico. Un endpoint batch creato in un'area di lavoro abilitata per il collegamento privato avrà protezione in ingresso. Per creare un'area di lavoro abilitata per il collegamento privato, vedere Creare un'area di lavoro sicura.
Nota
La creazione di endpoint batch in un'area di lavoro abilitata per il collegamento privato è supportata solo nelle versioni seguenti.
- Interfaccia della riga di comando : versione 2.15.1 o successiva.
- API REST: versione 2022-05-01 o successiva.
- SDK V2 : versione 0.1.0b3 o successiva.
Passaggi successivi
- Come distribuire endpoint online con l'interfaccia della riga di comando di Azure e Python SDK
- Come distribuire endpoint batch con l'interfaccia della riga di comando di Azure e Python SDK
- Come usare gli endpoint online con lo studio
- Distribuire modelli con REST
- Come monitorare gli endpoint online gestiti
- Come visualizzare i costi degli endpoint online gestiti
- Gestire e aumentare le quote per le risorse con Azure Machine Learning