De Google Coral USB-accelerator gebruiken met de reComputer RK3576
De Google Coral USB-accelerator voegt via USB een Edge TPU-coprocessor toe aan een host. Deze tutorial laat een geteste manier zien om hem op een reComputer RK3576 aan te sluiten, de USB-status te controleren, de Edge TPU-runtime te installeren, een voor de Edge TPU gecompileerd TensorFlow Lite-model uit te voeren en een latencybenchmark te reproduceren.
Benchmarkbereik: het resultaat op deze pagina vergelijkt de Coral Edge TPU met een TensorFlow Lite-baseline op de CPU met acht threads. De ingebouwde NPU van de RK3576 wordt niet getest. Om beide acceleratoren te vergelijken moet hetzelfde model met gelijkwaardige preprocessing via zowel de Edge TPU- als de RKNN-toolchain worden ingezet.
Testomgeving
| Onderdeel | Geteste configuratie |
|---|---|
| Host | reComputer RK3576 Dev Kit |
| Besturingssysteem | Armbian-unofficial 26.05.0-trunk, Debian 12 (bookworm) |
| Kernel | 6.1.115-vendor-seeed-rk3576 |
| Hostarchitectuur | AArch64, 8 logische CPU's |
| Accelerator | Google Coral USB Accelerator |
| USB-verbinding | USB 3 SuperSpeed, gerapporteerd als 5000M door lsusb -t |
| Edge TPU-runtime | Standaard (verlaagde frequentie) runtime, libedgetpu.so.1.0 |
Dit is de configuratie die voor de onderstaande metingen is gebruikt, geen uitspraak over minimaal ondersteunde versies. De documentatie van de Coral USB Accelerator vermeldt dat van Debian afgeleid Armv8-Linux wordt ondersteund en raadt USB 3 aan voor de beste prestaties.
Hardwareaansluiting
Gebruik een USB 3-hostpoort en een kabel van goede kwaliteit. De volgende foto's tonen de geteste reComputer RK3576, Coral USB-accelerator en kabel.

Sluit de Coral aan op een van de USB 3-poorten van de RK3576. Onderstaande close-up toont de daadwerkelijke testaansluiting.

De Coral vinden en verifiëren
Voer het volgende commando uit om naar een van de twee USB-ID's te zoeken die de accelerator gebruikt:
lsusb | grep -Ei '1a6e:089a|18d1:9302|Google|Global Unichip'De ID's beschrijven twee normale toestanden van het apparaat:
| USB-ID | Typische lsusb-naam | Betekenis |
|---|---|---|
1a6e:089a | Global Unichip Corp. | Initiële DFU/bootloader-toestand |
18d1:9302 | Google Inc. | Edge TPU-runtime-toestand na laden van firmware |
Controleer de onderhandelde USB-snelheid:
lsusb -tBij een USB 3-verbinding moet de tak van de accelerator 5000M rapporteren. Een 480M-item duidt op USB 2.
Om recente enumeratie- en firmware-gebeurtenissen te bekijken, voer uit:
sudo dmesg | grep -E 'device firmware changed|New USB device found' | tail -n 10Onderstaande echte screenshot toont de geteste accelerator in runtime-modus als 18d1:9302, verbonden op 5000M, met de eerdere DFU-enumeratie en de daaropvolgende firmware-wijzigingsberichten zichtbaar in dmesg.

1a6e:089a direct na het aansluiten van de accelerator zien is normaal. Het laden van de Edge TPU-delegate kan de firmware van het apparaat laden en ervoor zorgen dat hij opnieuw enumerreert als 18d1:9302.
De Edge TPU-runtime installeren
Gebruik de Linux-repository van Coral en installeer de standaardruntime:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install libedgetpu1-stdAls de accelerator al was aangesloten tijdens de installatie, koppel hem eenmalig los en sluit hem opnieuw aan, zodat de net geïnstalleerde udev-regel in werking treedt.
libedgetpu1-std gebruikt de verlaagde bedrijfsfrequentie. Coral biedt ook libedgetpu1-max aan als alternatieve runtime met maximale frequentie, maar die verhoogt het stroomverbruik en kan de metalen behuizing erg heet maken. De twee runtimepakketten kunnen niet tegelijk geïnstalleerd worden.
De Python-omgeving aanmaken
Het geteste board gebruikte Python 3.11 en de TensorFlow Lite Python-API direct in plaats van PyCoral. Maak een geïsoleerde omgeving aan en installeer de door de voorbeelden gebruikte pakketten:
sudo apt-get install python3-venv
python3 -m venv /tmp/coral-venv
/tmp/coral-venv/bin/pip install --upgrade pip
/tmp/coral-venv/bin/pip install tflite-runtime opencv-python-headlessControleer of Python de Edge TPU-delegate kan laden:
/tmp/coral-venv/bin/python -c "from tflite_runtime.interpreter import load_delegate; print(load_delegate('libedgetpu.so.1.0'))"Het commando zou een TensorFlow Lite-delegate-object moeten printen. Bij eerste toegang kan het ook de overgang van 1a6e:089a naar 18d1:9302 veroorzaken.
De testassets downloaden
Maak een werkmap aan en download Google's gepaarde Edge TPU- en CPU-modellen plus de voorbeeldafbeelding:
mkdir -p /tmp/coral-test
cd /tmp/coral-test
curl -fL -o model.tflite \
https://raw.githubusercontent.com/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite
curl -fL -o model_cpu.tflite \
https://raw.githubusercontent.com/google-coral/test_data/master/mobilenet_v2_1.0_224_inat_bird_quant.tflite
curl -fL -o labels.txt \
https://raw.githubusercontent.com/google-coral/test_data/master/inat_bird_labels.txt
curl -fL -o parrot.jpg \
https://raw.githubusercontent.com/google-coral/test_data/master/parrot.jpgparrot.jpg is de voorbeeldafbeelding uit Google's openbare google-coral/test_data-repository; het is geen foto die voor deze tutorial is gemaakt. Het Edge TPU-model is gecompileerd voor de accelerator, terwijl model_cpu.tflite het TensorFlow Lite-tegenhanger zonder Edge TPU is.
Een minimale Edge TPU-inferentie uitvoeren
Sla het volgende op als /tmp/coral-test/inference.py:
import cv2
from tflite_runtime.interpreter import Interpreter, load_delegate
delegate = load_delegate("libedgetpu.so.1.0")
interpreter = Interpreter(
model_path="model.tflite",
experimental_delegates=[delegate],
)
interpreter.allocate_tensors()
input_info = interpreter.get_input_details()[0]
image = cv2.cvtColor(cv2.imread("parrot.jpg"), cv2.COLOR_BGR2RGB)
height, width = input_info["shape"][1:3]
tensor = cv2.resize(image, (int(width), int(height))).astype(input_info["dtype"])
interpreter.set_tensor(input_info["index"], tensor[None, ...])
interpreter.invoke()
print("Edge TPU inference completed")Voer het uit vanuit de werkmap:
cd /tmp/coral-test
/tmp/coral-venv/bin/python inference.pyOptionele prestatieverificatie
De benchmark voert per pad 10 warm-up-aanroepen uit, gevolgd door 100 getimede aanroepen. Hij timet alleen Interpreter.invoke(), inclusief de uitvoering van de delegate en de bijbehorende host-apparaatcommunicatie. Initialisatie van model/delegate, het laden van de afbeelding en het schalen van de afbeelding zijn uitgesloten.
Het CPU-pad gebruikt de niet-Edge TPU-versie van het model met num_threads=8. De Edge TPU- en CPU-modellen komen uit dezelfde Google Coral MobileNet V2 iNaturalist vogel-testset en krijgen beiden dezelfde voorverwerkte invoertensor.
Het volledige optionele testscript is beschikbaar als benchmark.py. Sla het na het downloaden van de drie bovenstaande assets op als /tmp/coral-test/benchmark.py, of download het daarnaar.
Voer de benchmark uit:
cd /tmp/coral-test
/tmp/coral-venv/bin/python benchmark.pyWaargenomen resultaat
Eén run op de geteste RK3576 leverde op:
| Pad | Gemiddelde latency | Mediaan-latency | P95-latency | Afgeleide doorvoer |
|---|---|---|---|---|
| Coral Edge TPU | 6.202 ms | 6.193 ms | 6.344 ms | 161.23 FPS |
| CPU, 8 threads | 20.700 ms | 20.610 ms | 21.196 ms | 48.31 FPS |
In deze run was de gemiddelde latency van het Coral-pad 3.34x lager dan de gemiddelde latency van het acht-threads-CPU-pad. De FPS-waarden zijn 1000 / gemiddelde latency voor herhaalde inferentie van één afbeelding; het zijn geen metingen van een volledige pipeline voor camera, decodering, voorverwerking en weergave.

Deze waarden zijn een meting van één apparaat en één softwareconfiguratie, geen gegarandeerde productspecificatie. Frequentieschaling, thermische toestand, achtergrondactiviteit, runtimekeuze, modelpartitionering en USB-topologie kunnen het resultaat veranderen.
Opmerking: Deze optionele controle vergelijkt alleen de Coral Edge TPU met het TensorFlow Lite-CPU-pad met acht threads. Coral wordt niet vergeleken met de RK3576-NPU, die in deze test niet wordt gebruikt. De piekcijfers van 4 TOPS voor Coral en 6 TOPS voor de RK3576-NPU beschrijven of voorspellen dit resultaat daarom niet.
Problemen oplossen
- Geen Coral-item in
lsusb: sluit het apparaat opnieuw aan, gebruik een kabel waarvan bekend is dat hij werkt, probeer een andere USB-hostpoort en bekijkdmesg. - Apparaat blijft op
1a6e:089a: verifieer eerst datlibedgetpu.so.1.0succesvol laadt. Sluit vervolgens de accelerator opnieuw aan en bekijk de firmwareberichten indmesg. 480Minlsusb -t: de verbinding onderhandelde op USB 2-snelheid. Verplaats de accelerator naar een USB 3-poort en controleer de kabel.Failed to load delegate: verifieer dat de Edge TPU-runtime is geïnstalleerd en dat de huidige gebruiker toegang heeft tot het USB-apparaat.- Hoge behuizingstemperatuur: gebruik de standaardruntime
libedgetpu1-stden zorg voor luchtstroom. De runtime met maximale frequentie kan erg heet worden.