Autonomous Kinematic Agent

C/C++  •  RE  •  CUDA  •  PyTorch  •  RL  •  MLOps

Cel

Praktyczne wykorzystanie modeli LLM jako wsparcie w realizacji projektu w nieznanym środowisku technologicznym. Celem technologicznym było zbudowanie od zera autonomicznego agenta zdolnego opanować złożoną fizykę w przestrzeni 3D. Brak dostępu do kodu źródłowego silnika wymusił wspierane przez AI przeprowadzenie inżynierii wstecznej, zaprojektowanie procesów ETL, parserów oraz algorytmów Reinforcement Learningu.

Proces

Prace rozpoczęto od dostosowania dostępnego kodu źródłowego. Brak docelowej fizyki w wersji open source wymusił przeprowadzenie inżynierii wstecznej bibliotek (.dll). W celu uniknięcia halucynacji LLM, stworzono parser ekstrahujący oryginalne dane wejściowe. Następnie przepuszczono dane wejściowe przez pierwotną i zdekompilowaną bibliotekę potwierdzając zgodność matematyczną na poziomie 99,93%, a tym samym poprawność inżynierii wstecznej. Zweryfikowaną fizykę przepisano z C na Pythona, na cele architektury Zero-Copy. Środowisko zabezpieczono przed Reward Hackingiem.

Wynik

Stworzenie kompletnej infrastruktury do Reinforcement Learningu. Główną pętlę symulacyjną, bazującą na odtworzonej i zwalidowanej fizyce, osadzono bezpośrednio w pamięci VRAM. Proces strojenia hiperparametrów oraz agregacji metadanych wyizolowano na serwerze Proxmox, wykorzystując framework Optuna oraz bazę danych PostgreSQL. Taki podział ról zapewnił fizyczną separację operacji tensorowych od logiki zarządzającej, tworząc deterministyczne środowisko gotowe do właściwej fazy uczenia modelu.

Reverse Engineering & Ślepota Parsera

Odtworzono mechanikę docelowego środowiska na podstawie inżynierii wstecznej zamkniętych bibliotek (.DLL).

Pozwoliło to na wyizolowanie rdzenia fizycznego i skompilowanie symulatora w wersji headless, stanowiącego fundament pod trening sieci neuronowej.

Analizę zdekompilowanej biblioteki przeprowadzono przy użyciu środowiska Ghidra oraz modeli LLM.


Szczegóły techniczne

Na etapie dekompilacji pliku określono zmienne wybranej funkcji oraz jej kod maszynowy, jako wzorzec referencyjny dla LLM. Następnie dostarczono kod (ok. 70 tys. linii pseudokodu) oraz wzorzec dla LLM, który wyodrębnił resztę kluczowych funkcji.

Zgodność matematyczna zrekonstruowanej logiki wynosi 99,93% względem środowiska źródłowego.

Zidentyfikowano również krytyczne luki w parserze telemetrii, który ignorował część sygnałów wejściowych. W celu naprawy integralności danych opracowano algorytm wnioskujący, rekonstruujący brakujące parametry na podstawie wektorów ruchu w przestrzeni:

  • Akcje wertykalne: Bezpośredni odczyt flag bitowych zintegrowano z analizą wektora prędkości w osi Z.
  • Przemieszczenia lateralne: Wektor intencji kierunkowej jest wyliczany matematycznie na podstawie różnicy między globalnym wektorem pędu a kątem orientacji przestrzennej obiektu (Yaw).

Architektura Zero-Copy vs. Prawo Amdahla

W celu maksymalizacji przepustowości obliczeniowej zrealizowano wektoryzację logiki silnika fizycznego. Operacje przeniesiono z procesora centralnego na akceleratory graficzne, drastycznie zwiększając skalę i szybkość przetwarzania danych.

Zrezygnowano z gotowych frameworków wysokiego poziomu na rzecz natywnego środowiska CleanRL. Pozwoliło to na wdrożenie pełnej architektury Zero-Copy i całkowite wyeliminowanie wąskiego gardła komunikacyjnego na szynie PCIe.

Dalszą optymalizację wstrzymało Prawo Amdahla (narzut CPU na kolejkowanie zadań GPU). Wymusiło to odciążenie głównego procesora i migrację do architektury rozproszonej, włączając do układu serwer Proxmox z maszynami wirtualnymi oraz bazą SQL.


Szczegóły techniczne

Na cele przeniesienia obliczeń z CPU na GPU wykorzystano technologię NVIDIA Warp. Przeniesienie to pozwoliło zredukować jądro obliczeniowe do postaci zoptymalizowanego kernela tensorowego.

Zarówno symulacja fizyki, jak i aktualizacja wag sieci neuronowej odbywają się wewnątrz pamięci VRAM, bez konieczności kopiowania danych do pamięci RAM systemu.

Dalsza optymalizacja operacji tensorowych umożliwiła skalowanie liczby równoległych środowisk, osiągając następujące parametry przepustowości:

  • ~900 000 SPS (Steps Per Second): Przepustowość szczytowa zarejestrowana dla symetrycznych sieci MLP (Multilayer Perceptron) przy równoległej symulacji ponad 32 tysięcy instancji.
  • ~120 000 SPS: Ustabilizowana wydajność produkcyjna dla docelowej architektury Actor-Critic, obciążonej obliczeniami sekwencyjnymi pamięci krótkotrwałej (LSTM).

Reward Hacking i Problem Wczesnej Terminacji

Podstawowym wyzwaniem w treningu sieci w przestrzeni trójwymiarowej było zjawisko patologicznej optymalizacji (Reward Hacking).

Model wielokrotnie ewoluował w stronę suboptymalnych minimów lokalnych, m.in. celowo doprowadzając do wczesnego przerwania epizodów. Z perspektywy sieci była to optymalna matematycznie strategia minimalizacji strat.

Problem rozwiązano poprzez gruntowną przebudowę środowiska i wdrożenie złożonej funkcji nagród. Ustabilizowało to wariancję i wymusiło poprawną konwergencję algorytmu.


Szczegóły techniczne

Wdrożone mechanizmy niwelujące problem reward hackingu:

  • Nieliniowa ekonomia kar: Płaskie wartości zastąpiono krzywymi potęgowymi i mnożnikami konsystencji. Wektorowe operacje logiczne penalizują brak synergii wejść (sprzeczne wektory ruchu) w czasie O(1) natywnie na rdzeniach GPU.
  • Izolacja fazy początkowej: Wdrożono mechanizm maskowania początkowych kroków symulacji, wymuszając poprawną trajektorię na starcie. Pozwoliło to sieci na ominięcie wąskiego gardła oduczania i natychmiastową aktualizację wag pożądanymi wzorcami.

Architektura Oprogramowania (MLOps)

Opracowano dwuetapową architekturę przetwarzania. Proces rozpoczyna się od autorskiego parsera binarnych plików (.dm_91), który transformuje telemetrię na tablice tensorowe PyTorch (.pt).

Rdzeń obliczeniowy oparto na architekturze Zero-Copy w środowisku CleanRL. Środowisko symulacyjne (NVIDIA Warp i Reward Shaping) oraz sieć neuronowa (PPO z LSTM) zostały osadzone bezpośrednio w pamięci VRAM.

Wyeliminowało to wąskie gardło szyny PCIe, umożliwiając przetwarzanie danych wewnątrz pamięci GPU. Warstwę orkiestracji spina rozproszony framework Optuna, który asynchronicznie monitoruje metadane w bazie PostgreSQL i dynamicznie mutuje hiperparametry treningów.

Infrastruktura Obliczeniowa

Środowisko zostało fizycznie odseparowane, aby zmaksymalizować wydajność i uniknąć narzutu systemowego na procesy obliczeniowe. Zbudowano trójwęzłowy klaster badawczy.


Szczegóły techniczne

Infrastruktura klastra badawczego:

  • Główna jednostka (PC):AMD Ryzen 9 7900, 64GB DDR5, NVIDIA RTX 4070 Ti. Odpowiada za operacje tensorowe. Wykorzystywane wyłącznie rdzenie CUDA.
  • Control Plane (Proxmox VM): Maszyna wirtualna z systemem Zorin OS, pełniąca rolę mózgu operacyjnego. Utrzymuje framework Optuna, decydując o mutacjach hiperparametrów
    i zdalnie zlecając zadania do węzła obliczeniowego.
  • Data Storage Node (Proxmox LXC): Kontener systemowy utrzymujący relacyjną bazę PostgreSQL. Przyjmuje pakiety telemetryczne i metadane bezpośrednio z procesu uczącego,
    nie obciążając głównego procesora.
[ TELEMETRIA / TIME ]
VELOCITY (UPS)
YAW ANGLE (-180° / +180°)

Zapraszam do kontaktu

Porozmawiajmy.

Opisz swój problem

Ta podstrona zawiera symulacje 3D, które nie są przystosowane do urządzeń mobilnych.

Otwórz ten link na komputerze, aby zobaczyć pełne case study.

Wróć na stronę główną