LLM-applikationer i produktion (RAG + vektordatabase + caching) · Lektion

Distribueret caching med Redis/Memcached

Implementer og administrer distribuerede caches ved hjælp af teknologier som Redis eller Memcached til LLM-applikationer i stor skala.

Lektion 1 af 411 trin

Distribueret caching med Redis/Memcached er en gratis LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i LLM-applikationer i produktion (RAG + vektordatabase + caching), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.

Distribueret caching: Hvorfor

Når du bygger LLM-programmer i stor skala, vil du møde udfordringer som høj latenstid og øgede API-omkostninger. Caching hjælper, men hvad sker der, når dit program vokser ud over én server?

Distribueret caching spreder din cache over flere servere. Det gør det muligt for mange instanser af programmet at dele de samme cachede data, hvilket forbedrer ydeevne og konsistens.

Skalering af LLM-programmer

Forestil dig, at dit LLM-program kører på flere servere. Hvis hver server har sin egen cache "i hukommelsen", deler de ikke data. Det betyder:

  • Dobbeltarbejde: Server A kan generere et LLM-svar igen, selv om Server B allerede har det i sin cache.
  • Inkonsistente data: Hvis én server opdaterer sin cache, ved de andre det ikke.
  • Begrænset kapacitet: Hver servers hukommelse er begrænset.

Distribuerede caches løser dette ved at tilbyde et delt, eksternt lager.

Mød Redis: Nøgle-værdi-lager

Redis (Remote Dictionary Server) er et open source-lager til datastrukturer i hukommelsen, der bruges som database, cache og meddelelsesmægler.

  • Det er meget hurtigt, fordi det opbevarer data i RAM.
  • Det understøtter forskellige datastrukturer som strenge, hashes, lister, mængder og meget mere.
  • Det er meget alsidigt og bruges bredt til caching i distribuerede systemer.

Redis: Lagring og hentning af data

Grundlæggende fungerer Redis som en ordbog eller et hashkort. Du gemmer data ved hjælp af en nøgle og henter dem ved hjælp af den samme nøgle.

I LLM-programmer kan du bruge en entydig identifikator (f.eks. en hashet prompt) som nøgle og LLM'ens genererede svar som værdi. Redis håndterer lagring og hentning på tværs af din distribuerede opsætning.

Caching af LLM-svar med Redis

Lad os se, hvordan du bruger biblioteket redis-py til at oprette forbindelse til en Redis-server og cache et simuleret LLM-svar. Dette eksempel forudsætter, at Redis kører lokalt.

import redis
import hashlib

# Connect to Redis (default host/port)
r = redis.Redis(host='localhost', port=6379, db=0)

def get_llm_response(prompt):
    # Simulate an LLM call
    print(f"Simulating LLM call for: '{prompt}'")
    return f"LLM response for '{prompt}'"

def get_cached_or_generate(prompt):
    # Create a simple cache key from the prompt
    cache_key = "llm_response:" + hashlib.md5(prompt.encode('utf-8')).hexdigest()

    # Try to get from cache
    cached_response = r.get(cache_key)

    if cached_response:
        print("Cache hit!")
        return cached_response.decode('utf-8')
    else:
        print("Cache miss. Generating response...")
        response = get_llm_response(prompt)
        # Store in cache with a 60-second expiry (TTL)
        r.setex(cache_key, 60, response)
        return response

if __name__ == "__main__":
    prompt1 = "Explain distributed caching in one sentence."
    prompt2 = "What is the capital of France?"

    print("--- First call for prompt1 ---")
    print(get_cached_or_generate(prompt1))

    print("\n--- Second call for prompt1 (should be cached) ---")
    print(get_cached_or_generate(prompt1))

    print("\n--- First call for prompt2 ---")
    print(get_cached_or_generate(prompt2))

    # Clean up (optional) - uncomment if you want to clear after running
    # r.delete("llm_response:" + hashlib.md5(prompt1.encode('utf-8')).hexdigest())
    # r.delete("llm_response:" + hashlib.md5(prompt2.encode('utf-8')).hexdigest())

Introduktion til Memcached

Memcached er endnu et populært distribueret system til højtydende caching af objekter i hukommelsen.

  • Det er enklere end Redis og fokuserer udelukkende på caching af nøgle-værdi-par.
  • Det bruges ofte til caching af resultater fra databaseforespørgsler, API-svar eller gengivne HTML-fragmenter.
  • Det er designet til horisontal skalering, så du nemt kan tilføje flere servere.

Redis kontra Memcached: Sammenligning

Begge er gode til distribueret caching, men de har forskelle:

  • Redis: Har flere funktioner (datastrukturer, persistens, pub/sub). Godt til forskellige anvendelser ud over simpel caching.
  • Memcached: En enklere, ren cachingløsning. Ofte mere hukommelseseffektiv til meget store, enkle datasæt med nøgle-værdi-par.

Til LLM-programmer gør Redis' alsidighed det ofte til det foretrukne valg, især ved mere komplekse cachingbehov, eller når der er brug for andre Redis-funktioner.

Design af effektive cache-nøgler

En god cache-nøgle er afgørende. For LLM-svar skal du bruge en nøgle, der entydigt identificerer forespørgslen.

  • Hash prompten: Brug et kryptografisk hash (f.eks. MD5 eller SHA256) af hele promptstrengen.
  • Inkluder parametre: Hvis dit LLM-kald har temperatur, modelnavn eller andre parametre, skal du inkludere dem i hashet.
  • Navneområde: Sæt præfikser foran nøglerne (f.eks. "llm_response:...") for at organisere din cache.

Grundlæggende cacheudløb (TTL)

Cachede data kan blive forældede. For at forhindre dette understøtter distribuerede caches Time-To-Live (TTL), som automatisk udløber data efter en fastsat periode.

Du så r.setex(key, 60, value) i koden. Det indstiller nøglen til at udløbe efter 60 sekunder. Vælg en TTL ud fra, hvor ofte de underliggende data ændres, eller hvor vigtigt det er, at dataene er aktuelle.

Hurtigt tjek: Distribueret caching

Du designer et RAG-program i stor skala. Du skal cache LLM-svar på tværs af flere instanser af programmet. Hver instans skal kunne få adgang til de samme cachede data.

Hvilken tilgang er bedst egnet til dette krav?

Opsummering: Distribueret caching

Vi har undersøgt, hvordan distribueret caching er afgørende for skalering af LLM-programmer og løser begrænsningerne ved lokale caches i hukommelsen.

  • Redis og Memcached er effektive værktøjer til at opbygge delte caches med høj ydeevne.
  • Vi lærte, hvordan Redis bruges til grundlæggende nøgle-værdi-lagring og til at hente LLM-svar.
  • Effektivt design af cache-nøgler og brug af Time-To-Live (TTL) er afgørende for at styre, hvor aktuelle cachedata er.

Denne tilgang forbedrer ydeevnen markant og reducerer driftsomkostningerne for dine LLM-installationer.

Gratis at komme i gang

Lær LLM-applikationer i produktion (RAG + vektordatabase + caching) med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Distribueret caching med Redis/Memcached” gratis?

Ja — hele teksten til “Distribueret caching med Redis/Memcached” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset, skal du opgradere til CoddyKit PRO. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Distribueret caching med Redis/Memcached”?

Implementer og administrer distribuerede caches ved hjælp af teknologier som Redis eller Memcached til LLM-applikationer i stor skala. Du øver dig i LLM-applikationer i produktion (RAG + vektordatabase + caching) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på LLM-applikationer i produktion (RAG + vektordatabase + caching)?

Der kræves ingen tidligere erfaring. LLM-applikationer i produktion (RAG + vektordatabase + caching) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Distribueret caching med Redis/Memcached”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion?

Ja. Alle LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Distribueret caching med Redis/Memcached
  2. Sessionshåndtering og bevarelse af kontekst
  3. Avancerede strategier til cache-invalidering
  4. Semantisk caching af LLM-svar
← Tilbage til LLM-applikationer i produktion (RAG + vektordatabase + caching)