🛠 Accélérer l'inférence IA avec un HAT NPU (Hailo)
Objectifs
Déporter une inférence réseau de neurones sur un accélérateur NPU connecté au Raspberry Pi 5. Attention : le SoC BCM2712 ne contient pas de NPU embarqué ; l'accélération matérielle passe par un AI HAT+ (Hailo-8L 13 TOPS ou Hailo-8 26 TOPS) ou un AI HAT+ 2 (Hailo-10H, 40 TOPS + 8 GB de RAM dédiée), connectés en PCIe via le connecteur FPC/HAT+.
Matériel
- Raspberry Pi 5 (8 GB conseillés) sous Raspberry Pi OS 64 bits + alimentation 27 W
- AI HAT+ ou AI HAT+ 2 (Hailo) avec dissipateur/refroidissement actif
- Active Cooler indispensable : le HAT et le SoC chauffent en inférence continue
- Caméra officielle (libcamera) pour un pipeline de détection complet
Code complet
# 1) Installer la pile Hailo (dépôt officiel Raspberry Pi)
sudo apt update && sudo apt install -y hailo-all
sudo hailoall status # vérifie driver + firmware
ls /dev/hailo0 # présent => NPU visible
# 2) Détecteur YOLO prêt à l'emploi fourni avec la pile
hailo_detection_yolov8.py --input camera --show-fps
# 3) Suivi thermique pendant la charge (bridage à 80-85 °C)
watch -n1 vcgencmd measure_temp
#!/usr/bin/env python3
# infer_hailo.py — inférence minimale via HailoRT (API Python)
import hailort
# Charger un réseau compilé .hef (obtenu avec TAPPAs/compile_hailo)
dev = hailort.Device.create_hailo
dev.load_hef("yolov8s.hef")
print("NPU détecté, réseau chargé :", dev.get_arch)
# ... puis création d'inférence, envoi des trames et lecture des sorties
Vérification attendue
hailoall status renvoie driver et firmware OK, /dev/hailo0 existe. Le script de détection affiche des boîtes englobantes sur le flux caméra avec un débit FPS nettement supérieur à l'inférence CPU. La température reste sous 80 °C grâce au refroidissement.
Erreurs fréquentes
- Croire à un NPU intégré : le BCM2712 n'en a pas ; sans HAT+ Hailo, toute l'inférence tourne sur les quatre Cortex-A76 (ou sur le GPU, sans accélérateur dédié).
- Oublier d'activer le port PCIe/HAT+ : le HAT n'apparaît pas ; configurer le firmware pour le mode HAT+ puis redémarrer.
- Surchauffe : sans Active Cooler, le SoC entre dans la plage de bridage 80-85 °C et les FPS chutent.
- Incompatibilité de version firmware/driver après
apt upgrade: relancerhailoall statuset réinstaller hailo-all. - Réseau non compilé pour la puce : un .hef compilé pour Hailo-8 ne fonctionne pas nécessairement sur Hailo-8L ; recompiler avec le bon compilateur TAPPAs.
- Alimentation faible : le HAT ajoute une pointe de consommation ; rester à 5 V/5 A.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython