På Character.AI arbetar de mot det långsiktiga målet AGI (Artificial General Intelligence). I den framtida tillståndet kommer stora språkmodeller (LLM) att förbättra det dagliga livet genom att bidra med produktivitetsverktyg, underhållning och hjälp inom allt från utbildning till coaching, support, brainstorming och kreativt skrivande. För att göra detta tillgängligt globalt är det avgörande att uppnå högeffektiv "inferens" – processen där LLM:er genererar svar.
Som ett fullständigt AI-företag designar Character.AI sin modellarkitektur, inferensstapeln och produkten från grunden upp, vilket möjliggör unika tillfällen att optimera inferensen för att bli mer effektiv, kostnadseffektiv och skalbar för en snabbt växande, global publik. Idag hanterar de över 20 000 inferensfrågor per sekund, vilket ungefär motsvarar 20% av frågebelastningen för Google Search enligt oberoende uppskattningar.
Den viktiga begränsningen för LLM-inferensens genomsattskapacitet är storleken på cachen för nycklarna och värdena (KV) i uppmärksamhetslager. Character.AI har implementerat flera tekniker som minskar KV-cachestorleken med över 20 gånger utan att påverka kvaliteten negativt. Med dessa tekniker är GPU-minnet inte längre en flaskhals för att hantera stora batchar:
1. Multi-Query Attention: De använder Multi-Query Attention i alla uppmärksamhetslager, vilket minskar KV-cachestorleken 8 gånger jämfört med den grupperade uppmärksamheten som används i de flesta öppna källmodeller.
2. Hybrid Attention Horizons: De blandar lokala uppmärksamhetslager med globala uppmärksamhetslager. Lokal uppmärksamhet är tränad med glidande fönster och minskar komplexiteten från O(längd2) till O(längd). Att minska uppmärksamhetshorisonten till 1024 på de flesta lager har inte någon signifikant påverkan på utvärderingsmetriker, inklusive den långa kontextbenchmarken "needle-in-haystack".
3. Cross Layer KV-sharing: De delar KV-cachen mellan intilliggande uppmärksamhetslager, vilket ytterligare minskar KV-cachestorleken med en faktor på 2-3x. För globala uppmärksamhetslager delar de KV-cachen över flera lager, eftersom de globala lagren dominerar KV-cachestorleken vid längre kontext. De har funnit att dela KV mellan lager inte försämrar kvaliteten.
En av Character.AIs viktigaste innovationer är ett effektivt system för att cacha uppmärksamhetens KV i värdminnet mellan chattsamtal. Merparten av chatten på Character.AI är långa dialoger med i genomsnitt 180 meddelanden i dialoghistoriken. Att kontinuerligt ladda KV-cacharna för varje nytt meddelande skulle vara ohållbart dyrt.
För att lösa detta har de utvecklat ett caching-system mellan chattsamtal. För varje förifyllda prefix och genererat meddelande cachar de KV-värdena i värdminnet och hämtar dem för framtida frågor. De organiserar cachade KV-tensorer i en LRU-cache med en trädstruktur, indexerade med en rullande hashfunktion av prefixens tokens. För varje ny fråga beräknas en rullande hash för varje prefix i kontexten, och cachen hämtas för den längsta matchningen. Detta möjliggör återanvändning av cachen även för delvis matchade meddelanden.
På fältnivå använder de "sticky sessions" för att dirigera frågor från samma dialog till samma server. Eftersom deras KV-cachestorlek är liten kan varje server samtidigt cacha tusentals dialoger. Deras system uppnår en 95% cache-träffsäkerhet, vilket ytterligare minskar inferenskostnaden.
Character.AI använder int8-kvantisering på modellvikter, aktiveringar och uppmärksamhetens KV-cache. För att stödja detta har de implementerat anpassade int8-kärnor för matrisberäkningar och uppmärksamhet. Till skillnad från vanliga "post-training quantization"-tekniker tränar de sina modeller direkt med int8-precision, vilket eliminerar risken för avvikelser mellan träning och serving samtidigt som det förbättrar träningseffektiviteten avsevärt.
Effektiv inferens är avgörande för att skala upp AI-system och integrera dem sömlöst i vårt dagliga liv. Sammantaget möjliggör de innovationer som diskuterats ovan en enastående effektivitet och minskar inferenskostnaderna till en nivå som gör det mycket lättare att serva LLM:er i stor skala. Character.AI har minskat serveringskostnaderna med en faktor 33 jämfört med när de började i slutet av 2022. Om de skulle serva sin trafik med ledande kommersiella API:er idag skulle det kosta minst 13,5 gånger mer än med deras system.
Men detta är bara början. På Character.AI ser de fram emot att fortsätta bygga en framtid där LLM:er driver innovation och förbättrar upplevelser för alla över hela världen. Gå med dem på denna spännande resa när de fortsätter att utmana gränserna för vad som är möjligt med AI. Tillsammans skapar vi en framtid där effektiva och skalbara AI-system är kärnan i varje interaktion.