Przejdź do głównej zawartości

NVIDIA DeepStream

Jak uruchomić NVIDIA DeepStream (analityka wideo i przetwarzanie strumieni) jako zasób obliczeniowy w CGC i tworzyć własne aplikacje DeepStream.

Teksty pochodzą z oficjalnej strony internetowej.

NVIDIA DeepStream to kompleksowy zestaw narzędzi do przetwarzania strumieniowego, oparty na GStreamer, przeznaczony do przetwarzania wideo, dźwięku i obrazów z wykorzystaniem sztucznej inteligencji.

Dzięki niemu możesz tworzyć zaawansowane potoki przetwarzania strumieniowego, które integrują sieci neuronowe oraz inne złożone zadania, takie jak śledzenie obiektów, kodowanie/dekodowanie wideo oraz renderowanie wideo. Te potoki umożliwiają analizę danych z wideo i obrazów w czasie rzeczywistym.

Utwórz aplikację DeepStream w CGC SDK​

Na początek, utwórz aplikację DeepStream w CGC SDK, korzystając z poniższego polecenia:

cgc compute create -n <name> -c <cpu_cores> -m <RAM GiB> -g <gpu_count> -gt <gpu_type> deepstream --repository-secret <secret_name>
  • -n, --name - nazwa zasobu obliczeniowego
  • -g, --gpu - ilość podłączonych GPU
  • -gt, --gpu-type - typ podłączonego GPU, nazwany jak w cgc status (NVIDIA-RTX-A5000 | NVIDIA-A100-SXM4-80GB | NVIDIA-B200) domyślnie = NVIDIA-RTX-A5000
  • -c, --cpu - liczba rdzeni CPU
  • -m, --memory - ilość pamięci RAM w GiB
  • --repository-secret - nazwa sekretu rejestru używanego do pobrania obrazu, utworzonego poleceniem cgc secret create. Dla tego szablonu jest wymagana: bez niej API odrzuca żądanie komunikatem Required CGC specific parameter: image_pull_secret_name

Aplikacja uruchamia obraz nvcr.io/nvidia/deepstream:7.1-triton-multiarch, więc SDK jest zainstalowane w /opt/nvidia/deepstream/deepstream-7.1. Dowiązanie /opt/nvidia/deepstream/deepstream zawsze wskazuje na zainstalowaną wersję, więc możesz używać go zamiast ścieżki z numerem wersji.

Warning

Aplikacja DeepStream działa w kontenerze i nie zawiera bibliotek niezbędnych do wykonywania niektórych operacji multimedialnych, takich jak parsowanie danych audio, dekodowanie CPU i kodowanie CPU. Ta zmiana może wpłynąć na przetwarzanie niektórych strumieni wideo/plików, takich jak mp4, które zawierają ścieżkę audio. Uruchom poniższy skrypt wewnątrz utworzonej aplikacji, aby zainstalować dodatkowe pakiety (np. gstreamer1.0-libav, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, w zależności od potrzeb), które mogą być wymagane do pełnego korzystania z funkcji DeepStreamSDK: /opt/nvidia/deepstream/deepstream/user_additional_install.sh

cd /opt/nvidia/deepstream/deepstream
./user_additional_install.sh

Czasami przy strumieniach RTSP aplikacja zatrzymuje się po osiągnięciu EOS (End of Stream). Jest to spowodowane problemem z komponentem rtpjitterbuffer. Aby rozwiązać ten problem, dostarczono skrypt update_rtpmanager.sh w katalogu /opt/nvidia/deepstream/deepstream, zawierający niezbędne informacje do zaktualizowania biblioteki gstrtpmanager.

cd /opt/nvidia/deepstream/deepstream
./update_rtpmanager.sh

Domyślna konfiguracja​

Te argumenty są dodawane domyślnie do aplikacji DeepStream przy uruchamianiu polecenia jupyter lab:

  • --ip=0.0.0.0 - wiąże aplikację z wszystkimi dostępnymi adresami IP
  • --port=8888 - ustawia port, na którym aplikacja nasłuchuje
  • --allow-root - pozwala użytkownikowi root na dostęp do aplikacji

Utwórz własną aplikację z DeepStream i CGC SDK​

Aby rozpocząć tworzenie swojej pierwszej aplikacji z DeepStream i CGC, należy utworzyć wolumen zamontowany do już utworzonego zasobu obliczeniowego (aplikacji DeepStream) oraz filebrowsera w celu zabezpieczenia postępów pracy, niezależnie od okoliczności.

Warning

Wolumen zostanie zamontowany pod ścieżką /workspace/{name-of-your-volume}. Aby móc uruchomić swój kod wewnątrz kontenera DeepStream, trzeba utworzyć dowiązanie symboliczne do swojego wolumenu, aby był on dostępny z poziomu /opt/nvidia/deepstream/deepstream.

ln -s /workspace/{name-of-your-volume} /opt/nvidia/deepstream/deepstream/{name-of-your-volume}
cd /opt/nvidia/deepstream/deepstream/{name-of-your-volume}

Teraz jesteś gotowy do tworzenia swojej pierwszej aplikacji z DeepStream i CGC SDK.

Przykładowe aplikacje​

Python bindings and sample applications

DeepStream Python boilerplate