Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

NVIDIA Jetson AGX Orin – Grundlegende Einrichtung

NVIDIA Jetson AGX Orin with code

Installing the O/S and Jetpack SDK, connecting a video camera, and building and running an AI inference example with a pre-trained model.

In diesem Artikel werfen wir einen Blick auf die grundlegende Einrichtung des NVIDIA Jetson AGX Orin. Dabei verwenden wir den integrierten 64 GB eMMC-Speicher für die Installation von Betriebssystem und SDK und führen einige der mitgelieferten Beispiele mit einer USB-Kamera aus, um den korrekten Betrieb zu verifizieren. Eine Einführung in die Jetson GPU-beschleunigte SoM-Familie (System-on-Module), einige geschichtliche Hintergrundinformationen und die Spezifikationen des aktuellen Flaggschiff-Modells AGX Orin finden Sie in unserem früheren Artikel „Erster Blick auf den NVIDIA Jetson AGX Orin“.

Installation

Die Installation der Basissoftware besteht aus zwei Hauptkomponenten: dem Betriebssystem (O/S) – auch bekannt als Board Support Package (BSP) – und dem Jetpack SDK. Der erste bietet uns eine vertraute Ubuntu-basierte Desktop-Umgebung, die für die Hardware konfiguriert ist, während das Jetpack SDK Werkzeuge wie das CUDA-Toolkit bietet, das für den Aufbau von GPU-beschleunigten Anwendungen erforderlich ist, zusammen mit KI-Frameworks und Beispielen, die dies nutzen.

Optionen

plugging in the NVIDIA Jetson AGX Orin

Es gibt hauptsächlich zwei Möglichkeiten, die Jetson AGX Orin-Entwicklerkit-Software einzurichten:

  1. Mit Hilfe des „Standard-Installationsablaufs“ über die Ubuntu-Installation, die bereits auf den internen eMMC-Speicher geschrieben wurde;
  2. Verwendung des „optionaler Installationsablaufs“ mit SDK Manager auf einem Linux-System oder einem Windows-Computer mit installiertem Windows Subsystem für Linux (WSL).

Die erste Methode ist bei weitem die schnellste und auch diejenige, die wir hier verwenden werden. Der optionale Installationsablauf nutzt den NVIDIA SDK Manager, der eine durchgängige Lösung für die Einrichtung von Entwicklungsumgebungen für NVIDIAs DRIVE-, Jetson-, Holoscan-, Rivermax-, DOCA- und Ethernet-Switch-SDKs sowohl für Host- als auch für Zielgeräte bietet.“ Mit diesem Tool, das auf einem anderen Computer ausgeführt wird, können wir die Komponenten das Linux-System für Tegra (L4T) BSP und die Komponenten des NVIDIA JetPack SDK konfigurieren und auf das Gerät übertragen. Außerdem muss der SDK Manager verwendet werden, wenn die Installation auf einer NVMe-SSD oder einem USB-Speicherstick statt auf der integrierten eMMC erfolgen soll.

Der Standard-Installationsablauf kann entweder über eine angeschlossene Tastatur, einen Monitor und eine Maus oder alternativ im Headless-Modus (ohne Monitor) gesteuert werden. Im ersten Fall müssen wir einen DisplayPort-Monitor anschließen, während wir im zweiten Fall sicherstellen müssen, dass kein Monitor angeschlossen ist, und stattdessen das mitgelieferte USB-C-Kabel in die Buchse an der 40-Pin-Anschlussleiste einstecken, wobei das USB-A-Ende des Kabels in einen anderen Computer eingesteckt wird, wo wir einen Terminalemulator ausführen können, um die Einrichtung abzuschließen.

Es ist egal, wie wir die anfängliche Ubuntu-Systemkonfiguration durchführen – über Tastatur, Monitor und Maus oder im Headless-Betrieb -, denn in beiden Fällen können wir einen Monitor für den grafischen Desktop-Zugriff anschließen und uns über den USB-UART anmelden, auf den wir über den bereits erwähnten USB-C-Anschluss zugreifen.

Betriebssystem

System configuration screen - selecting English

Wir haben uns entschieden, mit dem standardmäßigen Ablauf für die Ersteinrichtung der Software fortzufahren und eine Headless-Konfiguration zu verwenden. In der Kurzanleitung finden Sie Einzelheiten sowohl zu dieser Konfiguration als auch zur Verwendung von Tastatur, Monitor und Maus, und zwar über Registerkarten, die bei jedem Schritt ausgewählt werden können.

Mit der Headless-Konfiguration und dem bereits erwähnten USB-C-Anschluss, der mit einem anderen Computer mit Linux verbunden ist, stellen wir kurz nach dem Einschalten fest, dass sich das AGX Orin als /dev/ttyACM0 anmeldet. Wir können dann eine Verbindung mit dem Anschluss über den Bildschirm oder alternativ über einen Terminalemulator wie z. B. minicom herstellen.

$ sudo apt install screen

$ sudo screen /dev/ttyACM0 115200

Bei einer Verbindung über einen Windows-Computer können wir stattdessen eine frei verfügbare Terminalemulationssoftware wie Putty verwenden.

Beachten Sie, dass der USB-UART durch Drücken der Reset-Taste verschwindet und unsere Terminalsitzung beendet wird. Dann müssen wir die Verbindung erneut herstellen, sobald der Anschluss neu aufgelistet wird.

Nach der Verbindung wurden wir aufgefordert, einer EULA zuzustimmen, woraufhin wir die Sprache auswählen konnten. Die folgenden Konfigurationsschritte sind ziemlich genau dieselben wie bei der Installation von Ubuntu auf einem normalen Computer, und anstatt jeden einzelnen Schritt im Detail zu beschreiben, fassen wir ihn hier zusammen.

System configuration screen - Selecting Keyboard Country

Die auszuwählende Tastatur ist selbstverständlich diejenige, die über USB angeschlossen ist und auch mit einem Monitor und einer Maus verwendet werden soll.

System configuration screen - Partition Size

Im Allgemeinen wurden die Standardeinstellungen gewählt, z. B. die Partitionsgröße.

System configuration screen - Ethernet setting

Obwohl standardmäßig die Netzwerkschnittstelle dummy0: ausgewählt war, wurde diese in eth0: geändert.

System configuration screen - new user setup

Es wurde ein primäres Benutzerkonto erstellt, das mit sudo (admin) Zugang eingerichtet wird.

System configuration screen - hostname setup

Es wurde ein sinnvoller Hostname eingegeben.

System configuration screen - hardware detection

Die Hardware wurde geprüft und die Installation abgeschlossen.

System configuration screen - Installation Complete

Wir können nun den zuvor konfigurierten Benutzernamen und das Passwort eingeben, um uns beim System anzumelden.

Nachdem der AGX Orin nun im Netzwerk eingebunden war und sshd lief, war es jedoch bequemer, sich von einem anderen Computer aus mit ssh zu verbinden, um die grundlegende Einrichtung abzuschließen.

Jetpack SDK

Release version

Im Leitfaden werden wir darauf hingewiesen, dass wir zunächst die APT-Repositories konfigurieren müssen, wenn wir mit einer Version unterhalb von R34 arbeiten. Bei der Überprüfung stellte sich jedoch heraus, dass wir die Version R35 installiert hatten und diesen Schritt daher nicht durchführen mussten. Es war also lediglich erforderlich, die Pakete der Ubuntu-Distribution zu aktualisieren und dann Jetpack mithilfe von APT zu installieren.

$ sudo apt update

$ sudo apt dist-upgrade

$ sudo reboot

$ sudo apt install nvidia-jetpack

Der letzte Befehl hat eine Weile gedauert, da das Jetpack-SDK eine recht große Menge an Software enthält und daher eine Menge heruntergeladen und entpackt werden muss.

information about the driver and CUDA versions

Auf einem Computer mit einem PCIe-Grafikprozessor könnten wir an dieser Stelle das Befehlszeilenprogramm nvidia-smi ausführen, um Informationen über den Treiber und die CUDA-Versionen sowie GPU-Informationen wie Temperatur, Auslastung und Prozesse zu erhalten. Mit dem Jetson steht uns dies jedoch nicht zur Verfügung, aber es gibt ein Dienstprogramm, das wir kompilieren und dann ausführen können, um ähnliche Informationen zu erhalten.

$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery

$ sudo make

$ ./deviceQuery

Die Ausgabe auf dem Jetson AGX Orin 64 GB ist oben abgebildet.

Wir haben nun also unser Ubuntu Betriebssystem installiert, das Jetpack SDK konfiguriert und sichergestellt, dass wir Zugang zu einem CUDA-fähigen Gerät für GPU-beschleunigte Anwendungen haben.

Da viele der vorgestellten Beispiele und typischen Anwendungsfälle Inferenzen mit Videostreaming beinhalten, sehen wir uns als nächstes die Einrichtung einer Videokamera an.

Kameraoptionen

Camera connection

Wenn wir eine oder mehrere CSI-Kameras direkt anschließen wollten – Jetson AGX Orin kann bis zu 8x CSI-Kameras anschließen, wobei bis zu 6x gleichzeitig gestreamt werden können – bräuchten wir eine Interface-Platine, die mit dem digitalen Hochgeschwindigkeitsanschluss von Samtec auf der Unterseite verbunden wird, der dann in einen oder mehrere FFC-Anschlüsse oder ähnlichen Anschlüssen übergeht.

Camera

In unserem Fall und für die Zwecke der anfänglichen Prüfung verwenden wir jedoch eine „treiberlose“ USB-Plug-and-Play-UVC-Kamera.

Screen capture

Am einfachsten lässt sich die Funktionstüchtigkeit der Kamera überprüfen, indem Sie sich über Tastatur, Monitor und Maus am System anmelden und dann einen Aufzeichnungsbefehl ausführen:

$ nvgstcapture-1.0 --camsrc=0 --cap-dev-node=0

Dadurch wird eine Live-Videoübertragung vom ersten Gerät aufgezeichnet. Wenn wir mehr als eine Kamera verwenden, könnten wir stattdessen --cap-dev-node=1 usw. setzen.

Weitere Einzelheiten zur Video- und Standbildaufnahme finden Sie unter „Taking Your First Picture with CSI or USB Camera“.Taking Your First Picture with CSI or USB Camera.

Hello AI World

Getting started information

Die Kurzanleitung „Erste Schritte“ enthält eine Reihe von Links für die nächsten Schritte, sobald alles eingerichtet ist. Dazu gehören Links zu KI-Tutorials und -Kursen von NVIDIA, z. B. Hello AI World und der Kurs Jetson AI Fundamentals, um nur einige zu nennen. Es gibt genügend Informationsmaterial, das Sie bei der Erstellung und Ausführung Ihrer ersten KI-Anwendungen bis hin zur Verwendung von Software wie DeepStream SDK, Triton Inference Server und TAO Toolkit unterstützt.

Wir haben uns Hello AI World, eine „Anleitung für die Inferenz- und Echtzeit-Vision-DNN-Bibliothek für NVIDIA Jetson-Geräte“, bereits in dem Artikel „Der NVIDIA Jetson Nano im praktischen Einsatz“ angeschaut. Daher werden wir hier nur schnell unser erstes Beispiel für eine Inferenz ausführen.

Die Paketabhängigkeiten für das Betriebssystem wurden installiert, das jetson-inference-Repositorium geklont und das Projekt mit den folgenden Schritten aus den Quelldateien erstellt:

$ sudo apt-get install git cmake libpython3-dev python3-numpy

$ git clone --recursive --depth=1 https://github.com/dusty-nv/jetson-inference

$ cd jetson-inference

$ mkdir build

$ cd build

$ cmake ../

$ make -j$(nproc)

$ sudo make install

$ sudo ldconfig

Wenn die Inferenzbeispiele erstellt und installiert sind, muss man nur noch eines auswählen und die Parameter, z. B. das Modell, für die Verwendung festlegen.

Als zufällige Auswahl haben wir ein Beispiel für eine Live-Kamera-Segmentierung gewählt, bei der eine C++-Implementierung mit einem vortrainierten Multi-Human-Parsing-Modell (MHP) verwendet wurde. Der Befehl zum Starten dieses Vorgangs und zum gleichzeitigen Erfassen der Ausgabe lautet:

$ segnet --network=fcn-resnet18-mhp /dev/video0 output.mp4

Wenn wir den Ausgabestream nicht aufzeichnen wollten, würden wir output.mp4 einfach weglassen.

In dem obigen Video können wir erkennen, wie das Modell den Autor sehr effektiv als menschliches Wesen erkennt. Leider standen zu diesem Zeitpunkt nicht mehr Personen zur Verfügung, um die Mehrpersonenfähigkeit zu testen.

Timing Report

Währenddessen können wir sehen, wie ein Timing-Bericht im Terminalfenster ausgegeben wird.

Abschließende Worte

In diesem Artikel haben wir uns die verschiedenen Installationsmöglichkeiten von Ubuntu O/S und NVIDIA Jetpack SDK auf dem Jetson Orin AGX angesehen und anschließend die Standard-Installation auf eMMC-Speicher über eine Headless-Konfiguration durchgeführt. Anschließend haben wir uns die Kameraoptionen angeschaut und den Betrieb einer USB-Kamera überprüft, bevor wir die Inferenzbeispiele von Hello AI World erstellt und eines davon mit Live-Videostreaming und de MHP-Modell ausgeführt haben.

Nun haben wir unser Jetson AGX Orin System eingerichtet und können mit dem Tutorial und dem Kursmaterial fortfahren oder mit der Entwicklung von CUDA-beschleunigten Anwendungen für Embedded-Szenarien weitermachen.

  — Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.