Hvad er Cache Augmented Generation (CAG)?
Cache Augmented Generation (CAG) er en ny tilgang til at forbedre ydeevnen og effektiviteten af store sprogmodeller (LLM’er) ved at udnytte forudindlæst viden i form af forudberegnede key-value (KV) cacher.
I modsætning til Retrieval Augmented Generation (RAG), som dynamisk henter ekstern viden under inferens, eliminerer CAG hentetrin fuldstændigt ved at indlejre al relevant viden direkte i modellens udvidede kontekstvindue før inferens. Denne forudindlæsningsstrategi gør det muligt for LLM’er at generere svar ved hjælp af den forudberegnede information, hvilket markant reducerer latenstid og forenkler systemarkitekturen.
Ved at gemme den behandlede viden i en key-value-cache sikrer CAG, at modellen har øjeblikkelig adgang til den nødvendige kontekst for at besvare forespørgsler. Denne tilgang er især fordelagtig i scenarier, hvor vidensdatabasen er statisk, forholdsvis lille, eller hvor lav latenstid er en prioritet.
Hvordan fungerer CAG?
CAG fungerer gennem tre primære faser:
1. Forudindlæsning af ekstern viden
Alle relevante dokumenter eller datasæt forudindlæses i modellens kontekstvindue før inferens.
Det forudindlæste indhold behandles til en key-value (KV) cache, som fanger modellens interne repræsentation af viden. For eksempel:
def preprocess_knowledge(model, tokenizer, prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
past_key_values = DynamicCache()
outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
return outputs.past_key_values
Dette trin sikrer, at modellen har øjeblikkelig adgang til den forbehandlede viden og omgår behovet for realtids-hentning.
2. Inferens med forudberegnet cache
Når en forespørgsel foretages, kombineres den forudberegnede KV-cache med forespørgselsinputtet.
Modellen genererer et svar udelukkende baseret på den cachede viden og forespørgslen, hvilket undgår yderligere beregninger for videnshentning. For eksempel:
def generate_response(model, query, kv_cache):
input_ids = tokenizer.encode(query, return_tensors="pt").to(model.device)
output_ids = model(input_ids=input_ids, past_key_values=kv_cache, use_cache=True)
return tokenizer.decode(output_ids)
3. Cache-håndtering
Efterhånden som nye forespørgsler behandles, vokser cachen. En nulstillingsmekanisme afkorter cachen tilbage til dens oprindelige længde for at opretholde ydeevnen og sikre, at efterfølgende forespørgsler evalueres inden for den ønskede kontekst. Eksempel på cache-nulstilling:
def clean_up(kv_cache, original_length):
for i in range(len(kv_cache.key_cache)):
kv_cache.key_cache[i] = kv_cache.key_cache[i][:, :, :original_length, :]
kv_cache.value_cache[i] = kv_cache.value_cache[i][:, :, :original_length, :]
Nøglefordele ved CAG
Lav latenstid
Da der ikke er behov for realtids-hentning, giver CAG hurtigere svartider sammenlignet med RAG. Det gør metoden ideel til tidssensitive applikationer.
Forbedret nøjagtighed
Ved at forudindlæse alle relevante dokumenter sikrer CAG, at modellen behandler et omfattende datasæt, hvilket mindsker risikoen for konteksthuller eller hentefejl.
Forenklet arkitektur
I modsætning til RAG, som kræver en kompleks hentepipeline, er CAG’s arkitektur strømlinet, hvilket reducerer systemkompleksitet og vedligeholdelsesomkostninger.
Effektivitet i skala
Når viden først er forudindlæst og cachet, behandles efterfølgende forespørgsler med minimal beregningsmæssig belastning, hvilket gør CAG effektiv til gentagne forespørgsler inden for samme vidensdomæne.
Begrænsninger ved CAG
Størrelse på kontekstvindue
CAG er afhængig af modellens kontekstvindue til at forudindlæse viden. Nuværende LLM’er understøtter kontekstvinduer op til 128.000 tokens, hvilket begrænser mængden af viden, der kan forudindlæses.
Størrelse på vidensbase
CAG egner sig bedst til statiske og overskuelige vidensdatabaser. For store eller dynamiske datasæt kan modellen have svært ved at rumme al relevant information i kontekstvinduet.
Statisk viden
CAG antager, at vidensbasen forbliver uændret under inferens. Den er mindre effektiv til brugsscenarier, der kræver realtids-opdateringer eller dynamisk vidensintegration.
Omkostningsimplikationer
Store kontekstvinduer øger de beregningsmæssige omkostninger ved forudindlæsning, hvilket gør CAG mindre økonomisk til scenarier med hyppige opdateringer eller ændringer i vidensbasen.
Hvordan bruges CAG?
Praktiske anvendelser
CAG anvendes oftest i scenarier, hvor vidensbasen er statisk, overskuelig i størrelse, og lav latenstid er kritisk:
Kundesupport-chatbots
Eksempel: Forudindlæsning af almindelige fejlfindingstrin for softwareprodukter for at give brugerne øjeblikkelige svar.
Fordel: Eliminerer hentefejl og øger svartiderne.
Dokumentanalyse
Eksempel: Finansielle institutioner, der analyserer kvartalsrapporter, eller advokatfirmaer, der forespørger på lovgivningsdokumenter.
Fordel: Sikrer konsistente og nøjagtige svar ved at forudindlæse alle relevante dokumenter i modellen.
Sundhedsassistenter
Eksempel: Forudindlæsning af medicinske retningslinjer til at besvare patientforespørgsler.
Fordel: Opretholder sammenhæng i dialoger over flere omgange og sikrer korrekt reference.
Uddannelse og træning
Eksempel: Besvarelse af ofte stillede spørgsmål i virksomhedstræningsprogrammer.
Fordel: Forenkler implementering og sikrer ensartede svar.
Sammenligninger med Retrieval Augmented Generation (RAG)
| Funktion | CAG | RAG |
|---|
| Videnshåndtering | Forudindlæser viden i kontekstvinduet. | Henter viden dynamisk under kørsel. |
| Systemkompleksitet | Forenklet, ingen hente-pipeline påkrævet. | Kræver ekstra komponenter til hentning. |
| Latenstid | Lav, da hentetrin er elimineret. | Højere pga. realtids-henteprocesser. |
| Skalerbarhed | Begrænset af kontekstvinduets størrelse. | Skalerer godt med store, dynamiske datasæt. |
| Fejlrisici | Ingen hentefejl. | Sårbar over for hente- og rangeringsfejl. |
| Bedste brugsscenarier | Statiske, lav-latenstidsopgaver. | Dynamiske, store eller ofte opdaterede opgaver. |
Eksempler på brugsscenarier
CAG i praksis
HR-systemer
En virksomhed bruger CAG til at forudindlæse medarbejderpolitikker i modellen. Medarbejdere kan forespørge systemet om specifikke retningslinjer, og svar genereres øjeblikkeligt.
Juridisk assistance
En juridisk assistent forudindlæser relevante retskilder i modellens kontekst for hurtigt at kunne besvare juridiske spørgsmål uden et hentesystem.
Kundeservice
En SaaS-produkts chatbot bruger CAG til at forudindlæse FAQ’er og fejlfindingguider og sikrer dermed smidige og hurtige kundeinteraktioner.
RAG til dynamiske scenarier
Nyhedsaggregator
En nyhedsapp bruger RAG til at hente og opsummere de nyeste artikler og henter dynamisk den mest relevante information til brugerforespørgsler.
E-handelssøgning
RAG bruges til at hente produktoplysninger og tilgængelighed fra et stort og ofte opdateret katalog.
Forskningsplatforme
En videnskabelig forskningsplatform anvender RAG til at hente relevante artikler og studier fra store eksterne databaser.
Implementeringseksempel: Forudindlæsning af viden i Python
Følgende Python-kodeeksempel viser, hvordan man forudindlæser viden i en model til CAG:
def preprocess_knowledge(model, tokenizer, prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
past_key_values = DynamicCache()
outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
return outputs.past_key_values
Denne forudindlæsningsmekanisme sikrer, at modellen behandler forespørgsler uden brug for ekstern hentning, hvilket muliggør effektiv og lav-latenstidsydelse.
Hvornår skal man bruge CAG
Statiske vidensbaser
Ideel til tilfælde, hvor vidensbasen sjældent ændres.
Lav-latenstidsapplikationer
Velegnet til kundesupport, uddannelses- eller sundhedssystemer, hvor hurtige svar er nødvendige.
Omkostningseffektive scenarier
Gavnlig, når den forudindlæste viden forbliver konsistent på tværs af flere forespørgsler og derved reducerer beregningsbyrden.
CAG er et effektivt alternativ til RAG for opgaver, der kræver hastighed, enkelhed og konsistens. Dog er løsningen begrænset af vidensbasens størrelse og statiske karakter.
Forskning om Cache Augmented Generation (CAG)
1. Adaptive Contextual Caching for Mobile Edge Large Language Model Service
Forfattere: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong
Denne artikel adresserer udfordringer i mobile edge-implementeringer af store sprogmodeller (LLM), såsom begrænsede beregningsressourcer og høj hentelatenstid. Den foreslår en Adaptive Contextual Caching (ACC)-ramme, der bruger deep reinforcement learning (DRL) til at optimere cache-udskiftningspolitikker ved at tage højde for brugerens kontekst, dokumentsimilaritet og cache-miss-overhead. Eksperimentelle resultater viser, at ACC opnår over 80% cache-hit-rate efter 11 træningsepisoder og signifikant reducerer hentelatenstid med op til 40% sammenlignet med traditionelle metoder. Derudover minimerer den den lokale cache-overhead med op til 55%, hvilket gør den velegnet til skalerbare LLM-tjenester med lav latenstid i ressourcebegrænsede miljøer. Arbejdet fremhæver ACC’s potentiale til at øge effektiviteten i edge-LLM-systemer.
Læs artiklen her
2. Towards More Economical Context-Augmented LLM Generation by Reusing Stored KV Cache
Forfattere: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang
Dette studie undersøger genbrug af Key-Value (KV)-cacher for at reducere prefill-forsinkelser i LLM-applikationer, især ved gentagne inputtekster. Det undersøges, om cache-genbrug også kan være økonomisk levedygtigt ved brug af offentlige cloud-tjenester til lagring og behandling. Forfatterne foreslår en valideret analytisk model til at vurdere cloud-omkostninger (beregning, lagring og netværk) ved lagring og genbrug af KV-cacher på tværs af forskellige arbejdsbyrder. Studiet viser, at genbrug af KV-cache sparer både tid og cloud-omkostninger for arbejdsbyrder med lange kontekster og opmuntrer til yderligere udvikling af mere økonomiske context-augmenterede LLM-systemer.
Læs artiklen her
3. MPIC: Position-Independent Multimodal Context Caching System for Efficient MLLM Serving
Forfattere: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen
Denne artikel introducerer MPIC, et position-uafhængigt multimodalt kontekst-caching-system, der sigter mod at løse ineffektivitet i multimodal LLM-inferens. Traditionelle systemer genberegner hele KV-cachen selv ved små forskelle i konteksten, hvilket fører til ineffektivitet. MPIC tilbyder et position-uafhængigt cachesystem, der gemmer KV-cacher lokalt eller eksternt og paralleliserer cache-beregning og indlæsning under inferens. Integrerede genbrugs- og genberegningsmekanismer afbøder nøjagtighedstab og opnår op til 54% reduktion i svartid sammenlignet med eksisterende metoder. Arbejdet fremhæver potentialet for øget effektivitet i multimodale LLM-tjenester.
Læs artiklen her