Condividi tramite


Operazioni del carico di lavoro di intelligenza artificiale in Azure

Quando si compilano e si passano i carichi di lavoro di intelligenza artificiale all'ambiente di produzione, è importante che i team operativi siano completamente attrezzati per supportare questi carichi di lavoro come qualsiasi altro carico di lavoro di produzione. Poiché i team operativi potrebbero avere un'esperienza limitata con le tecnologie di IA, è essenziale eseguirne il training su queste tecnologie e integrare i carichi di lavoro di intelligenza artificiale nei flussi di lavoro all'inizio del processo. Riunire le operazioni e i team di dati all'inizio dello sviluppo del carico di lavoro di intelligenza artificiale per favorire la comprensione reciproca dei processi di ogni team. Questa collaborazione anticipata è fondamentale perché entrambi i team devono lavorare a stretto contatto per supportare efficacemente il carico di lavoro di intelligenza artificiale. I team di dati dipendono dai team operativi per fornire segnali di integrità affidabili e avvisi interattivi. I team operativi dipendono dai team di dati per diagnosticare potenziali problemi e risolvere i problemi effettivi in base agli standard operativi. Questa partnership contribuisce a garantire prestazioni di sistema uniformi ed efficienti.

Questa guida fornisce consigli su come sviluppare meccanismi operativi e procedure per migliorare il supporto per i carichi di lavoro di intelligenza artificiale. Sottolinea una collaborazione efficiente tra le operazioni e i team di dati.

Consigli

Ecco il riepilogo delle raccomandazioni fornite in questo articolo.

Suggerimento Descrizione
Monitorare tutti gli aspetti del carico di lavoro. Anche se molti problemi generali di monitoraggio e osservabilità si applicano anche ai carichi di lavoro di intelligenza artificiale, esistono considerazioni specifiche che è necessario eseguire per garantire che l'intero carico di lavoro venga monitorato in modo appropriato in qualsiasi momento. Per creare la strategia di monitoraggio e osservabilità, potrebbe essere necessario lavorare in team diversi per ottenere le competenze appropriate e coprire tutte le modalità e le metriche pertinenti.

Estendere la piattaforma di osservabilità
Applicare procedure di distribuzione sicure al carico di lavoro di intelligenza artificiale. Eseguire i passaggi per garantire il massimo livello di sicurezza per i dati di produzione sensibili e allineare gli approcci di distribuzione con requisiti di tempo di inattività zero. Usare gli strumenti appropriati, se necessario, e mettere l'accento sulla mancata reinvenzione di strumenti e processi già esistenti. Spesso sarà possibile usare i servizi stabiliti per ottenere un elevato livello di efficienza, abilitando al tempo tempo anche distribuzioni sicure.

Includere i componenti del carico di lavoro di intelligenza artificiale nelle procedure di distribuzione sicure
Adottare le procedure DevOps per i test e l'automazione. Applicare le procedure DevOps durante la compilazione, la distribuzione e l'uso del carico di lavoro di intelligenza artificiale nell'ambiente di produzione. Il carico di lavoro deve consentire l'osservabilità e il test con input utente reale nell'ambiente di produzione. Ciò può essere fornito in modo sicuro solo se un processo DevOps sicuro e l'automazione semplificata consentono distribuzioni rapide, correzione degli errori e test A/B.

Supporto dei test nell'ambiente di produzione
Automatizzare le procedure operative quando possibile
Adottare le procedure DevOps
Documentare lo stato di avanzamento. Creare buone abitudini di documentazione fin dall'inizio per consentire l'acquisizione di decisioni strategiche, cronologia delle modifiche e informazioni chiave sui dati usati dal carico di lavoro.

Adottare procedure consigliate per la documentazione

Estendere la piattaforma di osservabilità

Per raggiungere l'eccellenza operativa, è essenziale un'osservabilità affidabile. Quando l'organizzazione adotta tecnologie di intelligenza artificiale, è fondamentale migliorare la piattaforma di osservabilità per garantire un monitoraggio completo dell'integrità del carico di lavoro. Le organizzazioni nuove all'IA potrebbero non avere competenze in Big Data, data science e DataOps all'interno del team operativo. Pertanto, la formazione sulle procedure consigliate operative è un primo passo importante per migliorare la piattaforma di osservabilità. Per questo motivo, le operazioni e i team di dati devono collaborare per determinare le modalità corrette di monitoraggio e metriche da acquisire e analizzare.

Per valutare l'integrità di un modello, è necessaria una panoramica completa delle metriche di qualità specifiche. Le misurazioni di qualità in genere includono metriche come aggiornamento del modello, correttezza dell'output e latenza di risposta. È tuttavia necessario collaborare con data scientist e tecnici per stabilire le metriche specifiche che definiscono la qualità del carico di lavoro. La natura non deterministica dei carichi di lavoro di intelligenza artificiale rende il monitoraggio vigile della qualità particolarmente importante perché tali misurazioni possono cambiare in modo imprevisto in qualsiasi momento dopo la distribuzione. Le raccomandazioni per l'osservabilità includono:

  • Collaborare con data scientist e tecnici per determinare le metriche di qualità.

  • Compilare o estendere i dashboard per valutare l'integrità complessiva del carico di lavoro. Questo approccio deve includere metriche di disponibilità dei componenti e metriche di qualità.

  • Implementare avvisi di disponibilità e qualità ben progettati che i team operativi possono comprendere e intervenire.

  • Codificare le procedure operative standard che definiscono il modo in cui i team operativi rispondono agli avvisi di qualità, ad esempio l'uso dei team di dati per analizzare e correggere potenziali malfunzionamenti.

  • Prestare particolare attenzione alle metriche di utilizzo perché può richiedere un utilizzo intensivo per eseguire carichi di lavoro di intelligenza artificiale. I costi possono aumentare rapidamente se il team del carico di lavoro non arresta, ridimensiona o dealloca le risorse quando non sono in uso. Le operazioni consentono di garantire che i costi rimangano entro i parametri previsti monitorando l'utilizzo.

Includere i componenti del carico di lavoro di intelligenza artificiale nelle procedure di distribuzione sicure

I carichi di lavoro di intelligenza artificiale dipendono dai dati di produzione, che spesso includono informazioni riservate. È quindi importante mantenere il massimo livello di sicurezza per questi carichi di lavoro. Per proteggere i dati, estendere le procedure di distribuzione sicure per includere tutto il codice correlato ai componenti di intelligenza artificiale del carico di lavoro. Se sono previsti requisiti di tempo di inattività zero per il carico di lavoro, progettare di conseguenza l'approccio alla distribuzione per i componenti di intelligenza artificiale.

  • Per gli endpoint di inferenza, usare distribuzioni blu-verde o canary con o senza mirroring del traffico, a seconda del modello di distribuzione.

  • Per la gestione degli indici, usare un modello di distribuzione side-by-side con aggiornamenti alias per tagliare il traffico.

  • Per il codice di orchestrazione, usare flag di funzionalità o distribuzioni blu-verde.

A seconda dell'applicazione, della piattaforma dati e della topologia di rete specifica, potrebbe essere necessario usare una soluzione gateway, ad esempio gateway app Azure lication o Frontdoor di Azure.

Strumenti

Azure Machine Learning supporta distribuzioni blu-verde in modo nativo con suddivisione del traffico predefinito.

Non fare lavoro inutile

Poiché gli endpoint di inferenza online sono essenzialmente microservizi, operano come componenti di carico di lavoro completamente autonomi con i propri dati e codice che servono una funzione specifica nel flusso di lavoro. Per questo motivo, considerare gli endpoint di inferenza online come altri microservizi critici con cicli di vita specifici. È possibile aggiornare singolarmente gli endpoint di inferenza online. Tuttavia, come gli altri microservizi in un carico di lavoro di dimensioni maggiori, devono collaborare senza problemi. Pertanto, è consigliabile classificare in ordine di priorità i test di integrazione quando si distribuiscono gli aggiornamenti. Assicurarsi che le distribuzioni non influiscano negativamente su altri servizi, ad esempio la gestione del modello e l'agente di orchestrazione. In alternativa, gli endpoint di inferenza batch sono spesso strettamente associati al calcolo dell'elaborazione del processo e sono inclusi nella pipeline di dati. In questi casi, considerarli come parte di una soluzione più grande anziché come microservizi.

Supporto dei test nell'ambiente di produzione

È probabile che i team operativi non progettino o eseguano test del carico di lavoro di intelligenza artificiale. Tuttavia, devono supportare i test del carico di lavoro di intelligenza artificiale tramite monitoraggio, avvisi e indagini perché i test sono necessari nell'ambiente di produzione. A causa della natura non deterministica dell'IA, è necessario testare in produzione per garantire che il carico di lavoro funzioni come previsto nel tempo. Il team operativo deve collaborare strettamente con il team del carico di lavoro per acquisire e diagnosticare in modo efficiente i risultati dei test anomali e in base agli standard operativi. Per garantire che le operazioni possano supportare i test e che i team del carico di lavoro possano eseguire test, entrambi i team devono allinearsi ai processi per collaborare. Il training sulle attività di test in ambienti non di produzione consente di acquisire familiarità con il team con l'ordine delle operazioni.

Automatizzare le procedure operative quando possibile

Automatizzare tutte le procedure operative correlate al carico di lavoro, inclusi i processi di monitoraggio, avvisi e test. L'automazione è una strategia principale per mantenere i processi ripetibili, efficienti e coerenti. Quando si progettano le strategie di automazione, richiedere la supervisione umana per le attività, ad esempio la diagnosi corretta delle incoerenze del modello e altri segnali di qualità. Questo è particolarmente vero per le versioni iniziali. I processi correlati alla gestione del modello sono nuovi per i team operativi, quindi il rischio di risposte non corretta ai segnali di qualità è più elevato in questa fase. Man mano che il carico di lavoro matura, potrebbe essere possibile usare l'automazione per identificare falsi allarmi con controlli di qualità ben progettati, ma arrivare a questo punto può essere un processo lungo e complesso.

Quando possibile, riutilizzare gli strumenti di automazione esistenti per eseguire nuove attività di automazione per il carico di lavoro di intelligenza artificiale. Ad esempio, se si usa già Azure Pipelines o GitHub Workflow, continuare a usarli per distribuire il codice di orchestrazione anziché usare uno strumento separato. Tuttavia, evitare l'over engineering nel tentativo di usare un solo strumento di automazione. Se alcune attività o processi non sono adatte allo strumento scelto, scegliere uno strumento più appropriato invece di creare una soluzione personalizzata che aggiunge complessità non necessarie.

Nota

Per supportare completamente il carico di lavoro, sono necessari molti ruoli e tecnologie intersecanti. I team dei dati, dell'infrastruttura, della sicurezza e delle operazioni dipendono dall'automazione in qualche misura. Usare il minor numero possibile di strumenti e standardizzarli per mantenere la strategia di automazione gestibile e più facile da eseguire.

Adottare le procedure DevOps

All'inizio dello sviluppo del carico di lavoro, standardizzare l'uso delle procedure DevOps nei processi di sviluppo. Per tutti gli ambienti oltre agli ambienti sandbox, gli standard definiti e applicati rigorosamente devono governare l'intero ciclo di vita dello sviluppo. Applicare questi standard vietando rigorosamente qualsiasi attività di distribuzione manuale. Tutte le distribuzioni, che si tratti di aggiornamenti, patch o nuove distribuzioni di risorse, devono essere eseguite tramite una pipeline di integrazione continua e distribuzione continua che rispetta le procedure di distribuzione sicure. Le buone procedure di igiene devOps devono includere:

  • Controllo della versione: usare il controllo della versione per tutti gli asset di codice il più possibile. Il controllo della versione è un elemento fondamentale di DevOps e buone procedure di gestione delle modifiche ed è fondamentale per una collaborazione senza problemi. Applicare il controllo della versione ai pacchetti di libreria, inclusi SDK e immagini del contenitore. Essere coerenti nell'uso di una versione specifica dei pacchetti di libreria nel ciclo di vita dello sviluppo software (SDLC). Versioni diverse di librerie come XGBoost o scikit-learn in vari ambienti di sviluppo possono causare variazioni nel comportamento del carico di lavoro. Lo stesso vale per il controllo delle versioni del modello. Assicurarsi che le versioni del modello siano coerenti in SDLC in modo da non testare una versione del modello in un ambiente di preproduzione e rilasciare una versione diversa nell'ambiente di produzione.

  • Schema di denominazione delle versioni semplice: usare uno schema di denominazione delle versioni semplice per assicurarsi di usare sempre la versione approvata più di recente di un determinato asset. Gli asset specifici dell'intelligenza artificiale possono includere:

    • Codice del notebook.
    • Codice dell'agente di orchestrazione.
    • Codice del processo di elaborazione dati.
    • Codice del processo di Machine Learning.
    • Il modello.
  • Strumenti che è possibile rendere operativi: alcuni strumenti sono ideali per la sperimentazione, ma non sono progettati per l'operazionalizzazione. Questa limitazione può rendere difficile o impossibile integrarle nell'automazione operativa. Ad esempio, i notebook sono uno strumento valido per la sperimentazione e l'analisi esplorativa dei dati, ma non sono uno strumento valido per il lavoro di sviluppo della pipeline di produzione. Al termine della sperimentazione, estrarre la logica da tali strumenti e inserirla in un pacchetto Python che è possibile usare per il codice del processo.

Adottare procedure consigliate per la documentazione

Le buone abitudini di documentazione sono importanti per tutti i tipi di carichi di lavoro. La complessità dei carichi di lavoro di intelligenza artificiale rende queste abitudini ancora più importanti. Assicurarsi di disporre di un repository specifico del team del carico di lavoro in cui la documentazione viene archiviata in modo sicuro e controllata dalla versione. Analogamente ad altri carichi di lavoro, è consigliabile documentare le informazioni standard. Queste informazioni standard includono tutti gli strumenti usati nel carico di lavoro, le configurazioni di sicurezza, le progettazioni di rete e le guide alla configurazione. Prendere in considerazione la documentazione delle informazioni sul carico di lavoro specifiche dell'intelligenza artificiale seguenti:

  • Informazioni sulla gestione dell'indice dati di training e di base del modello: documentare le origini dati, il proprietario delle origini dati, la frequenza di aggiornamento e i processi di eliminazione delle distorsioni per stabilire come eseguire il training del modello e come gestire i dati di base.

  • Cronologia del processo di training: illustra in dettaglio come è arrivata la configurazione approvata corrente documentando il motivo per cui sono stati scelti iperparametri, temperature, pesi e altri parametri specifici. Includere le altre configurazioni testate e le modifiche comportamentali osservate durante il processo di training. Queste informazioni consentono di evitare la ripetizione di configurazioni non riuscite o inefficienti.

  • Informazioni sull'archivio funzionalità: documentare quali funzionalità hanno la migliore potenza predittiva e come è stata determinata.

  • Configurazione della workstation di data scientist: documentare accuratamente le configurazioni della workstation per semplificare il processo di onboarding per i data scientist. Specificare le librerie e le dipendenze necessarie per usare gli ambienti conda.

  • Informazioni sulla trasformazione dei dati: documentare l'intero processo dall'inizio alla fine quando si verifica la trasformazione dei dati. Documentare come vengono visualizzati i dati durante l'inserimento e come vengono presentati dopo la trasformazione.

Strumenti

Sfruttare i vantaggi della configurazione e della cronologia automatizzati per l'acquisizione tramite MLFlow e Machine Learning.

Passaggi successivi