Vai al contenuto

Ottimizzare le applicazioni Azure OpenAI con la Semantic Caching

Scopri come la tecnica di “semantic caching” può migliorare le prestazioni ed essere economicamente vantaggiosa nei Modelli linguistici di grandi dimensioni (LLM) di Azure OpenAI.

Il rendering efficiente di Modelli Linguistici di Grandi Dimensioni (LLM) rappresenta una sfida di costi e prestazioni per le aziende. Una soluzione potrebbe essere l’uso della “semantic caching”. In questo articolo approfondiremo i benefici, gli scenari comuni e le considerazioni chiave per l’utilizzo di questa tecnica.

Il caching consiste nel memorizzare dati frequentemente recuperati per servirli successivamente. Nell’ambito degli LLM, il “semantic cache” mantiene una cache delle domande e risposte precedenti, usa misure di somiglianza per recuperare query semanticamente simili dalla cache e rispondere con risposte memorizzate in cache se viene trovata una corrispondenza entro una certa soglia di somiglianza. Se la cache non riesce a restituire una risposta, la risposta può essere fornita da una nuova chiamata LLM.

Nella composizione di un layer di caching semantico, ci sono alcune componenti chiave:

Innanzitutto, gli “LLM Wrappers” vengono utilizzati per integrare e supportare diversi LLM, come Llama, OpenAI ecc. “Generate Embedding”, quindi supporta la generazione di immersioni per le query degli utenti. Le immagini generate sono generalmente mantenute nel Vector Store.

Un “Vector Store” viene utilizzato per mantenere le immersioni per le query e supporta un recupero veloce delle immersioni al momento dell’invocazione della query, possono essere databases ottimizzati per lo storage, l’indicizzazione e il recupero. Infine, il “Cache Store” mantiene le risposte dai LLM e serve le risposte quando la cache viene colpita. Il modulo “Similarity Evaluation” utilizza metriche di somiglianza / distanze per confrontare la query di input con le query del Vector Store basate su Embeddings.

Alcuni KPI specifici della cache includono il rapporto di hit (richieste gestite dalla cache / richieste totali) e la latenza (tempo per l’elaborazione di una query per essere elaborata e la corrispondente risposta da essere recuperata dalla cache).

Ma quali sono i benefici del semantic caching?

Inanzitutto permette di ottimizzare i costi: dato che le risposte vengono fornite senza invocare gli LLM, possono esserci benefici di costo significativi per le risposte in cache. L’uso di questa metodologia ha portato a casi dove i clienti hanno riferito che il 20 – 30% delle query totali degli utenti può essere servito dallo strato di caching.

Inoltre, si nota un miglioramento nella latenza: gli LLM sono noti per avere latenze più alte per generare risposte. Ciò può ridursi memorizzando le risposte in cache, nella misura in cui le query vengono risposte dallo strato di caching e non invocando gli LLMs ogni volta.

Un altro beneficio può essere lo scaling: poiché le domande a cui risponde la cache non invocano gli LLM, le risorse / i punti finali provisionati sono liberi di rispondere a domande nuove / non viste dagli utenti. Ciò può essere utile quando le applicazioni vengono scalate per gestire più utenti.

Infine, un altro vantaggio importante è la coerenza nelle risposte: poiché lo strato di cache risponde con risposte memorizzate, non è coinvolta alcuna generazione effettiva e la stessa risposta viene fornita a query considerate semanticamente simili.