Az ajánlórendszerek (RecSys) a fogyasztói internetszolgáltatások egyik elterjedt gépi tanulási problémája, ugyanakkor nagyléptékű tanításuk és kiszolgálásuk komoly műszaki kihívás. A nagyméretű nyelvi modellek (LLM-ek) hatására megjelent egy architektúrális eltolódás: a hagyományos, beágyazás-alapú hasonlósági cél helyett a generatív ajánlórendszerek (GR — generative recommenders) a felhasználói történések sorozata alapján a következő akció vagy tétel előrejelzését modellezik. A cikk bemutatja ezt a váltást, a gyakorlati üzemeltetési nehézségeket, és hogy az NVIDIA recsys-examples és nv-embedding-cache hogyan segít megoldani azokat.
Miért omlik össze a hagyományos RecSys skálázáskor
- Adattípus és mennyiség: a felhasználói előzmények keverik a kategorikus és folytonos jellemzőket, és ipari méretekben napi terabytes vagy petabytes nagyságrendűre nőhetnek. Egyetlen GPU HBM-je ritkán elég, ami tanítási és inferenciás szűk keresztmetszeteket okoz.
- Ritkaság és hosszú farok: a katalógus legtöbb interakcióját néhány népszerű tétel kapja, míg a sok ritka tételhez kevés jel áll rendelkezésre, így a tanítás gyenge jelet ad ezekre a tételekre.
- Cold start: új felhasználók vagy tételek kezdetben nem rendelkeznek interakciós előzményekkel, emiatt a beágyazások gyenge minőségűek lehetnek, ami rontja a kezdeti ajánlásokat.
- Szigorú késleltetési követelmények: gyakorlatban milliók számára online szolgáltatott modelleknek néhány milliszekundumban kell jelölteket előállítani és rangsorolni, így a RecSys nem tűri meg ugyanazokat az autoregresszív dekódolási latenciákat, mint egyes LLM-alkalmazások.
Generatív ajánlórendszerek (GR)
A generatív ajánlórendszerek a következő tétel valószínűségi eloszlásának modellezésére fókuszálnak: P(next_item | user_history) Ez a megközelítés homogénebb, transformer-szerű architektúrákat helyez előtérbe, amelyek jobban kihasználhatják a skálázási szabályokat, és könnyebben integrálhatók az LLM-ökoszisztémába. A két elterjedt megközelítés HSTU és a Semantic IDs.
HSTU
A Hierarchical Sequential Transduction Units (HSTU) architektúrát a Meta mutatta be 2024-ben. HSTU felhasználói bevitelt per-felhasználó, időrendi sorrendű, váltakozó tételek és akciók sorozataként reprezentálja, és az explicit jellemzőmérnökség helyett a sorozati reprezentáció megtanulására támaszkodik figyelemmechanizmusok segítségével. HSTU módosítja a Transformer figyelem-aggregációját: a softmax helyett SiLU-alapú súlyozást alkalmaz, beépít relatív figyelem-biaszt, és elemenkénti gatinget használ az output előtt. Ezek a változtatások hosszú sorozatokon is erősebb magnitúdó-információt tartanak meg, és hatékonyabb kernel-fúziót és alacsonyabb késleltetésű inferenciát tesznek lehetővé.
Semantic IDs
A Semantic IDs (SIDs) megközelítést a Google vezette be. A nagy katalóguson való következő tétel előrejelzése esetén a teljes softmax és a hosszú farok miatt gyenge tanítási jel, valamint a semantikus hasonlóságok kihasználatlansága problémát jelent. A Semantic IDs hierarchikus klaszterezésen alapú, új kisebb szókincs-tokeneket hoz létre az item-beágyazásokból. Több modern GR-architektúra (például TIGER, PLUM, OneRec v1/v2) erre épít. Az autoregresszív dekódolás Semantic ID-ként közvetlenül generál ajánlásokat és a kimeneti logitok révén rangsorolást ad, így például beam search egyetlen forward pass-ban több ID-t is előállíthat, növelve az átviteli hatékonyságot és a ritka tételek esélyét.
recsys-examples gyűjtemény
A recsys-examples egy NVIDIA által karbantartott példatár, amely bemutatja a generatív ajánlórendszerek képzésének és deploy-olásának legjobb gyakorlatait PyTorch és NVIDIA GPU-kon. Tartalmaz optimalizált HSTU és Semantic ID megvalósításokat, valamint három moduláris komponenst: DynamicEmb (dinamikus beágyazás), egy KV cache és tárolókezelő recommender-specifikus igényekre, valamint hatékony CUDA műveletek HSTU és Semantic ID beam search dekódoláshoz.
Dynamic embedding (DynamicEmb)
A hagyományos beágyazás-táblák statikus szókincset feltételeznek, ami éles környezetben nem tartható: új felhasználók és tételek folyamatosan jelennek meg, és a katalógus hosszú farka gyorsabban nő, mint az egy GPU HBM kapacitása. A DynamicEmb egy GPU-optimalizált, pontozott hash-tábla, amely igény szerint rendel beágyazás-sorokat tetszőleges feature-ID-khoz. Csak azok a sorok kerülnek allokálásra, amelyeket a modell ténylegesen lát; a tábla HBM és pinned host memórián is él, így jóval túlmutat egyetlen GPU kapacitásán. A HierarchicalKV algoritmusokra építő admission control és score-alapú evikció lehetővé teszi, hogy a kapacitás azokhoz az ID-khoz menjen, amelyek igazán számítanak a tanításhoz. DynamicEmb TorchRec backendként érhető el, táblák sor-alapú shardinggal az EmbeddingBagCollection és EmbeddingCollection API-kkal. Fused CUDA kernelek végzik a lookup és gradiens-aggregációt SUM, MEAN és sequence pooling módokhoz. Prefetching tartja a gyakran használt beágyazásokat HBM-ben a hatékony hozzáférés érdekében.
HSTU támogatás a recsys-examples-ben
A recsys-examples egy produkciós stílusú tanítási és inferencia stacket ad HSTU-hoz. Az item-, user-, action- és kontextuális embedding táblákat TorchRec kezeli, a DynamicEmb biztosít dinamikus kapacitást és cache-elést a magas kardinalitású táblákhoz. A sűrű (dense) rétegekhez a HSTU backbone Megatron-Core-t használja, így egy futás képes adat-, tensor-, sequence- és pipeline-paralelizmust kihasználni. A pipeline dinamikus shufflingot, embedding kommunikáció és prefetch átfedéseket, illetve HSTU réteget tartalmaz fused ops és FBGEMM attention kernellel, optimalizálva NVIDIA Ampere, Hopper és Blackwell GPU-kra. Ezek az optimalizációk a Model FLOP Utilizationt (MFU) 7.65%-ról 31.40%-ra emelték két DGX H100 node-on, jelentős hatékonyságnövekedést demonstrálva.
Inferencia és Triton integráció
A recsys-examples alacsony késleltetési követelményeknek megfelelő inferenciaútvonalat támogat: PyTorch AOTInductorral történő futtatást a Torch C++ runtime-on belül, Triton Inference Server kompatibilitással. A gyakran hozzáfért beágyazásokat az nv-embedding-cache tartja közel a GPU-hoz; a számítást tovább csökkenti egy FlexKV-alapú KV cache, amely több memória-tíert használ. Mérési eredmények szerint Triton deploy esetén a PyTorch AOTI backend Python backendhez viszonyítva KV cache nélkül 1.14×–1.28× gyorsulást ad, KV cache-sel pedig ideális, teljes GPU cache-hit forgatókönyvben 2.20×–2.38× gyorsulás érhető el.
Semantic ID–specifikus GR inferencia
A Semantic ID GR kiszolgálása eltér a chat-szerű LLM inferenciától: sokszor hosszú felhasználói kontextus, rövid autoregresszív dekódolás és széles beam-ek jellemzik. Egy valós kérés több ezer történeti tokent tartalmazhat, ugyanakkor csak 2–3 Semantic ID tokent dekódol, és beam szélességek akár 128 vagy 256 használatosak a diverzitás javításához. Általános LLM serving rendszerek (pl. vLLM, SGLang, TensorRT LLM) chat-szerű munkaterheltekre optimalizáltak, és nem mindig adják a Semantic ID-GR szükséges absztrakciókat (pl. megosztott request-level ContextKV, rövid BeamKV, beam-path tracking, dinamikus beam width). A recsys-examples ezért egy GR-specializált inferenciaframework példát nyújt Qwen alapú Semantic ID modellekhez, amely külön választja a hosszú megosztott ContextKV-t, a rövid dekódolási BeamKV-t és a BeamPath logikát. A runtime tartalmaz GR-native folyamatos batchinget, CUDA graph replay-t, item-konstrained topK-t és egy gr-decode_atten backend-et, amely közvetlenül a GR KV layouton dolgozik.
Semantic ID benchmark eredmények
Egyetlen NVIDIA H100 80GB GPU-n, Qwen3-1.7B modellel, context length=1,000 és 5,000, beam=256, output=3 esetén a GR-specializált útvonal offline és online benchmarkokban rendszeresen felülmúlta a SGLang beam-search-t. Néhány mérési adat:
- Offline latency (ctx=1000, batch=4, beam=256, output=3): GR=47.736 ms vs Baseline=102.318 ms — ~2.14× gyorsabb
- Offline latency (ctx=5000, batch=4, beam=256, output=3): GR=154.224 ms vs Baseline=349.857 ms — ~2.27× gyorsabb
- Offline latency (ctx=5000, batch=8, beam=256, output=3): GR=307.917 ms vs Baseline=685.354 ms — ~2.23× gyorsabb
- Online serving throughput (ctx=5000, concurrency=4, beam=256, output=3): GR≈19.7 req/s vs Baseline≈10.7 req/s — ~1.85× nagyobb
- Online median latency (ctx=5000, concurrency=4, beam=256, output=3): GR≈198 ms vs Baseline≈370 ms — ~46% alacsonyabb
- Offline correctness: Top1 exact 1.000, TopK overlap mean 0.960 a SGLang összehasonlításhoz képest.
Ezek az eredmények alátámasztják, hogy a Semantic ID-GR inferenciaút hatékonyan kiegészíti a HSTU és DynamicEmb komponenseket: míg HSTU és DynamicEmb a skálázható tanítást és embedding-súlyos inferenciát kezelik, a Semantic ID-pálya az autoregresszív ID-generálásra, hosszú kontextusokra és nagy beam-ekre optimalizál.
nv-embedding-cache (NVE)
Az nv-embedding-cache egy SDK nagyméretű embedding lookupok és műveletek gyorsítására recommender inferenciában. Moduláris komponenseket tartalmaz: optimalizált kernelt, szoftveres cache-primitíveket és PyTorch-kompatibilis kötéseket, ezzel alacsony késleltetésű hozzáférést biztosítva olyan embedding táblákhoz, amelyek meghaladják egyetlen GPU HBM kapacitását.
NVE hierarchikus lookup folyamatot valósít meg: GPU cache (HBM) mint hot tier, CPU cache (DRAM) mint warm tier, és távoli paraméter store (pl. Redis vagy RocksDB) a hideg réteg. A hot key promóció és a lockless invalidate-and-commit protokoll lehetővé teszi, hogy a lookupok és cache-módosítások párhuzamosan fussanak a GPU-n anélkül, hogy lefagyna a lookup stream. A sharding CUDA virtuális memórián keresztül kezelhető, így egy logikai tábla több GPU-t vagy node-ot is átfoghat.
NVE dob-in helyettesítőket ad (NVEmbedding, NVEmbeddingBag) a torch.nn.Embedding és torch.nn.EmbeddingBag számára, egyszerű integrációt biztosítva a PyTorch ökoszisztémával. A recsys-examples DynamicEmb tábláit is támogatja, megkönnyítve az átmenetet tanításból inferenciába.
Példaként DLRM v3 (az MLPerf generative recommender benchmark HSTU-alapú variánsa) esetében a recsys-examples és NVE kombinációja online szerver forgatókönyvben 99,997 queries/sec inferencia áteresztőképességet ért el.
Hogyan kezdjünk hozzá
A recsys-examples és nv-embedding-cache repók quick-start útmutatókat és részletes dokumentációt tartalmaznak az implementációkhoz és deploy-hoz. Ezek a komponensek együtt lehetővé teszik a generatív ajánlórendszerek ipari méretű képzését és alacsony késleltetésű inferenciáját NVIDIA GPU-kon.
Összefoglalás
A generatív ajánlórendszerek átkeretezik az ajánlást next-item predikciós feladattá, ami jobb egyesítést és skálázást kínál, de új operációs kihívásokat hoz: hatalmas, ritka beágyazások kezelése, cold-start és szigorú latency-SLA-k. Az NVIDIA recsys-examples és nv-embedding-cache komponensei — DynamicEmb, HSTU-optimalizált kerneles stack, GR-specializált inferenciaút és hierarchikus embedding cache — kézzelfogható teljesítmény- és hatékonyságnövekedést demonstrálnak az említett benchmarkokban és mérésekben.



