Che cosa sono gli endpoint di Azure Machine Learning?

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (anteprima)

Usare gli endpoint di Azure Machine Learning per semplificare le distribuzioni di modelli per le distribuzioni di inferenza in tempo reale e batch. Gli endpoint forniscono un'interfaccia unificata per richiamare e gestire le distribuzioni di modelli tra i tipi di calcolo.

In questo articolo vengono fornite informazioni su:

  • Endpoint
  • Deployments
  • Endpoint online gestiti
  • Endpoint online Kubernetes
  • Endpoint di inferenza batch

Che cosa sono gli endpoint e le distribuzioni?

Dopo aver eseguito il training di un modello di Machine Learning, è necessario distribuire il modello in modo che altri utenti possano usarlo per eseguire l'inferenza. In Azure Machine Learning è possibile usare endpoint e distribuzioni a tale scopo.

Un endpoint è un endpoint HTTPS che i client possono chiamare per ricevere l'output di inferenza (assegnazione dei punteggi) di un modello sottoposto a training. 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 nel portale di Azure.

Azure Machine Learning usa il concetto di endpoint e distribuzioni per implementare diversi tipi di endpoint: 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
  • API REST/Resource Manager di Azure
  • portale Web di studio di Azure Machine Learning
  • portale di Azure (IT/Amministrazione)
  • Supporto per le pipeline MLOps CI/CD tramite 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 mostra un endpoint online con due distribuzioni, "blu" e "verde". La distribuzione blu usa le macchine virtuali con uno SKU della CPU ed esegue v1 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 il verde riceve il rimanente 10%.

Diagramma che mostra un endpoint che divide il traffico a due distribuzioni.

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 e dal portale Web di Studio.

Testare e distribuire in locale per un debug più rapido

Distribuire localmente per testare gli endpoint senza eseguire la distribuzione nel cloud. Azure Machine Learning crea un'immagine Docker locale che simula l'immagine di Azure ML. Azure Machine Learning creerà ed eseguirà le distribuzioni in locale e memorizza l'immagine nella cache per le 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 fornire qualsiasi percentuale di traffico a ogni distribuzione.

L'allocazione del traffico può essere usata per eseguire distribuzioni di implementazione sicure blu/verde 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.

Screenshot che mostra l'interfaccia del dispositivo di scorrimento per impostare l'allocazione del traffico tra le distribuzioni.

Diagramma che mostra un endpoint che divide il traffico a due distribuzioni.

Il traffico verso una distribuzione può anche essere sottoposto a mirroring (copiato) a un'altra distribuzione. Il mirroring è utile quando si vuole testare elementi come la latenza di risposta o condizioni di errore senza influire sugli effetti dei client live. Ad esempio, una distribuzione blu/verde in cui il 100% del traffico viene instradato a blu e un 10% viene sottoposto a mirroring alla distribuzione verde. Con il mirroring, i risultati del traffico verso la distribuzione verde non vengono restituiti ai client, ma vengono raccolti metriche e log. La funzionalità di mirroring del traffico è una funzionalità di anteprima .

Diagramma che mostra un traffico di mirroring dell'endpoint verso una distribuzione.

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: chiavi e token di Azure ML
  • Identità gestita: assegnata dall'utente e assegnata dal sistema
  • SSL per impostazione predefinita per la chiamata all'endpoint

Scalabilità automatica

La scalabilità automatica esegue automaticamente la giusta quantità di risorse per gestire il carico nell'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, utilizzo cpu >70%), scalabilità basata su pianificazione (ad esempio, regole di ridimensionamento per le ore lavorative di punta) o una combinazione.

Screenshot che mostra che la scalabilità automatica fornisce in modo flessibile tra le istanze min e max, a seconda delle regole.

Debug in Visual Studio Code

Visual Studio Code consente di eseguire il debug interattivo degli endpoint.

Screenshot del debug degli endpoint in VSCode.

Supporto dell'endpoint privato (anteprima)

Facoltativamente, è possibile proteggere la comunicazione con un endpoint online gestito usando endpoint privati. Questa funzionalità è attualmente disponibile in anteprima.

Importante

Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio e non è consigliata per 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.

È 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 chiavi in mano. Gli endpoint online gestiti funzionano con potenti computer GPU e CPU in Azure in modo scalabile e completamente gestito. Gli endpoint online gestiti si occupano di gestire, ridimensionare, proteggere e monitorare i modelli, liberando l'overhead di configurazione e gestione dell'infrastruttura sottostante. L'esempio principale in questo documento usa gli 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 illustra le differenze principali tra gli endpoint online gestiti e gli 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
Gestione dell'infrastruttura Provisioning di calcolo gestito, ridimensionamento, aggiornamenti delle immagini del sistema operativo host e protezione avanzata della sicurezza Responsabilità dell'utente
Tipo di calcolo Gestito (AmlCompute) Cluster Kubernetes (Kubernetes)
Monitoraggio guidato Monitoraggio di Azure
(include metriche chiave come la latenza e velocità effettiva)
Supportato
Registrazione guidata Log di Azure e Log Analytics a livello di endpoint Non supportato
Application Insights Supportato Supportato
Identità gestita Supportato Supportato
Rete virtuale Supportato (anteprima) Supportato
Visualizzare i costi Livello endpoint e distribuzione Livello cluster
Traffico con mirroring Supportato Non supportato

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.

    Screenshot che mostra il grafico di Monitoraggio di Azure della latenza degli endpoint.

  • Visualizzare i costi

    Screenshot del grafico dei costi di un endpoint e della 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.

Diagramma che mostra che un singolo endpoint batch può instradare le richieste a più distribuzioni, una delle quali è l'impostazione predefinita.

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, non è necessario fornire uno script di assegnazione dei punteggi e un ambiente di esecuzione, perché entrambi vengono generati automaticamente.

Informazioni su come distribuire e usare endpoint batch con l'interfaccia della riga di comando di Azure e il portale Web di Studio

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 Connettersi ai dati con il studio di Azure Machine Learning
  • Dati archiviati in locale: verranno caricati automaticamente nell'archivio dati registrato di Azure ML e passati all'endpoint batch.

Nota

  • Se si usa fileDataset V1 esistente per l'endpoint batch, è consigliabile eseguirne la migrazione agli asset di dati V2 e farvi riferimento direttamente quando si richiamano gli endpoint batch. Attualmente sono supportati solo gli asset di dati di tipo uri_folder o uri_file . Gli endpoint batch creati con GA CLIv2 (2.4.0 e versioni successive) o l'API REST ga (2022-05-01 e versioni successive) non supporteranno il set di dati V1.
  • È anche possibile estrarre l'URI o il percorso nell'archivio dati estratto da FileDataset V1 usando il az ml dataset show comando con --query il parametro e usare tali informazioni per invoke.
  • Anche se gli endpoint Batch creati con le API precedenti continueranno a supportare FileDataset V1, verranno aggiunti ulteriori asset di dati V2 supportati con le versioni più recenti dell'API per maggiore usabilità e flessibilità. Per altre informazioni sugli asset di dati V2, vedere Usare i dati con SDK v2 (anteprima). Per altre informazioni sulla nuova esperienza V2, vedere Informazioni sulla versione 2.

Per altre informazioni sulle opzioni di input supportate, vedere Assegnazione dei punteggi batch con 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 accetterà le richieste di assegnazione dei punteggi solo dagli host all'interno di una rete virtuale, ma non dalla rete Internet pubblica. 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