Prospettiva di Azure Well-Architected Framework nel servizio Azure OpenAI

Il servizio OpenAI di Azure fornisce all'API REST l'accesso a modelli di linguaggio di grandi dimensioni (LLMs) OpenAI, aggiungendo funzionalità di rete e sicurezza di Azure. Questo articolo fornisce raccomandazioni sull'architettura che consentono di prendere decisioni informate quando si usa Azure OpenAI come parte dell'architettura del carico di lavoro. Le linee guida si basano sui pilastri di Azure Well-Architected Framework.

Importante

Come usare questa guida

Ogni sezione include un elenco di controllo di progettazione che presenta le aree di interesse dell'architettura insieme alle strategie di progettazione localizzate nell'ambito della tecnologia.

Sono incluse anche raccomandazioni sulle funzionalità tecnologiche che possono aiutare a materializzare tali strategie. Le raccomandazioni non rappresentano un elenco completo di tutte le configurazioni disponibili per Azure OpenAI e le relative dipendenze. Vengono invece elencate le raccomandazioni principali mappate alle prospettive di progettazione. Usare i consigli per creare il modello di verifica o ottimizzare gli ambienti esistenti.

Architettura di base che illustra le raccomandazioni principali: architettura di riferimento end-to-end openAI di base per le chat.

Ambito della tecnologia

Questa revisione è incentrata esclusivamente su OpenAI di Azure.

Affidabilità

Lo scopo del pilastro Affidabilità è fornire funzionalità continue creando una resilienza sufficiente e la possibilità di recuperare rapidamente da errori.

I principi di progettazione dell'affidabilità forniscono una strategia di progettazione di alto livello applicata per singoli componenti, flussi di sistema e il sistema nel suo complesso.

Elenco di controllo della progettazione

Avviare la strategia di progettazione in base all'elenco di controllo di revisione della progettazione per l'affidabilità. Determinare la rilevanza per i requisiti aziendali. Estendere la strategia per includere altri approcci in base alle esigenze.

  • Resilienza: scegliere l'opzione di distribuzione appropriata della velocità effettiva con pagamento in base al consumo o con provisioning in base al caso d'uso. Poiché la capacità riservata aumenta la resilienza, scegliere la velocità effettiva con provisioning per le soluzioni di produzione. L'approccio con pagamento in base al consumo è ideale per ambienti di sviluppo/test.

  • Ridondanza: aggiungere i gateway appropriati davanti alle distribuzioni openAI di Azure. Il gateway deve avere la possibilità di resistere a errori temporanei, ad esempio la limitazione delle richieste e l'indirizzamento a più istanze di OpenAI di Azure. Prendere in considerazione il routing alle istanze in aree diverse per creare ridondanza a livello di area.

  • Resilienza: se si usa la velocità effettiva con provisioning, è consigliabile distribuire anche un'istanza con pagamento in base al consumo per gestire l'overflow. È possibile instradare le chiamate all'istanza con pagamento in base al consumo tramite il gateway quando il modello di velocità effettiva con provisioning è limitato.

  • Resilienza: monitorare l'utilizzo della capacità per assicurarsi di non superare i limiti di velocità effettiva. Esaminare regolarmente l'utilizzo della capacità per ottenere previsioni più accurate e prevenire interruzioni del servizio a causa di vincoli di capacità.

  • Resilienza: seguire le indicazioni per ottimizzare i file di dati di grandi dimensioni e importare i dati da un archivio BLOB di Azure. I file di grandi dimensioni, 100 MB o superiori, possono diventare instabili quando vengono caricati tramite moduli multipart perché le richieste sono atomiche e non possono essere ritentate o riprese.

  • Ripristino: definire una strategia di ripristino che includa un piano di ripristino per i modelli ottimizzati e per i dati di training caricati in Azure OpenAI. Poiché Azure OpenAI non dispone di failover automatico, è necessario progettare una strategia che includa l'intero servizio e tutte le dipendenze, ad esempio l'archiviazione che contiene i dati di training.

Consigli

Elemento consigliato Vantaggio
Monitorare i limiti delle tariffe per il pagamento in base al consumo: se si usa l'approccio con pagamento in base al consumo, gestire i limiti di frequenza per le distribuzioni del modello e monitorare l'utilizzo dei token al minuto (TPM) e delle richieste al minuto (RPM). Queste importanti informazioni sulla velocità effettiva forniscono informazioni necessarie per assicurarsi di assegnare un TPM sufficiente dalla quota per soddisfare la domanda per le distribuzioni.

L'assegnazione di una quota sufficiente impedisce la limitazione delle chiamate ai modelli distribuiti.
Monitorare l'utilizzo gestito del provisioning per la velocità effettiva con provisioning: se si usa il modello di pagamento con velocità effettiva con provisioning, monitorare l'utilizzo gestito del provisioning. È importante monitorare l'utilizzo gestito del provisioning per assicurarsi che non superi il 100%, per impedire la limitazione delle chiamate ai modelli distribuiti.
Abilitare la funzionalità di quota dinamica: se il budget del carico di lavoro lo supporta, eseguire l'overprovisioning abilitando la quota dinamica nelle distribuzioni del modello. La quota dinamica consente alla distribuzione di usare una capacità maggiore rispetto alla quota normalmente, purché la capacità disponibile sia disponibile dal punto di vista di Azure. La capacità di quota aggiuntiva può potenzialmente impedire la limitazione indesiderata.
Ottimizzare i filtri di contenuto: ottimizzare i filtri di contenuto per ridurre al minimo i falsi positivi dai filtri eccessivamente aggressivi. I filtri del contenuto bloccano le richieste o i completamenti in base a un'analisi dei rischi opaca. Assicurarsi che i filtri di contenuto siano ottimizzati per consentire l'utilizzo previsto per il carico di lavoro.

Sicurezza

Lo scopo del pilastro Sicurezza è fornire garanzie di riservatezza, integrità e disponibilità al carico di lavoro.

I principi di progettazione in ambito sicurezza forniscono una strategia di progettazione di alto livello per raggiungere questi obiettivi, applicando approcci alla progettazione tecnica che riguarda Azure OpenAI.

Elenco di controllo della progettazione

Avviare la strategia di progettazione in base all'elenco di controllo per la revisione della progettazione in ambito sicurezza e identificare vulnerabilità e controlli per migliorare la postura di sicurezza. Esaminare quindi la baseline di sicurezza di Azure per Azure OpenAI. Infine, estendere la strategia per includere altri approcci in base alle esigenze.

  • Proteggere la riservatezza: Se si caricano dati di training in Azure OpenAI, usare chiavi gestite dal cliente per la crittografia dei dati, implementare una strategia a rotazione delle chiavi ed eliminare i dati di training, convalida e i risultati del training. Se si usa un archivio dati esterno per i dati di training, seguire le procedure consigliate per la sicurezza di tale archivio. Ad esempio, per Archiviazione BLOB di Azure, usare chiavi gestite dal cliente per la crittografia e implementare una strategia di rotazione delle chiavi. Usare l'accesso basato sull’identità gestita, implementare un perimetro di rete usando endpoint privati e abilitare i log di accesso.

  • Proteggere la riservatezza: Proteggersi dall'esfiltrazione di dati limitando gli URL in uscita a cui le risorse OpenAI di Azure possono accedere.

  • Proteggere l'integrità: Implementare i controlli di accesso per autenticare e autorizzare l'accesso degli utenti al sistema usando il principio dei privilegi minimi e impiegando singole identità anziché chiavi.

  • Proteggere l'integrità: Implementare il rilevamento del rischio di jailbreak per proteggere le distribuzioni del modello linguistico da attacchi prompt injection.

  • Proteggere la disponibilità: Usare i controlli di sicurezza per evitare attacchi che potrebbero esaurire le quote di utilizzo del modello. È possibile configurare i controlli per isolare il servizio su una rete. Se il servizio deve essere accessibile da Internet, valutare l'uso di un gateway per bloccare l'uso improprio sospetto tramite il routing o la limitazione.

Consigli

Elemento consigliato Vantaggio
Proteggere le chiavi: Se l'architettura richiede l'autenticazione basata su chiave OpenAI di Azure, archiviare tali chiavi in Azure Key Vault, e non nel codice dell'applicazione. Separare i segreti dal codice archiviandoli in Key Vault ne riduce la probabilità di fuga. La separazione agevola anche la gestione centrale dei segreti, semplificando le responsabilità come la rotazione delle chiavi.
Limitare l’accesso: Disabilitare l'accesso pubblico ad Azure OpenAI a meno che il carico di lavoro non lo richieda. Creare endpoint privati se ci si connette dai consumer di una rete virtuale di Azure. Il controllo dell'accesso ad Azure OpenAI consente di impedire attacchi da utenti non autorizzati. L'uso di endpoint privati garantisce che il traffico di rete rimanga privato tra l'applicazione e la piattaforma.
Microsoft Entra ID: Usare Microsoft Entra ID per l'autenticazione e per autorizzare l'accesso ad Azure OpenAI tramite il controllo degli accessi in base al ruolo. Disabilitare l'autenticazione locale in Servizi di Azure AI e impostare disableLocalAuth su true. Concedere a identità che eseguono completamenti o generazione di immagini il ruolo utente Servizi cognitivi di OpenAI. Concedere a pipeline di automazione del modello e all’accesso ad hoc per l'analisi scientifica dei dati un ruolo come quello di Collaboratore Servizi cognitivi di OpenAI. L'uso di Microsoft Entra ID centralizza il componente di gestione delle identità ed elimina l'uso delle chiavi API. L'uso del controllo degli accessi in base al ruolo con Microsoft Entra ID garantisce che gli utenti o i gruppi dispongano delle esatte autorizzazioni necessarie per svolgere il proprio lavoro. Questo tipo di controllo di accesso dettagliato non è possibile con le chiavi API OpenAI di Azure.
Usare chiavi gestite dal cliente: Usare chiavi gestite dal cliente per modelli ottimizzati e dati di training caricati in Azure OpenAI. L'uso delle chiavi gestite dal cliente offre una maggiore flessibilità per creare, ruotare, disabilitare e revocare i controlli di accesso.
Protezione contro gli attacchi jailbreak: Usare Studio Sicurezza dei contenuti di Azure AI per rilevare i rischi di jailbreak. Rilevare i tentativi di jailbreak per identificare e bloccare le richieste che tentano di bypassare i meccanismi di sicurezza delle distribuzioni OpenAI di Azure.

Ottimizzazione dei costi

L'ottimizzazione dei costi è incentrata sul rilevamento dei modelli di spesa, sulla definizione delle priorità degli investimenti in aree critiche e sull'ottimizzazione in altri casi in modo da soddisfare il budget dell'organizzazione rispettando i requisiti aziendali.

Leggere i principi di progettazione di Ottimizzazione costi per apprendere gli approcci per raggiungere tali obiettivi e i compromessi necessari nelle scelte tecniche di progettazione correlate ad Azure OpenAI.

Elenco di controllo della progettazione

Avviare la strategia di progettazione in base all'elenco di controllo della revisione della progettazione per l'ottimizzazione dei costi per gli investimenti. Ottimizzare la progettazione in modo che il carico di lavoro sia allineato al budget allocato. La progettazione deve usare le funzionalità di Azure appropriate, monitorare gli investimenti e trovare opportunità per ottimizzare nel tempo.

  • Gestione costi: sviluppare il modello di costo, considerando le dimensioni delle richieste. Comprendere le dimensioni di input e risposta delle richieste e il modo in cui il testo viene convertito in token consente di creare un modello di costo praticabile.

  • Ottimizzazione dell'utilizzo: iniziare con i prezzi con pagamento in base al consumo per Azure OpenAI fino a quando l'utilizzo dei token non è prevedibile.

  • Ottimizzazione della velocità: quando l'utilizzo dei token è sufficientemente elevato e prevedibile per un periodo di tempo, usare il modello di determinazione prezzi della velocità effettiva con provisioning per ottimizzare meglio i costi.

  • Ottimizzazione dell'utilizzo: prendere in considerazione i prezzi e le funzionalità del modello quando si scelgono i modelli. Iniziare con modelli meno costosi per attività meno complesse, ad esempio la generazione di testo o le attività di completamento. Per attività più complesse, ad esempio la traduzione della lingua o la comprensione del contenuto, è consigliabile usare modelli più avanzati. Prendere in considerazione diverse funzionalità del modello e limiti di utilizzo massimo dei token quando si sceglie un modello appropriato per casi d'uso come incorporamento di testo, generazione di immagini o scenari di trascrizione. Selezionando attentamente il modello più adatto alle proprie esigenze, è possibile ottimizzare i costi mantenendo al tempo stesso le prestazioni desiderate dell'applicazione.

  • Ottimizzazione dell'utilizzo: usare i vincoli di limitazione dei token offerti dalle chiamate API, ad esempio max_tokens e n, che indicano il numero di completamenti da generare.

  • Ottimizzazione dell'utilizzo: ottimizzare i punti di interruzione dei prezzi di Azure OpenAI, ad esempio l'ottimizzazione e i punti di interruzione del modello, ad esempio la generazione di immagini. Poiché l'ottimizzazione viene addebitata all'ora, usare il tempo disponibile per ogni ora per migliorare i risultati di ottimizzazione evitando di passare al periodo di fatturazione successivo. Analogamente, il costo per la generazione di 100 immagini corrisponde al costo per 1 immagine. Massimizzare i punti di interruzione dei prezzi per il vantaggio.

  • Ottimizzazione dell'utilizzo: rimuovere i modelli ottimizzati non usati quando non vengono più utilizzati per evitare di incorrere in costi di hosting continui.

  • Regolare l'utilizzo: ottimizzare la lunghezza di input e risposta del prompt. Le richieste più lunghe aumentano i costi usando più token. Tuttavia, i prompt che mancano un contesto sufficiente non aiutano i modelli a produrre buoni risultati. Creare richieste concise che forniscono contesto sufficiente per il modello per generare una risposta utile. Assicurarsi anche di ottimizzare il limite della lunghezza della risposta.

  • Efficienza dei costi: richieste batch laddove possibile per ridurre al minimo il sovraccarico per chiamata, che può ridurre i costi complessivi. Assicurarsi di ottimizzare le dimensioni del batch.

  • Efficienza dei costi: poiché i modelli hanno costi di ottimizzazione diversi, prendere in considerazione questi costi se la soluzione richiede l'ottimizzazione.

  • Monitorare e ottimizzare: configurare un sistema di rilevamento dei costi che monitora l'utilizzo del modello. Usare queste informazioni per informare le scelte del modello e le dimensioni delle richieste.

Consigli

Elemento consigliato Vantaggio
Progettare il codice client per impostare i limiti: i client personalizzati devono usare le funzionalità limite dell'API di completamento OpenAI di Azure, ad esempio il limite massimo per il numero di token per modello (max_tokens) o il numero di completamenti da generare (n). L'impostazione dei limiti garantisce che il server non producano più delle esigenze del client. L'uso delle funzionalità API per limitare l'utilizzo allinea l'utilizzo del servizio alle esigenze del client. Ciò consente di risparmiare denaro assicurandosi che il modello non generi una risposta eccessivamente lunga che utilizza più token di quanto necessario.
Monitorare l'utilizzo con pagamento in base al consumo: se si usa l'approccio con pagamento in base al consumo, monitorare l'utilizzo di TPM e RPM. Usare queste informazioni per informare le decisioni di progettazione dell'architettura, ad esempio i modelli da usare e ottimizzare le dimensioni delle richieste. Il monitoraggio continuo di TPM e RPM offre metriche pertinenti per ottimizzare il costo dei modelli OpenAI di Azure. È possibile associare questo monitoraggio con le funzionalità del modello e i prezzi del modello per ottimizzare l'utilizzo del modello. È anche possibile usare questo monitoraggio per ottimizzare le dimensioni dei prompt.
Monitorare l'utilizzo della velocità effettiva con provisioning: se si usa la velocità effettiva con provisioning, monitorare l'utilizzo gestito dal provisioning per assicurarsi di non sottoutilizzare la velocità effettiva con provisioning acquistata. Il monitoraggio continuo dell'utilizzo gestito del provisioning offre le informazioni necessarie per capire se si sta sottoutilizzando la velocità effettiva con provisioning.
Gestione costi: usare le funzionalità di gestione dei costi con OpenAI per monitorare i costi, impostare budget per gestire i costi e creare avvisi per notificare agli stakeholder rischi o anomalie. Il monitoraggio dei costi, l'impostazione dei budget e l'impostazione degli avvisi forniscono la governance con i processi di responsabilità appropriati.

Eccellenza operativa

L'eccellenza operativa si concentra principalmente sulle procedure per le procedure di sviluppo, l'osservabilità e la gestione del rilascio.

I principi di progettazione dell'eccellenza operativa forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi in base ai requisiti operativi del carico di lavoro.

Elenco di controllo della progettazione

Avviare la strategia di progettazione in base all'elenco di controllo della revisione della progettazione per l'eccellenza operativa. Questo elenco di controllo definisce i processi per l'osservabilità, il test e la distribuzione correlati ad Azure OpenAI.

  • Impostazioni cultura di Azure DevOps: assicurarsi che la distribuzione delle istanze OpenAI di Azure nei vari ambienti, ad esempio sviluppo, test e produzione. Assicurarsi di disporre di ambienti per supportare l'apprendimento continuo e la sperimentazione durante il ciclo di sviluppo.

  • Osservabilità: monitorare, aggregare e visualizzare le metriche appropriate.

  • Osservabilità: se la diagnostica OpenAI di Azure non è sufficiente per le proprie esigenze, prendere in considerazione l'uso di un gateway come Azure Gestione API davanti ad Azure OpenAI per registrare le richieste in ingresso e le risposte in uscita, se consentite. Queste informazioni consentono di comprendere l'efficacia del modello per le richieste in ingresso.

  • Distribuire con sicurezza: usare l'infrastruttura come codice (IaC) per distribuire Azure OpenAI, distribuzioni di modelli e altre infrastrutture necessarie per ottimizzare i modelli.

  • Eseguire la distribuzione con fiducia: seguire le procedure LLMOps (Large Language Model Operations) per rendere operativa la gestione delle VM OpenAI di Azure, tra cui la distribuzione, l'ottimizzazione e la progettazione dei prompt.

  • Automatizzare l'efficienza: se si usa l'autenticazione basata su chiave, implementare una strategia di rotazione delle chiavi automatizzata.

Consigli

Elemento consigliato Vantaggio
Abilitare e configurare Diagnostica di Azure: abilitare e configurare la diagnostica per il servizio OpenAI di Azure. La diagnostica raccoglie e analizza metriche e log, consentendo di monitorare la disponibilità, le prestazioni e il funzionamento di Azure OpenAI.

Efficienza delle prestazioni

L'efficienza delle prestazioni riguarda la gestione dell'esperienza utente anche quando si verifica un aumento del carico gestendo la capacità. La strategia include il ridimensionamento delle risorse, l'identificazione e l'ottimizzazione dei potenziali colli di bottiglia e l'ottimizzazione delle prestazioni massime.

I principi di progettazione dell'efficienza delle prestazioni forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi di capacità rispetto all'utilizzo previsto.

Elenco di controllo della progettazione

Avviare la strategia di progettazione in base all'elenco di controllo della revisione della progettazione per l'efficienza delle prestazioni per definire una baseline basata su indicatori di prestazioni chiave per i carichi di lavoro OpenAI di Azure.

  • Capacità: stimare le esigenze di elasticità dei consumatori. Identificare il traffico ad alta priorità che richiede risposte sincrone e traffico con priorità bassa che può essere asincrono e in batch.

  • Capacità: requisiti di consumo dei token benchmark in base alle richieste stimate dei consumer. Prendere in considerazione l'uso dello strumento di benchmarking OpenAI di Azure per convalidare la velocità effettiva se si usano distribuzioni PTU (Provisioned Throughput Unit).

  • Capacità: usare la velocità effettiva con provisioning per i carichi di lavoro di produzione. La velocità effettiva con provisioning offre memoria e calcolo dedicati, capacità riservata e latenza massima coerente per la versione del modello specificata. L'offerta con pagamento in base al consumo può risentire di problemi di prossimità rumorosi, ad esempio una maggiore latenza e una limitazione nelle aree in uso elevato. Inoltre, l'approccio con pagamento in base al consumo non offre capacità garantita.

  • Capacità: aggiungere i gateway appropriati davanti alle distribuzioni OpenAI di Azure. Assicurarsi che il gateway possa instradarsi a più istanze nella stessa area o in aree diverse.

  • Capacità: allocare PTU per coprire l'utilizzo stimato e integrare queste PTU con una distribuzione TPM per gestire l'elasticità al di sopra di tale limite. Questo approccio combina la velocità effettiva di base con la velocità effettiva elastica per garantire l'efficienza. Analogamente ad altre considerazioni, questo approccio richiede un'implementazione del gateway personalizzata per instradare le richieste alla distribuzione TPM quando vengono raggiunti i limiti PTU.

  • Capacità: inviare richieste ad alta priorità in modo sincrono. Accoda le richieste con priorità bassa e le invia in batch quando la domanda è bassa.

  • Capacità: selezionare un modello allineato ai requisiti di prestazioni, considerando il compromesso tra la complessità della velocità e dell'output. Le prestazioni del modello possono variare in modo significativo in base al tipo di modello scelto. I modelli progettati per offrire tempi di risposta più rapidi, che possono essere utili per le applicazioni che richiedono interazioni rapide. Al contrario, i modelli più sofisticati potrebbero offrire output di qualità superiore a scapito di un maggiore tempo di risposta.

  • Ottenere prestazioni: per applicazioni come chatbot o interfacce conversazionali, è consigliabile implementare lo streaming. Lo streaming può migliorare le prestazioni percepite delle applicazioni OpenAI di Azure offrendo risposte agli utenti in modo incrementale, migliorando l'esperienza utente.

  • Ottenere prestazioni: determinare quando usare l'ottimizzazione fine prima di eseguire il commit per l'ottimizzazione. Anche se esistono casi d'uso validi per l'ottimizzazione, ad esempio quando le informazioni necessarie per orientare il modello sono troppo lunghe o complesse da adattare al prompt, assicurarsi che gli approcci di generazione avanzata e recupero della generazione aumentata non funzionino o siano incredibilmente più costosi.

  • Ottenere prestazioni: prendere in considerazione l'uso di distribuzioni di modelli dedicate per gruppo di consumer per fornire l'isolamento dell'utilizzo per modello che può contribuire a evitare vicini rumorosi tra i gruppi di consumer.

Consigli

Non sono disponibili configurazioni consigliate per l'efficienza delle prestazioni per Azure OpenAI.

Criteri di Azure

Azure offre un set completo di criteri predefiniti correlati ad Azure OpenAI e alle relative dipendenze. È possibile controllare alcune delle raccomandazioni precedenti tramite Criteri di Azure. Prendere in considerazione le definizioni di criteri seguenti:

Queste definizioni di Criteri di Azure sono anche raccomandazioni sulle procedure consigliate per la sicurezza di Azure Advisor per Azure OpenAI.

Passaggi successivi

Considerare gli articoli seguenti come risorse che illustrano le raccomandazioni evidenziate in questo articolo.