Wróć do projektów
AI & MLDostępny kod

Studium przypadku

Analiza zagęszczenia ludzi

Odporny pipeline mikroserwisowy w Pythonie, który kolejkuje analizę obrazów, wykonuje inferencję YOLO i asynchronicznie zapisuje wyniki.

Przegląd projektu

Kategoria
AI & ML

Technologie

  • Python
  • FastAPI
  • PostgreSQL
  • RabbitMQ
  • YOLO
  • Docker

Wewnątrz projektu

Kontekst

Projekt akademicki sprawdza, jak udostępnić zadanie inferencji AI jako niezawodny system rozproszony zamiast pojedynczego blokującego endpointu. Klient przekazuje adres obrazu, przetwarzanie odbywa się asynchronicznie, a końcowy wynik z liczbą osób udostępnia osobna usługa.

Rola

Zaprojektowałem i zaimplementowałem podział na usługi, interfejsy API, topologię RabbitMQ, workery przetwarzające i dostarczające wyniki, warstwę zapisu oraz zabezpieczenia pobierania obrazów z zewnętrznych adresów.

Ograniczenia

Inferencja obrazu może trwać długo lub zakończyć się błędem niezależnym od aplikacji. Architektura wymagała więc trwałych kolejek, kontrolowanych ponowień, rozdzielenia odpowiedzialności i ochrony przed SSRF podczas pobierania adresów podanych przez użytkownika.

Podejście

Usługa kolejkowania w FastAPI przyjmuje zadania i publikuje je w RabbitMQ. Worker przetwarzający bezpiecznie pobiera obraz, wykonuje inferencję Ultralytics YOLO i publikuje rezultat w oddzielnej kolejce. Worker dostarczający przekazuje ukończone wyniki do usługi FastAPI korzystającej z PostgreSQL. Dead Letter Exchanges oraz ponowienia z wykładniczo rosnącym opóźnieniem zapewniają niezawodność bez wiązania czasu odpowiedzi API z czasem działania modelu.

Rezultat

Powstał modułowy pipeline gotowy do uruchamiania w kontenerach, w którym przyjmowanie zadań, przetwarzanie AI, dostarczanie wyników i zapis danych mogą skalować się niezależnie. Błędy są widoczne i możliwe do obsłużenia, a publiczne API pozostaje responsywne nawet przy dłuższej inferencji.

Wnioski

Projekt pokazał, że produkcyjne systemy AI są w dużej mierze zadaniem z obszaru inżynierii systemowej. Czytelne kontrakty wiadomości, idempotentne dostarczanie, polityki ponowień i bezpieczna obsługa sieci zmieniają pojedyncze wywołanie modelu w niezawodną usługę.

Odporny pipeline mikroserwisowy w Pythonie, który kolejkuje analizę obrazów, wykonuje inferencję YOLO i asynchronicznie zapisuje wyniki.

Zobacz wszystkie projekty