Opublikowano wydanie frameworka Python, Savant 0.2.7, który upraszcza korzystanie z NVIDIA DeepStream do rozwiązywania problemów związanych z uczeniem maszynowym. Framework zajmuje się całym skomplikowanym przetwarzaniem z GStreamer lub FFmpeg, pozwalając skupić się na budowaniu zoptymalizowanych potoków wyjściowych za pomocą deklaratywnej składni (YAML) i funkcji Pythona. Savant umożliwia tworzenie potoków (pipeline), które działają zarówno na akceleratorach w data center (NVIDIA Turing, Ampere, Hopper), jak i na urządzeniach brzegowych (NVIDIA Jetson NX, AGX Xavier, Orin NX, AGX Orin, New Nano). Dzięki Savant można łatwo przetwarzać wiele strumieni wideo jednocześnie, szybko tworzyć gotowe do użycia potoki analityki wideo, korzystające z NVIDIA TensorRT. Kod projektu jest udostępniany na licencji Apache 2.0.
Savant 0.2.7 to najnowsze wydanie z zmianą funkcjonalności w gałęzi 0.2.X. Kolejne wydania w gałęzi 0.2.X będą zawierać wyłącznie poprawki błędów. Rozwój nowych funkcji będzie prowadzone w gałęzi 0.3.X, opartej na DeepStream 6.4. Ta gałąź nie będzie wspierać rodziny urządzeń Jetson Xavier, ponieważ firma NVIDIA nie wspiera ich w DS 6.4.
Główne nowości:
- Nowe przykłady zastosowania:
- Przykład pracy z modelem detekcji opartym na transformatorze RT-DETR;
- Postprocessing CUDA z użyciem CuPy dla YOLOV8-Seg;
- Przykład integracji PyTorch CUDA w potoku Savant;
- Demonstracja pracy z obiektami mobilnymi.

- Nowe funkcje:
- Integracja z Prometheus. Potok może eksportować metryki wydajności do Prometheus i Grafana w celu monitorowania i śledzenia wydajności. Programiści mogą zadeklarować niestandardowe metryki, eksportowane razem z metrykami systemowymi.
- Adapter buforowy — implementuje stały bufor transakcyjny na dysku dla danych przesyłanych między adapterami a modułami. Umożliwia to rozwój wysokoobciążonych potoków, nieprzewidywalnie zużywających zasoby i wytrzymujących szczyty ruchu. Adapter eksportuje w Prometheus swoje dane dotyczące elementów i rozmiarów.
- Tryb kompilacji modeli. Moduły mogą teraz kompilować swoje modele w TensorRT bez uruchamiania potoku.
- Obsługa zdarzenia shutdown w PyFunc. To nowe API umożliwia prawidłowe zarządzanie operacjami zakończenia pracy potoku, uwalniając zasoby i informując systemy zewnętrzne o zakończeniu pracy.
- Filtracja klatek na wejściu i wyjściu. Domyślnie potok przyjmuje wszystkie klatki zawierające dane wideo. Dzięki filtracji na wejściu i wyjściu deweloperzy mogą filtrować dane, aby wykluczyć ich przetwarzanie.
- Postprocessing modelu na GPU. Dzięki nowej funkcji deweloperzy mogą uzyskać dostęp do wyjściowych tensorów modelu bezpośrednio z pamięci GPU, nie ładując ich do pamięci CPU i przetwarzając je za pomocą CuPy, TorchVision lub OpenCV CUDA.
- Funkcje reprezentacji pamięci GPU. W tej wersji wprowadziliśmy funkcje do konwersji buforów pamięci między OpenCV GpuMat, tensorami GPU PyTorch i tensorami CuPy.
- API dostępu do statystyki użycia kolejek potoku. Savant umożliwia dodawanie kolejek między PyFunc w celu realizacji równoległego przetwarzania i buforowania przetwarzania. Dodane API zapewnia deweloperom dostęp do kolejek wdrożonych w potoku oraz pozwala na zapytanie ich użycia.
W następnej wersji (0.3.7) planowane jest przejście na DeepStream 6.4 bez rozszerzeń funkcjonalności. Idea polega na uzyskaniu wydania w pełni zgodnego z 0.2.7, ale opartego na DeepStream 6.4 oraz ulepszonej technologii, bez łamania zgodności na poziomie API.
Źródło: opennet.ru

