Le Raspberry Pi 5 peut utiliser un Rockchip RK1820 comme accélérateur d’IA externe via PCIe. Ce projet vérifie toute la chaîne, de l’assemblage et de l’installation du pilote à l’inférence d’un modèle de vision et à la génération locale de texte, sur un Pi 5 équipé d’un module RK1820 M.2 2242.
Le Pi exécute Linux, RKNN3 Runtime et les applications de test. Le RK1820 exécute le modèle. Nous avons vérifié l’inférence MobileNetV2 et la génération de texte Qwen2.5-0.5B avec Runtime 1.1.0 et une fréquence NPU de 166 MHz.
Le guide Rockchip RK1820_RK1828 Raspberry Pi M.2 Quick Start, V1.0.0, décrit les modules RK1820 et RK1828. Le matériel testé ici est un RK1820 2242. Ces résultats ne confirment pas les performances ou la compatibilité de tous les modules RK1828, adaptateurs ou images système.
Matériel et environnement vérifié
| Composant | Configuration testée |
|---|---|
| Hôte | Raspberry Pi 5 Model B Rev 1.1 |
| Accélérateur | RK1820 M.2 2242 ; le périphérique indique 2560 MB de mémoire |
| Connexion | Nappe PCIe FPC et adaptateur RK_EXT_PIHAT_RK182X |
| Liaison PCIe | 5.0 GT/s, x1 |
| Système | Debian 13.7 (trixie), ARM64 |
| Noyau | 6.18.50+rpt-rpi-2712 |
| Paquet d’installation | rknn3-rk182x-m2-2242_1.1.0_arm64.deb |
| Pilote PCIe | 3.3.1 |
| Firmware du périphérique / API RKNN3 | 1.1.0 / 1.1.0 |
| rknn-smi | 1.3.0 |
| Fréquence NPU | 166 MHz |
Prévoyez un refroidissement pour le Pi et l’accélérateur. Le guide Rockchip recommande l’alimentation USB-C officielle Raspberry Pi de 27W ou une alimentation équivalente adaptée. Vérifiez les exigences d’entrée et les indications des connecteurs de l’adaptateur ; la puissance totale d’un chargeur ne suffit pas à établir sa compatibilité.
1. Assembler et alimenter le matériel
Voir la vidéo d’installation sur YouTube
- Débranchez l’alimentation avant de manipuler le module ou la nappe PCIe.
- Insérez le RK1820 dans le connecteur M.2 de l’adaptateur et fixez-le avec la vis appropriée.
- Reliez le Pi 5 et l’adaptateur avec la nappe PCIe FPC. Vérifiez le sens des contacts et fermez les deux loquets.
- Vérifiez le refroidissement et toutes les connexions avant la mise sous tension.
- Pour l’adaptateur RK_EXT_PIHAT_RK182X décrit dans le guide, branchez l’alimentation sur l’entrée d’alimentation USB-C de l’adaptateur. Celui-ci alimente tout le système. Alimenter uniquement le port USB-C du Pi peut laisser l’accélérateur hors tension.
Si l’adaptateur possède plusieurs ports USB-C, identifiez l’entrée d’alimentation grâce aux indications de la carte ou à sa documentation avant de brancher la source.
2. Installer le pilote et Runtime
Obtenez auprès du fournisseur de la carte ou du SDK le paquet Debian correspondant au module. Ce projet utilise le paquet 2242 ; pour un module 2280, utilisez le paquet correspondant validé par le fournisseur.
Les commandes suivantes s’exécutent dans un shell Linux sur le Pi. Pour une connexion SSH depuis votre PC, utilisez votre propre nom d’utilisateur, adresse et méthode d’authentification ; ces instructions ne dépendent pas d’un mot de passe par défaut particulier.
mkdir -p ~/rk1820_rk1828
cd ~/rk1820_rk1828Copiez rknn3-rk182x-m2-2242_1.1.0_arm64.deb dans ce répertoire, puis installez-le :
sudo apt update
sudo apt install -y ./rknn3-rk182x-m2-2242_1.1.0_arm64.debL’installateur compile le pilote PCIe et installe le firmware, Runtime, l’outil de gestion et les programmes de test. Vérifiez que la compilation et la configuration du paquet se terminent correctement avant de redémarrer :
sudo rebootLe Pi doit accéder aux dépôts APT configurés pour obtenir les dépendances telles que DKMS. Si leur téléchargement échoue, la présence du .deb local ne signifie pas que l’installation est terminée. Rétablissez l’accès aux dépôts et relancez l’installation. La compilation exige aussi les en-têtes correspondant au noyau en cours d’exécution ; vérifiez uname -r et /lib/modules/$(uname -r)/build en cas d’échec.
3. Vérifier le périphérique et choisir une fréquence prise en charge
Après le redémarrage et la reconnexion :
lspci -nn
ls -l /dev/pcie-rkep-* 2>/dev/null
sudo rknn-smi info
sudo rknn-smi -v
sudo rknn-smi info -t npu_freqNotre énumération PCIe comprenait :
0001:01:00.0 Processing accelerators [1200]: Rockchip Electronics Co., Ltd RK182x Edge AI Computing Coprocessor [1d87:182a] (rev 01)Un nœud /dev/pcie-rkep-* doit exister et rknn-smi info doit indiquer RK1820, Online, OK. Notez les versions du pilote, du firmware et de l’API avant les tests.
Notre module 2242 indiquait les fréquences 166, 200, 250 et 300 MHz. Nous avons utilisé 166 MHz pour la validation initiale :
sudo rknn-smi set -t npu_freq -d 0 -s 166
sudo rknn-smi info -t npu_freqChoisissez une valeur affichée dans la sortie réelle Available NPU Freq de votre périphérique. N’appliquez pas l’exemple à 400 MHz d’un module 2280 à cette configuration 2242.
Si le périphérique n’apparaît pas, examinez séparément la liaison et le pilote :
lsmod | grep rkep
sudo dmesg | grep -iE 'pcie|rkep|rknn' | tail -100Lors de la première configuration, le pilote était chargé, mais la liaison PCIe externe indiquait link down, aucun endpoint RK n’apparaissait dans lspci et l’initialisation de rknn-smi échouait. Les contrôles suivants ont montré link up, 5.0 GT/s PCIe x1 et l’endpoint RK. Le chargement du pilote ne suffit donc pas à prouver que la liaison matérielle fonctionne. Vérifiez l’alimentation de l’adaptateur et la nappe FPC avant de réinstaller le logiciel à répétition. Les observations disponibles ne permettent pas d’identifier précisément la modification physique ayant rétabli la liaison.
4. Exécuter MobileNetV2
Placez les fichiers correspondants du modèle et des poids dans :
~/rk1820_rk1828/MobileNetV2/
├── mobilenetv2-12.rknn
└── mobilenetv2-12.weightCe test réutilise la paire MobileNetV2 d’un paquet RKNN3 existant, dans rknn3_models/v1.0.0/cnn/MobilenetV2. Cette paire a terminé l’inférence avec Runtime 1.1.0 ; cela n’établit pas la compatibilité de tous les anciens modèles. Obtenez des modèles préconvertis compatibles auprès du fournisseur du SDK ou utilisez le téléchargement des modèles RKNN3 (code d’accès : rknn) et vérifiez les noms et instructions fournis.
Exécutez sur le Pi :
cd ~/rk1820_rk1828/MobileNetV2
sudo rknn3_model_test \
mobilenetv2-12.rknn \
mobilenetv2-12.weight \
0x1 '' '' 0 1L’outil 1.1.0 installé attend core_mask juste après le chemin des poids. Les arguments vides omettent les fichiers d’entrée et de sortie de référence ; 0 choisit la forme et 1 exécute une boucle. Consultez rknn3_model_test --help si votre version diffère de ce projet ou de l’ancien guide.
Une exécution réussie affiche l’initialisation du modèle, All 1 loops completed successfully et le temps moyen d’exécution. Lors d’une mesure à 166 MHz, le modèle a pris 11.343 ms, pour un total de 12.249 ms par boucle avec la synchronisation des entrées et sorties.
Cette commande utilise une entrée aléatoire et ignore la comparaison avec des sorties de référence. Elle vérifie le chemin d’inférence, pas la précision de classification. Ces mesures ponctuelles ne constituent pas un benchmark de débit soutenu.
5. Générer du texte avec Qwen2.5-0.5B
Dans le téléchargement des modèles RKNN3, saisissez le code rknn et ouvrez :
RKNN3_SDK/rknn3_models/v1.1.0/llm/Qwen2.5-0.5BCopiez les quatre fichiers de cette même version dans le répertoire de travail du Pi. Conservez les noms officiels, sans le suffixe -Instruct utilisé dans l’ancien guide :
~/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.binLes quatre fichiers représentent environ 632 MB (603 MiB). Vérifiez la taille téléchargée et l’intégrité du transfert ; ne mélangez pas un ancien modèle avec le fichier embedding d’un autre modèle.
Exécutez :
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 0xffCe modèle fournit une configuration de contexte de 2048 tokens ; nous utilisons donc 2048 plutôt que 1024 dans l’ancien guide. L’argument suivant limite la génération à 256 nouveaux tokens, puis vient le masque des cœurs.
Le programme du fournisseur exécute automatiquement des questions intégrées ; la commande n’accepte pas de question comme argument positionnel. Les tests d’origine comprennent des questions sur la relativité en chinois et en anglais. Pour la vidéo destinée à la communauté anglophone, nous avons uniquement remplacé la question chinoise du programme local par Explain the basic concepts of relativity. et conservé une sauvegarde. Cette adaptation de présentation n’est pas nécessaire à l’exécution du modèle ; une installation non modifiée peut toujours afficher le test chinois en premier.
Vérifiez la présence d’un texte lisible, des statistiques et de END TEST. Atteindre la limite de nouveaux tokens est normal si la réponse dépasse 256 tokens.
| Observation | Résultat enregistré |
|---|---|
| Fréquence NPU | 166 MHz |
| Contexte / nouveaux tokens maximum | 2048 / 256 |
| Génération du test anglais 1 | 255 tokens décodés en 3820.02 ms ; 66.75 tokens/s |
| Génération du test anglais 2 | 255 tokens décodés en 3821.18 ms ; 66.73 tokens/s |
| Code de sortie | 0 |
| Périphérique après le test | Online / OK |
Les vitesses correspondent aux statistiques Generate de l’outil. Elles excluent le prefill et l’initialisation du modèle et varient selon les questions, les paramètres, la fréquence et la version du modèle. L’outil indique 256 tokens de sortie, mais compte 255 tokens dans la phase Generate chronométrée ; le tableau préserve cette distinction.
Ce que démontre ce projet
La configuration Pi 5 + RK1820 vérifiée permet un test d’inférence CNN et une génération locale de texte via RKNN3 Runtime. Elle peut servir de base à une application où le Pi gère les entrées, l’orchestration et l’interface utilisateur, tandis que le RK1820 exécute l’inférence. Les tests de stabilité prolongés et les vérifications de précision propres à l’application restent distincts de cette validation initiale.