Checkpointing agent razgovora u Postgres: Format koji je preživio GPU crash
Uvod u problem: GPU crash i gubitak podataka
Rad s AI agentima često uključuje dugotrajne sesije koje mogu trajati satima. Kada GPU crash iznenada prekine rad, gubitak podataka može biti katastrofalan. U našem slučaju, izgubili smo 12 sati rada agenta, što nas je potaknulo da razvijemo robusno rješenje za checkpointing.
Zašto Postgres?
Postgres nudi izvrsnu podršku za JSONB tip podataka, što ga čini idealnim za pohranu složenih struktura poput stanja razgovora. Osim toga, njegova ACID svojstva osiguravaju da će checkpoint biti konzistentan čak i u slučaju pada sustava.
Dizajn checkpoint formata
Naš format serijalizira tri ključne komponente:
- Cijelo stanje razgovora – sve poruke, kontekst i povijest interakcije.
- Pozive alata – evidencija svih poziva vanjskih alata i njihovih rezultata.
- LoRA kontekst – specifične težine i konfiguracije za fine-tuning modela.
Svaki checkpoint se pohranjuje kao JSONB objekt u Postgres tablicu, s vremenskom oznakom i identifikatorom sesije. Ključna optimizacija je da se serijalizacija izvodi u manje od 50 ms, što omogućuje često checkpointiranje bez utjecaja na performanse.
Implementacija i testiranje
Implementirali smo Python modul koji koristi psycopg2 za komunikaciju s Postgresom. Checkpoint se stvara nakon svake značajne promjene stanja, a u slučaju GPU crasha, agent se može vratiti na posljednji checkpoint i nastaviti rad bez gubitka podataka. Testiranje je pokazalo da čak i s velikim brojem poruka (preko 1000), serijalizacija traje manje od 50 ms.
Zaključak
Ovaj pristup ne samo da je riješio problem gubitka podataka, već je i poboljšao ukupnu pouzdanost sustava. Preporučujemo svima koji rade s dugotrajnim AI agentima da razmotre slično rješenje.
Zanima vas ovakva AI tehnologija?
RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.
Kontaktirajte nas →
Komentari