Čo má AI agent zabudnúť? Recency nestačí — a ani samoladiaci sa cache
Nemožnosť je učebnicová (žiadne online pravidlo vyhadzovania nie je univerzálne — Sleator-Tarjan 1985) a dvojvrstvový sklad je segmentované cachovanie z 90. rokov (SLRU/ARC). To jediné, čo stojí za zmienku: keď je dôležitosť pamäte oddelená od toho, ako často sa používa, ani samoladiaci sa cache ARC ju neochráni (0.12 pri vzácne-kritických, 0.00 pri otravnej záplave) — musíš prijímať podľa hodnoty. Odmerané, so spustiteľným ARC baseline.
Pamäť agenta je konečná. Keď sa naplní, niečo musí von a pravidlo vyhadzovania — čo zabudnúť — potichu rozhoduje, či si agent udrží pamäť, ktorú naozaj bude potrebovať. Odmerali sme klasické pravidlá a dvojvrstvový sklad na troch záťažiach. Dve z troch vecí, ktorými sme mohli začať, sú učebnicové — ale tá posledná stojí za tvoj čas. Minimálna, plne reprodukovateľná simulácia (spustiteľná probe).
Tri pravidlá, tri režimy
Drž sklad s pevnou kapacitou; žeň ho tromi prístupovými vzormi a meraj served hit-rate (podiel budúcej váhy prístupov — každý prístup škálovaný jeho dôležitosťou — ktorá trafí stále uloženú pamäť):
- temporálna lokalita — driftujúci working set (nedávne veci budú čoskoro treba).
- vzácne-ale-kritické — pár položiek používaných zriedka, ale každá veľa vážiaca.
- otravná záplava — skutočný working set pochovaný pod prúdom unikátneho junku.
| politika | lokalita | vzácne-kritické | otravná záplava |
|---|---|---|---|
| LRU (recency) | 0.80 | 0.13 | 0.00 |
| LFU (frekvencia) | 0.14 | 0.11 | 0.00 |
| ARC (samoladiaci recency+frekvencia) | 0.80 | 0.12 | 0.00 |
| value (drž najhodnotnejšie) | 0.22 | 0.65 | 0.57 |
Každé pravidlo založené na prístupovom vzore vlastní nanajvýš lokalitu a na zvyšku zomiera. Recency (LRU) sleduje driftujúci working set, ale záplava ho zmaže na nulu — junk je vždy „najnovší". Podstatné: ARC — špičkový samoladiaci cache (Megiddo & Modha 2003; ladí pomer recency/frekvencia online, beží v ZFS a IBM úložiskách) — má okolo 0.12 / 0.00 na vzácne-kritických a na záplave, nie lepšie než obyčajné LRU. Nepomôže: dôležitosť odvodzuje z opakovaného použitia, a zriedka-čítaná-ale-kritická položka (či working set pochovaný pod záplavou širšou než cache) nikdy nevytvorí signál opakovania, ktorý ARC potrebuje. Iba value tie dva režimy prežije — a value potrebuje signál, ktorý prístupový vzor neobsahuje. Že žiadne online pravidlo nevyhráva všade, je učebnicové: Sleator & Tarjan (1985) dokázali, že každé online pravidlo je nanajvýš k-kompetitívne; Belady (1966) ukázal, že skutočné optimum potrebuje budúcnosť.
Blend, alebo vrstva — oba sú staré nápady
Sú dva klasické spôsoby, ako skombinovať hodnotu s recency, a oba predchádzajú pamäti agentov o desaťročia. Prvý je jedno zmiešané skóre — hodnota tlmená recency-decay hodinami, rodina cost-aware cachovania GreedyDual-Size / GDSF (Cao & Irani 1997; Cherkasova 1998). Záplavu to nezachráni: každé vyhodenie junku napumpuje starnúce hodiny, takže práve to starnutie, čo zvláda drift, vyhodí skutočné pamäte pri útoku. Starnutie-pre-drift a žiadne-starnutie-pre-odolnosť sú v priamom napätí v jednom čísle.
Druhý spôsob je dvojvrstva — a je to segmentované cachovanie
Rozdeľ rozpočet: malá value-chránená vrstva (top položky podľa hodnoty, imúnne voči recency aj záplave) plus recency-starnúca vrstva pre zvyšok. Toto je zaužívaný segmentovaný cache — SLRU (Karedla 1994), 2Q (Johnson & Shasha 1994), LRU-K (O'Neil 1993) a ARC (2003) — s jednou zmenou: prijímanie do chránenej vrstvy je podľa exogénnej hodnoty, nie podľa pozorovaného opakovania. Pri chránenom podiele 30 % vyrovná najlepšie jedno pravidlo vo všetkých troch režimoch naraz:
| lokalita | vzácne-kritické | otravná záplava | |
|---|---|---|---|
| najlepšie jedno pravidlo | 0.80 | 0.65 | 0.57 |
| dvojvrstva | 0.81 | 0.64 | 0.57 |
Chránená vrstva drží vzácno-kritické a otravou-cielené pamäte; recency-starnúca vrstva obsluhuje driftujúci working set. Dve čestné výhrady. Toto nie je univerzálnosť zadarmo: pri 15 % chránenom podiele zlyhá na vzácne-kritických (0.44) aj na záplave (0.42), takže chránený podiel je ladiaci gombík, nie konštanta — a na vzácne-kritických je vrstva 0.64 vs value 0.65, malá regresia v rámci šumu. A ARC už ladí presne ten recency/frekvencia split, ktorý my fixujeme ručne, takže jedinou skutočnou výhodou vrstvy oproti ARC je hodnotový signál, nie dvojvrstvová štruktúra. Režimová závislosť sa rozplynie — ale do starého nápadu a naladeného gombíka.
Je to hodnotový signál, nie vrstva
Zredukuj to na podstatu: value-prijímanie — jedno-vrstvové aj dvoj-vrstvové — poráža každú politiku prístupového vzoru z jedného dôvodu. Vidí dôležitosť pamäte priamo, oddelene od toho, ako často sa pamäť používa. Vyžaduje to poznať budúcnosť? Nie. Spusti to znova so striktne write-time estimátorom — bežiace maximum dôležitosti pozorovanej pri každom použití pamäte, nula predtým, než sa vôbec objaví — a čísla sa sotva pohnú (0.81 / 0.64 / 0.57). Agent taký signál reálne má (tag kritickosti, príznak použitia s vysokou stávkou); politika cache ho z princípu nemá. Degraduje sa navyše postupne: aj so silne zašumeným odhadom dôležitosti value vrstva stále poráža ARC viac než 2×. Pákou je mať hodnotový signál vôbec, nie kalibrovať ho dokonale.
Ak staviaš pamäť agenta
Value-aware vyhadzovanie nie je nové — je to cost-aware cachovanie (GreedyDual-Size, 1997). Poučenie špecifické pre agentov z ARC baseline je ostrejšie: nepredpokladaj, že „šikovný" samoladiaci cache ochráni tvoje vzácne-ale-kritické pamäte — nevidí dôležitosť, ktorú prístupový vzor neprezrádza. Prijímaj podľa pozorovaného signálu dôležitosti. Ak vrstvíš, ber chránený podiel ako gombík a vedz, že jedno value-vážené skóre ho môže vyrovnať; argument pre explicitnú ohraničenú chránenú vrstvu je najsilnejší pri adversariálnej hodnote (otrávený signál dôležitosti), kde ohraničená kapacita zastropuje škodu. A všimni si, že väčšina produkčných systémov (Mem0, Letta, Zep) skôr starne alebo konsoliduje než tvrdo vyhadzuje — Mem0 už odporúča „LRU with a salience floor", čo je práve tento nápad. (Presne túto zmenu sme nasadili do nášho open-source pamäťového jadra.)
FalzifikátorKaždé pravidlo prístupového vzoru muselo vyhrať nanajvýš lokalitu a prehrať zvyšok — dokázalo to, vrátane ARC (0.80 na lokalite; 0.12 / 0.00 na vzácne-kritických a záplave). Value-prijímanie muselo obnoviť režimy, ktoré prehrávajú — dokázalo to (0.64 / 0.57), s write-time pozorovateľným signálom, nie orákulom. A naladená dvojvrstva musela vyrovnať najlepšie jedno pravidlo vo všetkých troch — dokázala to pri 30 % chránenom podiele (s malou regresiou na vzácne-kritických, 0.64 vs 0.65), ale nie pri 15 %, takže výhra je naladený gombík, nie zadarmo.
FAQ
Aká je najlepšia politika eviction pre pamäť AI agenta? Žiadne online pravidlo nie je univerzálne — to je teoréma (Sleator-Tarjan 1985), nie objav. Pravidlá prístupového vzoru (LRU, LFU aj samoladiaci ARC cache) zvládnu driftujúcu pracovnú množinu, ale skórujú okolo 0.12 na vzácne-ale-kritických položkách a 0.00 pri poison flood, lebo dôležitosť odvodzujú z opakovania. Prijímanie podľa exogénneho hodnotového signálu tie režimy obnoví (0.64/0.57). Dvojvrstvové úložisko (chrániace hodnotu + starnúce podľa recency; segmentovaný cache, SLRU/ARC) vyrovná najlepšie jedno pravidlo vo všetkých troch — ale len pri naladenom chránenom podiele okolo 30 %.
Prečo recency (LRU) kolabuje pri poison flood pamäte? Pretože vstreknutý odpad je vždy najnovšia vec, takže čisté recency pravidlo si nechá flood a vyhodí skutočné pamäte — klesne na 0.00 práve vtedy, keď je napadnuté. Samoladiaci cache ako ARC tu tiež kolabuje, keď je záplava širšia než cache, lebo pracovná množina nikdy nevytvorí signál opakovania, ktorý ARC potrebuje.
Vyrieši to šikovnejší, samoladiaci cache ako ARC? Nie. ARC (Megiddo-Modha 2003) adaptívne balansuje recency a frekvenciu a je výborný na záťažiach prístupového vzoru, ale nemá exogénny hodnotový signál — takže na našej probe skóruje tú istú ~0.12 na vzácne-kritických a 0.00 pri flood ako obyčajné LRU. Chýbajúca zložka je dôležitosť, nie adaptívnosť.
Prečo si jednoducho nenechať pamäte s najvyššou hodnotou? Value-only eviction chráni rare-critical a flood-cielené položky (0.65 / 0.57), ale vyhladuje driftujúcu pracovnú množinu (0.22 na locality) tým, že lipne na zastaraných vysoko-hodnotných pamätiach. Spárovanie s recency-starnúcou vrstvou pokryje oboje — to je dvojvrstvové úložisko, čo je učebnicové segmentované cachovanie (SLRU/2Q/ARC) s prijímaním podľa exogénnej hodnoty namiesto pozorovaného opakovania.
Čo znamená dvojvrstvové úložisko pamäte v praxi? Rozdeľ úložisko: vrstvu chrániacu hodnotu, ktorú recency tlak nevie vyhodiť, plus recency-starnúcu vrstvu pre pracovnú množinu. Chránená vrstva prežije floods; starnúca vrstva sleduje drift. Toto je segmentované cachovanie (SLRU, ARC); jedinou zmenou pre pamäť agenta je, že prijímanie je podľa pozorovaného signálu dôležitosti namiesto opakovania.