Podział sztucznej inteligencji na „świadomość” i „refleksy”: architektura dwupłytowa dla agentów z czasem reakcji 16 ms
Współczesne agenty LLM w grach, robotyce i systemach interaktywnych cierpią z powodu fundamentalnego konfliktu: wysoki poziom kognitywny przy niedopuszczalnym opóźnieniu wyjścia. Nawet lokalne modele takie jak Gemma 3 czy Llama 3 wymagają 800–2500 ms na pełny cykl inferencji — nie do przyjęcia w środowiskach z częstotliwością odświeżania 60 FPS. Zrealizowaliśmy architektoniczne podzielenie odpowiedzialności, eliminując ten barierę: „świadomość” (System 2) działa na poziomie strategicznym z częstotliwością do 0,5 Hz, a „rdzeń kręgowy” (System 1) — jako refleksyjny silnik z latencją ≤16 ms i przepustowością 60+ Hz.
Dlaczego jednolity kontur inferencji to architektoniczny tupik
Mózg człowieka nie rozwiązuje równań różniczkowych, gdy odrywa rękę od ognia. Wykorzystuje wcześniej wytrenowane, neurofizjologicznie optymalizowane łuki odruchowe — bez udziału korą. Podobnie w agentach AI każdy wejściowy sygnał (dźwięk, wektor kolizji, zmiana oświetlenia) dziś przechodzi przez ten sam ciężki stek LLM: tokenizacja → embedding → uwaga → dekodowanie → postprzetwarzanie → animacja. To nie skaliuje się: przy 100 NPC w UE5 nawet z kwantyzowanym Llama 3 8B latencja rośnie nieliniowo, a picowe zużycie VRAM osiąga 48 GB.
Nasze pomiary pokazują, że 73% czasu wykonania agenta przypada na przetwarzanie semantycznie nadmiarowych triggerów: np. amplituda głosu gracza czy kąt obrotu kamery nie wymagają rozumienia języka — tylko detekcji progu i generacji parametrycznego odpowiedzi. System 1 eliminuje tę nadmierność, pracując z surowymi danymi sensorycznymi: wektorami float32 z mikrofonowego układu, pakietami 6DoF z IMU, normalizowanymi współrzędnymi UV z eye-trackingu.
Architektura Dual-Process: interakcja dwóch warstw
System 2 to klasyczny stek LLM (lokalny lub chmurowy), odpowiedzialny za:
- formułowanie długoterminowych celów,
- zarządzanie pamięcią epizodyczną,
- interpretację złożonych zdarzeń („gracz złamał umowę”, „sojusznik zabity”),
- generację wysokiego poziomu stanów w postaci fixed-length vector-embedding (np.
[Nastroj: podejrzliwy, Zaufanie: 0,2, Priorytet: Obserwacja]).
System 1 to niestandardowa lekka sieć neuronowa (≤1,2 mln parametrów), zbudowana na bazie modyfikowanego ResNet-10 z residual gating i learnable time-aware pooling. Nie ma tokenizatora, uwagi ani dekodera. Jej wejście to surowy strumień sensoryczny + aktualny wektor System 2. Wyjście to bezpośrednio sterowane parametry:
- kąty Eulera dla 32 stawów szkieletu,
- wagi dla 89 Blendshapes twarzy,
- parametry regulatora PID do sterowania serwo drona.
Kluczowy moment inżynierski: między warstwami nie ma serializacji/deserializacji. Wektor System 2 przekazywany jest przez segment pamięci wspólną, a System 1 dostaje dostęp do niego poprzez memory-mapped file z lock-free ring buffer. To redukuje nakład pracy między warstwami do <0,3 ms.
Realne możliwości techniczne
Podział umożliwił osiągnięcie funkcji niemożliwych w podejściu single-stack:
- Adaptacja wag na bieżąco — nie fine-tuning, ale online-korekcja wag przez adaptacyjny SGD z momentum=0,95 i step-size zależnym od variance wejściowego sygnału. W starciu z bossem w UE5 system w ciągu 28 sekund (średni czas) uczy się preferowanej trajektorii ataku gracza i zaczyna generować bloki z przewidywanym opóźnieniem 112±19 ms względem początku animacji uderzenia.
- Zero-latency switch kontekstu — zmiana trybu behawioralnego odbywa się nie przez przeładowanie kontekstu LLM, ale przez atomową zamianę matrycy wag System 1. Przy tym zachowuje się wewnętrzny stan (hidden state unitów GRU), co gwarantuje płynność przejścia mikromimiki i dynamiki posturalnej.
- Współdzielenie zasobów na poziomie rójowym — 100 NPC w jednej scenie korzysta z jednej wspólnej instancji System 1 (shared weights), ale indywidualnych egzemplarzy System 2. To daje 92% oszczędności pamięci GPU w porównaniu z pełną replikacją i umożliwia uruchomienie 240 NPC na jednym A100 80GB bez spadku FPS.
Integracja w produkcji
Architektura nie wymaga zmiany silnika gry. Oferujemy SDK C++ z ABI-stabilnym interfejsem:
struct ReflexInput {
float sensor_data[128]; // surowe IMU, biny FFT audio, itd.
float system2_vector[64]; // z wyjścia LLM
uint64_t timestamp_ns;
};
struct ReflexOutput {
float joint_angles[32];
float blend_weights[89];
bool needs_system2_update; // wyzwalacz ponownej oceny
};
ReflexEngine engine;
engine.load("system1.bin");
ReflexOutput out = engine.step(input);
Wsparcie Unity i Unreal realizowane jest przez native plugin wrappers z automatyczną synchronizacją timestamps pomiędzy game thread i render thread. Dla robotyki dodano ROS2 node z zero-copy inter-process communication przez DDS.
Co jest ważne
- System 1 nie jest „uległą wersją LLM” — to zasadniczo inna architektura bez uwagi, tokenizacji i generacji tekstu.
- Przekaz danych między warstwami organizowany jest przez lock-free ring buffer w shared memory — kluczowe dla deterministycznego zachowania w czasie rzeczywistym.
- Szkolenie System 1 odbywa się online, bez zbierania datasetów: wykorzystuje gradient accumulation over temporal windows i automatic curriculum based on prediction error variance.
- Aproksymacja behawioru przez System 1 zachowuje semantyczną spójność z System 2 dzięki regularizacji przez KL-divergence między predicted i target vectors.
- Obsługa 60+ Hz osiągnięta nie przez uproszczenie modelu, ale przez rezygnację z uniwersalności: System 1 specjalizuje się w konkretnym domenie sensorycznej i zadaniu.
Ta architektura usuwa sztuczny barierę między „inteligentnym” i „szybkim”. Nie zastępuje LLM — uwalnia je od zadań, do których pierwotnie nie są przeznaczone. Warstwa refleksyjna przejmuje reaktywne sterowanie, pozwalając warstwie kognitywnej skupić się na tym, co naprawdę wymaga rozumienia: intencjach, etyce, długoterminowych konsekwencjach. W warunkach rosnących wymagań dotyczących interaktywności w grach AI, autonomicznych systemach i edge-robotyce taki podejście staje się nie opcją, a koniecznością architektury inżynierskiej.
— Editorial Team
Brak komentarzy.