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:
- slot na kartę microSD, na której znajduje się system operacyjny
- rozszerzenie do obsługi 40 pinów GPIO
- micro-USB do obsługi komunikacji z hostem lub zasilania
- port do obsługi ethernetu
- porty USB 3.0
- port HDMI
- DisplayPort
- DC Barrel Jack do zasilania z zewnętrznego zasilacza 5V 4A
- 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:
- Zasilić urządzenie i podłączyć je do sieci lokalnej za pomocą kabla ethernetowego lub poprzez adapter do sieci WIFI.
- Korzystając z komendy
ssh
połączyć się z urządzeniem. Hasło i login toswpb
. - 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.