Stimare e gestire la capacità di un servizio di ricerca

In Ricerca di intelligenza artificiale di Azure la capacità si basa su repliche e partizioni che possono essere ridimensionate al carico di lavoro. Le repliche sono copie del motore di ricerca. Le partizioni sono unità di archiviazione. Ogni nuovo servizio di ricerca inizia con uno, ma è possibile aggiungere o rimuovere repliche e partizioni in modo indipendente per supportare carichi di lavoro fluttuanti. L'aggiunta di capacità aumenta il costo dell'esecuzione di un servizio di ricerca.

Le caratteristiche fisiche delle repliche e delle partizioni, ad esempio velocità di elaborazione e I/O del disco, variano in base al livello di servizio. In un servizio di ricerca standard, le repliche e le partizioni sono più veloci e più grandi di quelle di un servizio di base.

La modifica della capacità non è istantanea. Possono essere necessarie fino a un'ora per commissionare o rimuovere le partizioni, in particolare per i servizi con grandi quantità di dati.

Quando si ridimensiona un servizio di ricerca, è possibile scegliere tra gli strumenti e gli approcci seguenti:

Concetti: unità di ricerca, repliche, partizioni

La capacità è espressa in unità di ricerca che possono essere allocate in combinazioni di partizioni e repliche.

Concetto Definizione
Unità di ricerca Un singolo incremento della capacità totale disponibile (36 unità). È anche l'unità di fatturazione per un servizio di ricerca di intelligenza artificiale di Azure. Per eseguire il servizio è necessario almeno un'unità.
Replica Istanze del servizio di ricerca, utilizzate principalmente per il bilanciamento di carico delle operazioni di query. Ogni replica ospita una copia di un indice. Se si allocano tre repliche, sono disponibili tre copie di un indice per le richieste di query di manutenzione.
Partizione Archiviazione fisica e I/O per operazioni di lettura/scrittura, ad esempio durante la ricompilazione o l'aggiornamento di un indice. Ogni partizione ha una sezione dell'indice totale. Se si allocano tre partizioni, l'indice viene diviso in terzi.

Esaminare la tabella partizioni e repliche per le possibili combinazioni che rimangono al di sotto del limite di 36 unità.

Quando aggiungere capacità

Inizialmente, un servizio viene allocato un livello minimo di risorse costituito da una partizione e una replica. Il livello scelto determina le dimensioni e la velocità della partizione e ogni livello è ottimizzato in base a un set di caratteristiche che soddisfano vari scenari. Se si sceglie un livello di fascia superiore, potrebbe essere necessario un numero inferiore di partizioni rispetto a se si usa S1. Una delle domande che è necessario rispondere tramite test auto-diretti è se una partizione più grande e più costosa produce prestazioni migliori rispetto a due partizioni più economiche in un servizio di cui è stato effettuato il provisioning a un livello inferiore.

Un singolo servizio deve disporre di risorse sufficienti per gestire tutti i carichi di lavoro (indicizzazione e query). Nessuno dei due carichi di lavoro viene eseguito in background. È possibile pianificare l'indicizzazione per i tempi in cui le richieste di query sono naturalmente meno frequenti, ma il servizio non assegna in altro modo priorità a un'attività rispetto a un'altra. Inoltre, una certa quantità di ridondanza riduce le prestazioni delle query quando i servizi o i nodi vengono aggiornati internamente.

Alcune linee guida per determinare se aggiungere capacità includono:

  • Soddisfare i criteri di disponibilità elevata per il contratto di servizio
  • La frequenza degli errori HTTP 503 aumenta
  • Sono previsti volumi di query di grandi dimensioni

Come regola generale, le applicazioni di ricerca tendono a richiedere più repliche rispetto alle partizioni, in particolare quando le operazioni del servizio sono distorte nei carichi di lavoro di query. Ogni replica è una copia dell'indice, consentendo al servizio di bilanciare il carico delle richieste su più copie. Tutto il bilanciamento del carico e la replica di un indice viene gestito da Ricerca di intelligenza artificiale di Azure ed è possibile modificare il numero di repliche allocate per il servizio in qualsiasi momento. È possibile allocare fino a 12 repliche in un servizio di ricerca Standard e 3 repliche in un servizio di ricerca Basic. L'allocazione delle repliche può essere eseguita dalla portale di Azure o da una delle opzioni a livello di codice.

Le partizioni aggiuntive sono utili per carichi di lavoro di indicizzazione intensivi. Le partizioni aggiuntive distribuiscono le operazioni di lettura/scrittura in un numero maggiore di risorse di calcolo.

Infine, gli indici più grandi richiedono più tempo per la query. Di conseguenza, si noterà che ogni aumento incrementale delle partizioni richiede un aumento delle repliche proporzionale ma più limitato. La complessità e il volume delle query influiscono sulla rapidità di esecuzione delle stesse.

Nota

L'aggiunta di più repliche o partizioni aumenta il costo dell'esecuzione del servizio e può introdurre lievi variazioni nella modalità di ordinamento dei risultati. Assicurarsi di controllare il calcolatore dei prezzi per comprendere le implicazioni di fatturazione dell'aggiunta di altri nodi. Il grafico seguente consente di fare riferimento incrociato al numero di unità di ricerca necessarie per una configurazione specifica. Per altre informazioni sull'impatto delle repliche aggiuntive sull'elaborazione delle query, vedere Ordinare i risultati.

Come modificare la capacità

Per aumentare o ridurre la capacità del servizio di ricerca, aggiungere o rimuovere partizioni e repliche.

  1. Accedere al portale di Azure e selezionare il servizio di ricerca.

  2. In Impostazioni aprire la pagina Ridimensiona per modificare repliche e partizioni.

    Lo screenshot seguente mostra un servizio Standard di cui è stato effettuato il provisioning con una replica e una partizione. La formula nella parte inferiore indica il numero di unità di ricerca usate (1). Se il prezzo unitario era di $ 100 (non un prezzo reale), il costo mensile di esecuzione di questo servizio sarebbe $ 100 in media.

    Pagina Ridimensiona che mostra i valori correnti

  3. Usare il dispositivo di scorrimento per aumentare o diminuire il numero di partizioni. Seleziona Salva.

    In questo esempio viene aggiunta una seconda replica e una seconda partizione. Si noti il numero di unità di ricerca; è ora quattro perché la formula di fatturazione è le repliche moltiplicate per le partizioni (2 x 2). Il raddoppio della capacità supera il doppio del costo di esecuzione del servizio. Se il costo unitario di ricerca era di $ 100, la nuova fattura mensile sarebbe ora di $ 400.

    Per i costi correnti per unità di ogni livello, visitare la pagina Prezzi.

    Aggiungere repliche e partizioni

  4. Dopo il salvataggio, è possibile controllare le notifiche per confermare che l'azione è riuscita.

    Salvare le modifiche

    Il completamento delle modifiche alla capacità può richiedere da 15 minuti fino a diverse ore. Non è possibile annullare dopo l'avvio del processo e non è disponibile alcun monitoraggio in tempo reale per le modifiche di replica e partizione. Tuttavia, il messaggio seguente rimane visibile mentre sono in corso le modifiche.

    Messaggio di stato nel portale

Nota

Dopo il provisioning di un servizio, non può essere aggiornato a un livello superiore. È necessario creare un servizio di ricerca a un nuovo livello e ricaricare gli indici. Per informazioni sul provisioning dei servizi, vedere Creare un servizio di ricerca di intelligenza artificiale di Azure nel portale.

Modalità di gestione delle richieste di scalabilità

Dopo la ricezione di una richiesta di scalabilità, il servizio di ricerca:

  1. Verifica se la richiesta è valida.
  2. Avvia il backup dei dati e delle informazioni di sistema.
  3. Verifica se il servizio è già in stato di provisioning (attualmente aggiungendo o eliminando repliche o partizioni).
  4. Avvia il provisioning.

Il ridimensionamento di un servizio può richiedere fino a 15 minuti o oltre un'ora, a seconda delle dimensioni del servizio e dell'ambito della richiesta. Il backup può richiedere alcuni minuti, a seconda della quantità di dati e del numero di partizioni e repliche.

I passaggi precedenti non sono completamente consecutivi. Ad esempio, il sistema avvia il provisioning quando può farlo in modo sicuro, che potrebbe essere mentre il backup è inattivo.

Errori durante il ridimensionamento

Il messaggio di errore "Le operazioni di aggiornamento del servizio non sono consentite in questo momento perché si sta elaborando una richiesta precedente" sono causate dalla ripetizione di una richiesta per ridurre o aumentare le prestazioni quando il servizio sta già elaborando una richiesta precedente.

Risolvere questo errore controllando lo stato del servizio per verificare lo stato del provisioning:

  1. Usare l'API REST di gestione, Azure PowerShell o l'interfaccia della riga di comando di Azure per ottenere lo stato del servizio.
  2. Chiamare get service (REST) o equivalente per PowerShell o l'interfaccia della riga di comando.
  3. Controllare la risposta per "provisioningState": "provisioning"

Se lo stato è "Provisioning", attendere il completamento della richiesta. Lo stato deve essere "Succeeded" o "Failed" prima che venga tentata un'altra richiesta. Non esiste alcuno stato per il backup. Il backup è un'operazione interna ed è improbabile che sia un fattore in qualsiasi interruzione di un esercizio di scalabilità.

Se il servizio di ricerca sembra essere bloccato in uno stato di provisioning, verificare la presenza di indici orfani inutilizzabili, senza volumi di query e senza aggiornamenti dell'indice. Un indice inutilizzabile può bloccare le modifiche apportate alla capacità del servizio. In particolare, cercare gli indici crittografati dalla chiave gestita dal cliente, le cui chiavi non sono più valide. È necessario eliminare l'indice o ripristinare le chiavi per riportare l'indice online e sbloccare l'operazione di scalabilità.

combinazioni di partizioni e repliche

Il grafico seguente si applica al livello Standard e superiore. Mostra tutte le possibili combinazioni di partizioni e repliche, soggette al massimo di 36 unità di ricerca per servizio.

1 partizione 2 partizioni 3 partizioni 4 partizioni 6 partizioni 12 partizioni
1 replica. 1 unità di archiviazione 2 unità di ricerca 3 unità di ricerca 4 unità di ricerca 6 unità di ricerca 12 unità di ricerca
2 repliche 2 unità di ricerca 4 unità di ricerca 6 unità di ricerca 8 unità di ricerca 12 unità di ricerca 24 unità di ricerca
3 repliche 3 unità di ricerca 6 unità di ricerca 9 unità di ricerca 12 unità di ricerca 18 unità di ricerca 36 unità di ricerca
4 repliche 4 unità di ricerca 8 unità di ricerca 12 unità di ricerca 16 unità di ricerca 24 unità di ricerca N/D
5 repliche 5 unità di ricerca 10 unità di ricerca 15 unità di ricerca 20 unità di ricerca 30 unità di ricerca N/D
6 repliche 6 unità di ricerca 12 unità di ricerca 18 unità di ricerca 24 unità di ricerca 36 unità di ricerca N/D
12 repliche 12 unità di ricerca 24 unità di ricerca 36 unità di ricerca N/D N/D N/D

I servizi di ricerca di base hanno un numero inferiore di unità di ricerca.

  • Nei servizi di ricerca creati prima del 3 aprile 2024, un servizio di ricerca di base può avere esattamente una partizione e fino a tre repliche, per un limite massimo di tre UR. Le repliche sono l'unica risorsa regolabile.

  • Nei servizi di ricerca creati dopo il 3 aprile 2024 nelle aree supportate, i servizi di base possono avere fino a tre partizioni e tre repliche. Il limite massimo di unità di streaming è nove per supportare un complemento completo di partizioni e repliche.

Per i servizi di ricerca in qualsiasi livello fatturabile, indipendentemente dalla data di creazione, sono necessarie almeno due repliche per la disponibilità elevata nelle query.

Per le tariffe di fatturazione per livello e valuta, vedere la pagina dei prezzi di Ricerca intelligenza artificiale di Azure.

Stimare la capacità usando un livello fatturabile

Archiviazione esigenze sono determinate dalle dimensioni degli indici che si prevede di compilare. Non ci sono solide euristiche o generalità che aiutano con le stime. L'unico modo per determinare le dimensioni di un indice è crearne uno. Le dimensioni sono basate sulla tokenizzazione e sugli incorporamenti e sull'abilitazione di suggerimenti, filtri e ordinamento oppure possono sfruttare i vantaggi della compressione vettoriale.

È consigliabile stimare in base a un livello fatturabile, Basic o superiore. Il livello Gratuito viene eseguito su risorse fisiche condivise da più clienti ed è soggetto a fattori oltre il controllo. Solo le risorse dedicate di un servizio di ricerca fatturabile possono supportare tempi di campionamento ed elaborazione maggiori per stime più realistiche della quantità, delle dimensioni e dei volumi di query dell'indice durante lo sviluppo.

  1. Esaminare i limiti del servizio in ogni livello per determinare se i livelli inferiori possono supportare il numero di indici necessari. Valutare se sono necessarie più copie di un indice per lo sviluppo, il test e la produzione attivi.

    Un servizio di ricerca è soggetto ai limiti degli oggetti (numero massimo di indici, indicizzatori, set di competenze e così via) e limiti di archiviazione. Il limite raggiunto per primo è il limite effettivo.

  2. Creare un servizio a un livello fatturabile. I livelli sono ottimizzati per determinati carichi di lavoro. Ad esempio, Archiviazione livello ottimizzato ha un limite di 10 indici perché è progettato per supportare un numero ridotto di indici molto grandi.

    • Iniziare a basso, in Basic o S1, se non si è certi del caricamento proiettato.

    • Iniziare ad alta, in S2 o anche S3, se il test include caricamenti di query e indicizzazione su larga scala.

    • Iniziare con Archiviazione Ottimizzato, in L1 o L2, se si esegue l'indicizzazione di una grande quantità di dati e il carico di query è relativamente basso, come con un'applicazione aziendale interna.

  3. Generare un indice iniziale per determinare il modo in cui i dati di origine vengono convertiti in un indice. Questo è l'unico modo per stimare le dimensioni di un indice. Gli attributi nelle definizioni dei campi influiscono sui requisiti di archiviazione fisica:

  4. Monitorare l'archiviazione, i limiti del servizio, il volume di query e la latenza nel portale. Il portale mostra le query al secondo, le query limitate e la latenza di ricerca. Tutti questi valori consentono di decidere se è stato selezionato il livello corretto.

  5. Aggiungere repliche per la disponibilità elevata o ridurre le prestazioni delle query lente.

    Non sono disponibili linee guida sul numero di repliche necessarie per supportare i carichi di query. Le prestazioni delle query dipendono dalla complessità delle query e dai carichi di lavoro concorrenti. Anche se l'aggiunta di repliche comporta chiaramente prestazioni migliori, il risultato non è strettamente lineare: l'aggiunta di tre repliche non garantisce una velocità effettiva triplica. Per indicazioni sulla stima di QPS per la soluzione, vedere Analizzare le prestazionie monitorare le query.

Per un indice invertito, le dimensioni e la complessità sono determinate dal contenuto, non necessariamente dalla quantità di dati inseriti. Un'origine dati di grandi dimensioni con ridondanza elevata può comportare un indice più piccolo rispetto a un set di dati più piccolo che contiene contenuto altamente variabile. Pertanto, raramente è possibile dedurre le dimensioni dell'indice in base alle dimensioni del set di dati originale.

Archiviazione requisiti possono essere gonfiati se si includono dati che non verranno mai cercati. Idealmente, i documenti contengono solo i dati necessari per l'esperienza di ricerca.

Considerazioni sul contratto di servizio

Le funzionalità di livello gratuito e anteprima non sono coperte dai contratti di servizio.The Free tier and preview features't covered by service-level agreement (SLAs)). Per tutti i livelli fatturabili, i contratti di servizio diventano effettivi quando viene effettuato il provisioning di una ridondanza sufficiente per il servizio.

  • Due o più repliche soddisfano i contratti di servizio di query (lettura).

  • Tre o più repliche soddisfano i contratti di servizio di query e indicizzazione (lettura/scrittura).

Il numero di partizioni non influisce sui contratti di servizio.

Passaggi successivi