09 - Akceleracja obliczeń z wykorzystaniem NVIDIA CUDA i TensorRT

Systemy Wbudowane i Przetwarzanie Brzegowe

Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej

Ćwiczenie laboratoryjne 09: Akceleracja obliczeń z wykorzystaniem NVIDIA CUDA i TensorRT

Powrót do spisu treści ćwiczeń laboratoryjnych

Wstęp

NVIDIA Jetson Nano jest to mały wydajny komputer jednopłytkowy (SBC - Single Board Computer) przeznaczony do zastosowań związanych z uczeniem maszynowym oraz przetwarzaniem obrazów. Urządzenie to jest wyposażone w procesor graficzny (GPU) NVIDIA Maxwell z 128 rdzeniami CUDA, procesor ARM Cortex-A57 4 rdzeniowy, oraz 4GB pamięci RAM. Urządzenie to jest kompatybilne z wysokowydajną biblioteką TensorRT oraz platformą do obliczeń równoległych CUDA.


Źródło grafiki: Getting Started with Jetson Nano Developer Kit

Na powyższym schemacie wymienione są następujące komponenty:

  1. slot na kartę microSD, na której znajduje się system operacyjny
  2. rozszerzenie do obsługi 40 pinów GPIO
  3. micro-USB do obsługi komunikacji z hostem lub zasilania
  4. port do obsługi ethernetu
  5. porty USB 3.0
  6. port HDMI
  7. DisplayPort
  8. DC Barrel Jack do zasilania z zewnętrznego zasilacza 5V 4A
  9. MIPI CSI-2 port do obsługi kamery

Przygotowanie karty SD z obrazem systemu operacyjnego

Wszystkie niezbędne informacje oraz kroki, które należy wykonać aby przygotować urządzenia typu NVIDIA Jetson Nano można znaleźć w instrukcji Getting Started with Jetson Nano Developer Kit.

UWAGA: karty SD z systemem operacyjnym NVIDIA JetPack zostały już przygotowane przez prowadzącego i nie należy ich nadpisywać. Powyższa instrukcja odnosi się jedynie do użytkowania poza zajęciami.

Uruchomienie systemu

Komputery PC oraz NVIDIA Jetson Nano znajdują się w jednej sieci lokalnej. W celu uzyskania dostępu do urządzenia należy wykonać następujące kroki:

  1. Zasilić urządzenie i podłączyć je do sieci lokalnej za pomocą kabla ethernetowego lub poprzez adapter do sieci WIFI.
  2. Korzystając z komendy ssh połączyć się z urządzeniem. Hasło i login to swpb.
  3. W celu przesyłania obrazu poprzez połączenie SSH należy skorzystać z X11 forwarding. W takim przypadku, przy łączeniu z urządzeniem należy dodać opcję -X. Przykładowo: ssh -X [email protected]

CUDA

NVIDIA CUDA jest to uniwersalna architektura graficznych procesorów wielordzeniowych (GPU) umożliwiająca wykorzystanie ich mocy obliczeniowej do rozwiązywania ogólnych problemów numerycznych w wydajniejszy sposób niż przy użyciu tradycyjnych, sekwencyjnych procesorach ogólnego zastosowania (CPU). Zestaw narzędzi CUDA zawiera biblioteki z akceleracją GPU, kompilator, narzędzia deweloperskie oraz środowisko uruchomieniowe. Powyższe komponenty są wspierane przez powszechnie używane języki programowania takie jak C++ lub Python.

TensorRT

TensorRT to oprogramowanie opracowane przez NVIDIA, które umożliwia optymalizację i przyspieszenie modeli sieci neuronowych na platformach GPU. Dzięki TensorRT można skutecznie wykorzystać moc obliczeniową GPU, osiągając wysoką wydajność i niskie opóźnienia. Oprogramowanie to automatycznie optymalizuje modele, redukując liczbę operacji oraz minimalizując zużycie pamięci, co przekłada się na szybsze i bardziej efektywne przetwarzanie danych.


Źródło grafiki: TensorRT

Zadania do samodzielnej realizacji


Zadanie 1.
Korzystając z interaktywnej instrukcji przetestuj i wyeksportuj model detekcji obiektów YOLOv8 do formatu ONNX. Następnie przetestuj jego działanie w środowisku chmurowym z wykorzystaniem biblioteki ONNX Runtime oraz akceleratorów CPU, CUDA, oraz TensorRT. Sprawdzony model pobierz i prześlij na urządzenie NVIDA Jetson Nano korzystając z polecenia scp.


Zadanie 2.
Pobierz i uzupełnij skrypt. Uruchom skrypt na urządzeniu NVIDIA Jetson Nano i sprawdź czas wykonywania modelu z wykorzystaniem biblioteki ONNX Runtime oraz akceleratorów CPU, CUDA, oraz TensorRT.