inteintegrity2026-10-22

Bild- und Sprachmodelle auf dem Raspberry Pi 5 mit RK1820 ausführen

Verbinden Sie einen RK1820-M.2-Beschleuniger über PCIe mit dem Raspberry Pi 5 und führen Sie MobileNetV2 und Qwen2.5-0.5B lokal mit RKNN3 Runtime 1.1.0 aus.

Raspberry PiRK1820RKNN3Rockchip

Der Raspberry Pi 5 kann einen Rockchip RK1820 über PCIe als externen KI-Beschleuniger nutzen. Dieses Projekt überprüft den gesamten Ablauf vom Zusammenbau und der Treiberinstallation bis zur Inferenz eines Bildmodells und zur lokalen Textgenerierung auf einem Pi 5 mit RK1820-M.2-2242-Modul.

Auf dem Pi laufen Linux, RKNN3 Runtime und die Testanwendungen. Der RK1820 führt das Modell aus. Wir haben MobileNetV2-Inferenz und Textgenerierung mit Qwen2.5-0.5B bei Runtime 1.1.0 und einer NPU-Frequenz von 166 MHz überprüft.

Rockchips RK1820_RK1828 Raspberry Pi M.2 Quick Start, V1.0.0, beschreibt RK1820- und RK1828-Module. Die hier tatsächlich getestete Hardware ist ein RK1820 2242. Die folgenden Ergebnisse belegen nicht die Leistung oder Kompatibilität sämtlicher RK1828-Module, Adapter oder Betriebssystem-Images.

Hardware und geprüfte Umgebung

KomponenteGetestete Konfiguration
HostRaspberry Pi 5 Model B Rev 1.1
BeschleunigerRK1820 M.2 2242; das Gerät meldet 2560 MB Speicher
VerbindungPCIe-FPC-Kabel und RK_EXT_PIHAT_RK182X-Adapter
PCIe-Verbindung5.0 GT/s, x1
BetriebssystemDebian 13.7 (trixie), ARM64
Kernel6.18.50+rpt-rpi-2712
Installationspaketrknn3-rk182x-m2-2242_1.1.0_arm64.deb
PCIe-Treiber3.3.1
Gerätefirmware / RKNN3 API1.1.0 / 1.1.0
rknn-smi1.3.0
NPU-Frequenz166 MHz

Sorgen Sie für die Kühlung von Pi und Beschleuniger. Rockchips Anleitung empfiehlt das offizielle Raspberry-Pi-USB-C-Netzteil mit 27W oder ein geeignetes gleichwertiges Netzteil. Prüfen Sie die Eingangsanforderungen und Anschlussbeschriftungen des Adapters; allein die Gesamtleistung eines Ladegeräts belegt seine Eignung nicht.

1. Hardware zusammenbauen und mit Strom versorgen

Installationsvideo auf YouTube ansehen

  1. Trennen Sie die Stromversorgung, bevor Sie das Modul oder PCIe-Kabel handhaben.
  2. Setzen Sie den RK1820 in den M.2-Steckplatz des Adapters ein und befestigen Sie ihn mit der passenden Schraube.
  3. Verbinden Sie Pi 5 und Adapter mit dem PCIe-FPC-Kabel. Prüfen Sie die Ausrichtung der Kontakte und schließen Sie beide Verriegelungen.
  4. Prüfen Sie Kühlung und sämtliche Verbindungen vor dem Einschalten.
  5. Beim beschriebenen RK_EXT_PIHAT_RK182X-Adapter schließen Sie das Netzteil am USB-C-Stromeingang des Adapters an. Der Adapter versorgt das gesamte System. Wird nur der USB-C-Eingang des Pi versorgt, kann der Beschleuniger ohne Strom bleiben.

Hat der Adapter mehrere USB-C-Anschlüsse, bestimmen Sie den Stromeingang anhand der Beschriftung oder Dokumentation, bevor Sie das Netzteil anschließen.

2. Treiber und Runtime installieren

Beziehen Sie das modulspezifische Debian-Paket vom Anbieter der Platine oder des SDK. Dieses Projekt verwendet das 2242-Paket; verwenden Sie für ein 2280-Modul das vom Anbieter dafür freigegebene Paket.

Die folgenden Befehle laufen in einer Linux-Shell auf dem Pi. Verwenden Sie bei einer SSH-Verbindung vom PC Ihren eigenen Benutzernamen, Ihre Adresse und Ihre Zugangsdaten; die Anleitung setzt kein bestimmtes Standardpasswort voraus.

bash
mkdir -p ~/rk1820_rk1828
cd ~/rk1820_rk1828

Kopieren Sie rknn3-rk182x-m2-2242_1.1.0_arm64.deb in dieses Verzeichnis und installieren Sie es:

bash
sudo apt update
sudo apt install -y ./rknn3-rk182x-m2-2242_1.1.0_arm64.deb

Das Installationsprogramm kompiliert den PCIe-Treiber und installiert Firmware, Runtime, Verwaltungswerkzeug und Testprogramme. Prüfen Sie vor dem Neustart, ob Treiberkompilierung und Paketkonfiguration erfolgreich abgeschlossen wurden:

bash
sudo reboot

Der Pi benötigt Zugriff auf die eingerichteten APT-Paketquellen, um Abhängigkeiten wie DKMS herunterzuladen. Scheitert der Download, bedeutet das Auffinden der lokalen .deb-Datei nicht, dass die Installation abgeschlossen ist. Beheben Sie die Verbindung und wiederholen Sie die Installation. Zum Kompilieren sind außerdem passende Header für den laufenden Kernel nötig; prüfen Sie bei Fehlern uname -r und /lib/modules/$(uname -r)/build.

3. Gerät prüfen und unterstützte Frequenz auswählen

Nach dem Neustart und erneuten Verbinden:

bash
lspci -nn
ls -l /dev/pcie-rkep-* 2>/dev/null
sudo rknn-smi info
sudo rknn-smi -v
sudo rknn-smi info -t npu_freq

Unsere PCIe-Geräteliste enthielt:

text
0001:01:00.0 Processing accelerators [1200]: Rockchip Electronics Co., Ltd RK182x Edge AI Computing Coprocessor [1d87:182a] (rev 01)

Ein Geräteknoten /dev/pcie-rkep-* muss vorhanden sein, und rknn-smi info sollte RK1820, Online, OK anzeigen. Notieren Sie vor den Modelltests die Versionen von Treiber, Firmware und API.

Unser 2242-Modul meldete 166, 200, 250 und 300 MHz als unterstützte Frequenzen. Für die erste Prüfung verwendeten wir 166 MHz:

bash
sudo rknn-smi set -t npu_freq -d 0 -s 166
sudo rknn-smi info -t npu_freq

Wählen Sie einen Wert aus der tatsächlichen Ausgabe Available NPU Freq Ihres Geräts. Übernehmen Sie das 400-MHz-Beispiel eines 2280-Moduls nicht für diese 2242-Konfiguration.

Erscheint das Gerät nicht, prüfen Sie Verbindung und Treiber getrennt:

bash
lsmod | grep rkep
sudo dmesg | grep -iE 'pcie|rkep|rknn' | tail -100

Beim ersten Aufbau war der Treiber geladen, die externe PCIe-Verbindung meldete jedoch link down. In lspci fehlte der RK-Endpunkt und rknn-smi konnte nicht initialisiert werden. Spätere Prüfungen zeigten link up, 5.0 GT/s PCIe x1 und den RK-Endpunkt. Ein geladener Treiber allein bestätigt also keine funktionierende Hardwareverbindung. Prüfen Sie Adapterstromversorgung und FPC-Verbindung, bevor Sie die Software wiederholt neu installieren. Die verfügbaren Beobachtungen zeigen nicht eindeutig, welche physische Änderung die Verbindung wiederherstellte.

4. MobileNetV2 ausführen

Legen Sie das zusammengehörige Modell- und Gewichtspaar hier ab:

text
~/rk1820_rk1828/MobileNetV2/
├── mobilenetv2-12.rknn
└── mobilenetv2-12.weight

Dieser Test verwendete das MobileNetV2-Paar aus einem vorhandenen RKNN3-Modellpaket unter rknn3_models/v1.0.0/cnn/MobilenetV2. Dieses Paar führte die Inferenz mit Runtime 1.1.0 erfolgreich aus; daraus folgt keine allgemeine Kompatibilität älterer Modelle. Beziehen Sie kompatible vorkonvertierte Modelle vom SDK-Anbieter oder nutzen Sie den RKNN3-Modelldownload (Zugriffscode: rknn) und prüfen Sie Dateinamen und Anweisungen.

Auf dem Pi ausführen:

bash
cd ~/rk1820_rk1828/MobileNetV2
sudo rknn3_model_test \
  mobilenetv2-12.rknn \
  mobilenetv2-12.weight \
  0x1 '' '' 0 1

Beim installierten Testwerkzeug 1.1.0 folgt core_mask direkt auf den Gewichtspfad. Die leeren Argumente überspringen Eingabe- und Referenzausgabedateien; 0 wählt die Form und 1 führt einen Durchlauf aus. Prüfen Sie rknn3_model_test --help, wenn Ihre Version von diesem Projekt oder der älteren Anleitung abweicht.

Die erfolgreiche Ausgabe enthält die Modellinitialisierung, All 1 loops completed successfully und die durchschnittliche Modelllaufzeit. In einem aufgezeichneten Durchlauf bei 166 MHz betrug die Modelllaufzeit 11.343 ms, die Gesamtzeit pro Durchlauf einschließlich Ein- und Ausgabesynchronisierung 12.249 ms.

Dieser Befehl verwendet Zufallseingaben und überspringt den Vergleich mit Referenzausgaben. Er prüft den Inferenzablauf, nicht die Klassifikationsgenauigkeit. Die Zeiten sind Einzelmessungen und kein Benchmark für anhaltenden Durchsatz.

5. Text mit Qwen2.5-0.5B generieren

Öffnen Sie den RKNN3-Modelldownload, geben Sie den Zugriffscode rknn ein und navigieren Sie zu:

text
RKNN3_SDK/rknn3_models/v1.1.0/llm/Qwen2.5-0.5B

Kopieren Sie alle vier Dateien derselben Version in das Arbeitsverzeichnis des Pi. Behalten Sie die offiziellen Dateinamen bei, die das Suffix -Instruct aus der älteren Anleitung nicht enthalten:

text
~/rk1820_rk1828/Qwen2.5-0.5B/
├── Qwen2.5-0.5B.rknn
├── Qwen2.5-0.5B.weight
├── Qwen2.5-0.5B.tokenizer.gguf
└── Qwen2.5-0.5B.embed.bin

Die vier Dateien umfassen etwa 632 MB (603 MiB). Prüfen Sie Downloadgrößen und Übertragungsintegrität; kombinieren Sie kein älteres Modell mit der Embedding-Datei eines anderen Modells.

Ausführen:

bash
cd ~/rk1820_rk1828/Qwen2.5-0.5B
sudo rknn3_session_test \
  Qwen2.5-0.5B.rknn \
  Qwen2.5-0.5B.weight \
  Qwen2.5-0.5B.tokenizer.gguf \
  Qwen2.5-0.5B.embed.bin \
  2048 256 0xff

Dieses Modell bietet eine Kontextkonfiguration mit 2048 Tokens, daher verwenden wir 2048 statt 1024 aus der älteren Anleitung. Das nächste Argument begrenzt die Generierung auf 256 neue Tokens, danach folgt die Kernmaske.

Das Testprogramm des Anbieters führt eingebaute Fragen automatisch aus; der Befehl nimmt keine Frage als Positionsargument entgegen. Die Originaltests enthalten chinesische und englische Fragen zur Relativitätstheorie. Für die Aufnahme für die englischsprachige Community änderten wir lediglich die eingebaute chinesische Frage im lokalen Programm in Explain the basic concepts of relativity. und bewahrten eine Sicherung auf. Diese Darstellungsänderung ist zum Ausführen des Modells nicht erforderlich; eine unveränderte Installation kann weiterhin zuerst den chinesischen Test anzeigen.

Prüfen Sie die lesbare Textausgabe, Leistungsstatistiken und END TEST. Ist die Antwort länger als 256 Tokens, ist das Erreichen der Grenze für neue Tokens erwartbar.

BeobachtungAufgezeichnetes Ergebnis
NPU-Frequenz166 MHz
Kontext / maximale neue Tokens2048 / 256
Generierung im englischen Test 1255 Decode-Tokens in 3820.02 ms; 66.75 tokens/s
Generierung im englischen Test 2255 Decode-Tokens in 3821.18 ms; 66.73 tokens/s
Prozess-Exitcode0
Gerät nach dem TestOnline / OK

Die Generierungsraten stammen aus der Generate-Statistik des Testwerkzeugs. Sie enthalten weder Prefill noch Modellinitialisierung und variieren mit Fragen, Generierungseinstellungen, Frequenz und Modellversion. Das Werkzeug meldet 256 Ausgabe-Tokens und zählt 255 Tokens in der gemessenen Generate-Phase; die Tabelle behält diese Unterscheidung bei.

Was dieses Projekt zeigt

Die geprüfte Pi-5- und RK1820-Konfiguration ermöglicht einen CNN-Inferenztest und lokale Textgenerierung über RKNN3 Runtime. Sie kann als Ausgangspunkt für eine Anwendung dienen, bei der der Pi Eingaben, Ablaufsteuerung und Benutzeroberfläche übernimmt, während der RK1820 die Modellinferenz ausführt. Längere Stabilitätstests und anwendungsspezifische Genauigkeitsprüfungen sind getrennt von dieser ersten Validierung durchzuführen.