Condividi tramite


Eseguire endpoint batch da eventi di Griglia di eventi nello spazio di archiviazione

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

Griglia di eventi è un servizio completamente gestito che può essere utilizzato per gestire facilmente gli eventi in molti servizi e applicazioni di Azure. Il servizio semplifica il modo in cui si compilano applicazioni basate su eventi e serverless. Questa esercitazione mostra come attivare il processo di un endpoint batch per elaborare i file non appena vengono creati in un account di archiviazione. L'architettura usa il flusso di lavoro di un'app per la logica per sottoscrivere tali eventi e attivare l'endpoint.

Nel diagramma seguente viene illustrata l'architettura di questa soluzione:

Diagramma concettuale che mostra i componenti per questa architettura.

La procedura seguente descrive i passaggi generali di questa soluzione:

  1. Quando viene creato un nuovo BLOB in un account di archiviazione specifico, viene attivato un evento di creazione file.

  2. L'evento viene inviato a Griglia di eventi per essere elaborato per tutti i sottoscrittori.

  3. Il flusso di lavoro dell'app per la logica sottoscrive e ascolta tali eventi.

    Poiché l'account di archiviazione può contenere più asset di dati, viene applicato il filtro degli eventi per reagire solo agli eventi che si verificano in una cartella specifica dell'account di archiviazione. Se necessario, è possibile applicare ulteriori filtri, ad esempio in base alle estensioni dei file.

  4. Viene attivato il flusso di lavoro dell'app per la logica che esegue le azioni seguenti:

    1. Ottiene un token di autorizzazione per richiamare gli endpoint batch con le credenziali di un'entità servizio.

    2. Attiva l'endpoint batch (distribuzione predefinita) usando il file appena creato come input.

  5. L'endpoint batch restituisce il nome del processo creato per elaborare il file.

Importante

Quando si usa un flusso di lavoro dell'app per la logica che si connette a Griglia di eventi per richiamare l'endpoint batch, si genera un processo per ogni file BLOB creato nell'account di archiviazione. Si tenga presente che poiché gli endpoint batch distribuiscono il lavoro a livello di file, non si verifica alcuna parallelizzazione. Usare invece la funzionalità degli endpoint batch per eseguire più processi nello stesso cluster di elaborazione. Se è necessario eseguire processi in intere cartelle in modo automatico, è consigliabile richiamare endpoint batch da Azure Data Factory.

Prerequisiti

  • Si dispone di un modello distribuito correttamente come endpoint batch. Se necessario, è possibile estendere questa architettura in modo che funzioni con le distribuzioni dei componenti della pipeline.

  • La distribuzione batch viene eseguita in un cluster di elaborazione denominato batch-cluster.

  • L'app per la logica creata comunica con gli endpoint batch di Azure Machine Learning usando REST.

    Per altre informazioni su come usare l'API REST per gli endpoint batch, vedere Creare processi e dati di input per gli endpoint batch.

Eseguire l'autenticazione in base agli endpoint batch

App per la logica di Azure può richiamare le API REST degli endpoint batch usando l'azione HTTP. Gli endpoint batch supportano Microsoft Entra ID per l'autorizzazione, quindi la richiesta inviata alle API richiede una corretta gestione dell'autenticazione.

In questa esercitazione viene usata un'entità servizio per l'autenticazione e l'interazione con gli endpoint batch nello scenario descritto.

  1. Creare un'entità servizio seguendo le indicazioni di Registrare un'applicazione con Microsoft Entra ID e creare un'entità servizio.

  2. Creare un segreto da usare per l'autenticazione, come descritto in Opzione 3: Creare un nuovo segreto client.

  3. Assicurarsi di salvare il valore del segreto client generato, che viene visualizzato una sola volta.

  4. Assicurarsi di salvare client ID e tenant id nel riquadro Panoramica dell'applicazione.

  5. Concedere all'entità servizio l'accesso all'area di lavoro come descritto in Concedere l'accesso. In questo esempio, l'entità servizio richiede quanto segue:

    • Autorizzazione nell'area di lavoro per la lettura delle distribuzioni batch e l’esecuzione di azioni su tali distribuzioni.
    • Autorizzazioni per lettura/scrittura negli archivi dati.

Abilitare l'accesso ai dati

Per indicare i dati di input da inviare al processo di distribuzione, questa esercitazione usa gli URI cloud forniti da Griglia di eventi. Gli endpoint batch usano l'identità dell'ambiente di calcolo per montare i dati mantenendo l'identità del processo per leggere i dati montati. È necessario assegnare quindi un'identità gestita assegnata dall'utente al cluster di elaborazione e assicurarsi che disponga dell'accesso per montare i dati sottostanti. Per garantire l'accesso ai dati, eseguire i passaggi seguenti:

  1. Creare una risorsa identità gestita:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Aggiornare il cluster di elaborazione in modo che usi l'identità gestita creata:

    Nota

    In questo esempio si presuppone che sia stato creato un cluster di elaborazione denominato cpu-cluster, usato per la distribuzione predefinita nell'endpoint.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. Nel portale di Azure assicurarsi che l'identità gestita disponga delle autorizzazioni corrette per leggere i dati.

    Per accedere ai servizi di archiviazione, è necessario avere almeno l'accesso Ruolo con autorizzazioni di lettura per i dati dei BLOB di archiviazione all'account di archiviazione. Solo i proprietari degli account di archiviazione possono modificare il livello di accesso tramite il portale Azure.

Creare un'app per la logica

  1. Nella home page del portale di Azure selezionare Crea una risorsa.

  2. Nel menu di Azure Marketplace selezionare Integrazione>App per la logica.

    Screenshot che mostra il menu di Azure Marketplace con le opzioni

  3. Nella scheda Nozioni di base del riquadro Crea app per la logica fornire le informazioni seguenti sulla risorsa dell'app per la logica.

    Proprietà Richiesto Valore Descrizione
    Abbonamento <Azure-subscription-name> Il nome della sottoscrizione di Azure. In questo esempio viene usato Con pagamento in base al consumo.
    Gruppo di risorse LA-TravelTime-RG Il gruppo di risorse di Azure in cui si creano la risorsa dell'app per la logica e le risorse correlate. Questo nome deve essere univoco tra le varie aree e può contenere solo lettere, numeri, trattini (-), caratteri di sottolineatura (_), parentesi ((, )) e punti (.).
    Nome LA-TravelTime Il nome della risorsa dell'app per la logica, che deve essere univoco tra le varie aree e può contenere solo lettere, numeri, trattini (-), caratteri di sottolineatura (_), parentesi ((, )) e punti (.).

    Screenshot che mostra il portale di Azure, il riquadro di creazione dell'app per la logica e le informazioni per la nuova risorsa app per la logica.

  4. Prima di continuare con le selezioni, passare alla sezione Piano. In Tipo di piano selezionare A consumo per visualizzare solo le impostazioni per un flusso di lavoro dell'app per la logica a consumo, che viene eseguito in App per la logica di Azure multi-tenant.

    Importante

    Per le aree di lavoro abilitate per il collegamento privato, è necessario usare il piano Standard per App per la logica di Azure con la configurazione per consentire la rete privata.

    La proprietà Tipo di piano specifica anche il modello di fatturazione da usare.

    Tipo di piano Descrizione
    Standard Questo tipo di app per la logica è selezionato per impostazione predefinita, viene eseguito in App per la logica di Azure a tenant singolo e usa il modello di prezzi Standard.
    Consumo Questo tipo di app per la logica viene eseguito in App per la logica di Azure multi-tenant globali e usa il modello di prezzi a consumo.
  5. Continuare con le selezioni seguenti:

    Proprietà Richiesto Valore Descrizione
    Area Stati Uniti occidentali L'area del data center di Azure per l'archiviazione delle informazioni dell'app. Questo esempio distribuisce l'app per la logica di esempio nell'area Stati Uniti occidentali di Azure.
    Abilitare l'analisi dei log No Questa opzione viene visualizzata e si applica solo quando si seleziona il tipo di app per la logica A consumo. Modificare questa opzione solo quando si vuole abilitare la registrazione diagnostica. Per questa esercitazione non modificare la selezione predefinita.
  6. Al termine, selezionare Rivedi e crea. Dopo la convalida delle informazioni sulla risorsa dell'app per la logica in Azure, selezionare Crea.

  7. Dopo la distribuzione dell'app in Azure, selezionare Vai alla risorsa.

    Azure apre la finestra di progettazione dei flussi di lavoro per l'app per la logica.

Configurare i parametri del flusso di lavoro

Questo flusso di lavoro dell’app per la logica usa i parametri per archiviare le informazioni specifiche necessarie per eseguire la distribuzione batch.

  1. Sulla barra degli strumenti della finestra di progettazione dei flussi di lavoro, selezionare Parametri.

    Screenshot che mostra il riquadro Parametri per la definizione dei parametri necessari per il flusso di lavoro.

  2. Nel riquadro Parametri selezionare Crea parametro e specificare le informazioni seguenti per ogni parametro da creare:

    Suggerimento

    Usare i valori configurati in Autenticazione per gli endpoint batch.

    Nome parametro Descrizione Valore di esempio
    tenant_id ID tenant in cui viene distribuito l'endpoint. 00000000-0000-0000-00000000
    client_id ID client dell'entità servizio usato per richiamare l'endpoint. 00000000-0000-0000-00000000
    client_secret Segreto client dell'entità servizio usato per richiamare l'endpoint. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri URI di assegnazione dei punteggi dell'endpoint.

    Importante: questo è l'URI dell'endpoint da eseguire. Per l'endpoint deve essere configurata una distribuzione predefinita.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    Di seguito è disponibile un parametro di esempio:

    Screenshot che mostra come aggiungere un parametro nella finestra di progettazione.

    Per altre informazioni, vedere Creare i parametri tra ambienti da usare per gli input del flusso di lavoro in App per la logica di Azure.

Aggiungere il trigger

Si vuole attivare il flusso di lavoro dell'app per la logica ogni volta che viene creato un nuovo file in una determinata cartella (asset di dati) di un account di archiviazione. L'app per la logica usa le informazioni dell'evento per richiamare l'endpoint batch e passare il file specifico da elaborare.

  1. Nella finestra di progettazione dei flussi di lavoro eseguire questi passaggi generali per aggiungere un trigger di Griglia di eventi denominato Quando si verifica un evento della risorsa.

  2. Nella casella Informazioni di connessione selezionare il tipo di autenticazione da usare e quindi selezionare Accedi.

  3. Nella casella del trigger specificare le informazioni seguenti:

    Proprietà valore Descrizione
    Tipo di risorsa Microsoft.Storage.StorageAccounts Tipo di risorsa che emette gli eventi.
    Abbonamento nome della sottoscrizione Sottoscrizione per l'account di archiviazione.
    Nome della risorsa Nome dell'account di archiviazione Nome dell'account di archiviazione in cui vengono generati i file.
    Elemento tipo di evento Microsoft.Storage.BlobCreated Tipo di evento.
  4. Nell'elenco Parametri avanzati selezionare Filtro per prefisso e specificare il valore seguente:

    /blobServices/default/containers/<container-name>/blobs/<path-to-data-folder>

    Importante

    La proprietà Filtro per prefisso consente a Griglia di eventi di inviare una notifica al flusso di lavoro solo quando viene creato un BLOB nel percorso specifico indicato. In questo caso si presuppone che i file vengano creati da un processo esterno nella cartella specificata da <path-to-data-folder> nel contenitore <container-name>, che si trova nell'account di archiviazione selezionato. Configurare questo parametro in modo che corrisponda alla posizione dei dati. Altrimenti, l'evento viene generato per qualsiasi file creato in qualsiasi posizione dell'account di archiviazione. Per altre informazioni, vedere Filtro eventi per Griglia di eventi.

    L'esempio seguente mostra l'aspetto del trigger:

    Screenshot dell'attività del trigger dell'app per la logica.

Configurare le azioni

  1. Nel trigger Quando si verifica un evento della risorsa, eseguire questi passaggi generali per aggiungere l'azione HTTP. Rinominare l'azione con Autorizza.

  2. Nell'azione Autorizza specificare le informazioni seguenti:

    Proprietà valore Note
    Metodo POST Metodo HTTP.
    URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Per immettere questa espressione, fare clic nella casella URI. Nelle opzioni visualizzate selezionare l'editor di espressioni (icona della formula).
    Intestazioni Content-Type con valore application/x-www-form-urlencoded
    Testo concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Per immettere questa espressione, fare clic nella casella Corpo. Nelle opzioni visualizzate selezionare l'editor di espressioni (icona della formula).

    L'esempio seguente mostra un'azione Autorizza di esempio:

    Screenshot che mostra un'azione Autorizza di esempio nel flusso di lavoro dell'app per la logica.

  3. Nell'azione Autorizza, aggiungere un'altra azione HTTP e modificare il titolo usando Richiama.

  4. Nell'azione Richiama specificare le informazioni seguenti:

    Proprietà valore Note
    Metodo POST Metodo HTTP.
    URI endpoint_uri Fare clic nella casella URI e quindi in Parametri selezionare endpoint_uri.
    Intestazioni Content-Type con valore application/json
    Intestazioni Authorization con valore concat('Bearer ', body('Authorize')['access_token']) Per immettere questa espressione, fare clic nella casella Intestazioni. Nelle opzioni visualizzate selezionare l'editor di espressioni (icona della formula).
  5. Fare clic nella casella Corpo e nelle opzioni visualizzate selezionare l'editor di espressioni (icona della formula) per immettere l'espressione seguente:

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    Suggerimento

    Il payload precedente corrisponde a una distribuzione del modello. Se si usa una distribuzione del componente della pipeline, adattare il formato in base alle aspettative degli input della pipeline. Altre informazioni su come strutturare l'input nelle chiamate REST sono disponibili in Creare processi e dati di input per gli endpoint batch (REST).

    L'esempio seguente include un'azione Richiama di esempio:

    Screenshot che mostra un'azione Richiama di esempio nel flusso di lavoro dell'app per la logica.

    Nota

    L'azione Richiama attiva il processo batch, ma non ne attende il completamento. Per impostazione predefinita, App per la logica di Azure non è configurato per applicazioni a esecuzione prolungata. Se è necessario attendere il completamento del processo, è consigliabile eseguire gli endpoint batch da Azure Data Factory.

  6. Al termine, salvare il flusso di lavoro.

    Il flusso di lavoro dell'app per la logica è pronto per l'esecuzione e viene attivato automaticamente ogni volta che viene creato un nuovo file nel percorso indicato.

  7. Per verificare che l'app abbia ricevuto correttamente un evento, controllare la cronologia delle esecuzioni dell'app:

    Screenshot che mostra la cronologia delle esecuzioni per il flusso di lavoro dell'app per la logica.

Passaggi successivi