PaddleLite verwendet Bitmain-Hardware (bm) zum Kompilieren und Vorhersagen

Paddle-Lite unterstützt derzeit das Kompilieren der BM-Vorhersagebibliothek in der Docker-Umgebung.

1. Kompilieren

1.1 Code herunterladen

git clone https://github.com/AnBaolei1984/Paddle-Lite.git

Muss zur Kasse bei Baolei/Bitmain gehen

1.2 Starten Sie Docker

a) Bereiten Sie das Docker-Image vor

Weitere Informationen finden Sie im Abschnitt zum Vorbereiten von Docker-Images in der Paddlelite-Dokumentation. Empfohlene Methode zwei ist das lokale Quellcode-Docker-Image
https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html#docker

b) Führen Sie den folgenden Befehl im Verzeichnis über Paddle-Lite aus. Beachten Sie, dass dem Docker-Container der Zugriff auf das bm-Gerät gestattet sein muss (–device=/dev/bm-sophon0:/dev/bm-sophon0 usw.).

Das Folgende ist der Docker-Startbefehl für die sc5+-Drei-Chip-Karte:

docker run -it \
--name paddlelite_docker \
-v $PWD/Paddle-Lite:/Paddle-Lite \
--device=/dev/bm-sophon0:/dev/bm-sophon0 \
--device=/dev/bm-sophon1:/dev/bm-sophon1 \
--device=/dev/bm-sophon2:/dev/bm-sophon2 \
--device=/dev/bmdev-ctl:/dev/bmdev-ctl \
--net=host \
paddlepaddle/paddle-lite /bin/bash

Wenn Sie nur die Bibliothek zum Konvertieren des Modells kompilieren, müssen Sie –device nicht zuordnen.

1.3 Kompilierung des Quellcodes

1)cd /Paddle-Lite

2) Legen Sie die Anzahl der Kompilierungsthreads fest

export LITE_BUILD_THRLITE_BUILD_THREADSEADS=4

3) Kompilieren

Kompilierungsoptionen

a) Zielname (Standard BM1682)

Wenn Sie Hardware der Bitmain BM1682-Serie (SC3/SE3) verwenden, setzen Sie target_name auf BM1682

Wenn Sie Hardware der Bitmain BM1684-Serie (SC5/SE5/SM5) verwenden, wird target_name auf BM1684 gesetzt

b) save_bmodel (Standard AUS)

Wenn Sie auf einer Box (SE3/SE5) oder einem Modul (SM5) entwickeln, speichern Sie das konvertierte Bmodel. Muss auf EIN eingestellt werden.

c) dynamisch (Standard AUS)

Wählen Sie die dynamische Kompilierung (Stapel ist variabel, aber die Leistung ist schlechter als bei der statischen Kompilierung) oder die statische Kompilierung

d) save_umodel (Standard AUS)

Wenn Sie eine int8-Quantisierung auf dem Chip der BM1684-Serie durchführen, speichern Sie das konvertierte umodel. Muss auf EIN eingestellt werden.

Beispiel für einen Kompilierungsbefehl:

./lite/tools/build_bm.sh --target_name=BM1684 --test=ON --save_bmodel=ON

2. SC5/SC5+ direkte Online-Inferenzvorhersage

Wir bieten ein Beispiel für die Ausführung eines Klassifizierungsnetzwerks (/PaddleLite/lite/api/test_classify_lite_bm.cc).

CD build.lite.bm/lite/api

Führen Sie den Befehl aus:

./test_classify_lite_bm --model_dir /Paddle-Lite/models/resnet50 --input_img_txt_path /Paddle-Lite/img.txt --warmup 1 --repeats 10 --im_width 224 --im_height 224 

3. Konvertieren Sie bmodel oder umodel

Bitte beachten Sie https://github.com/AnBaolei1984/Paddle2BMmodel

Die in Paddle2BMmodel verwendete inference_lite_lib wird durch Kompilieren von Paddle-Lite erhalten. Nach der Kompilierung wird es im Verzeichnis Paddle-Lite/build.lite.bm/inference_lite_lib generiert.

4. Vorsichtsmaßnahmen

Es gibt zwei Formen von Paddle-Modellen: __model__ und model+params.

a) Wenn es __model__ ist, wird Zeile 40 von lite/api/test_classify_lite_bm.cc geschrieben als

predictor.Build(FLAGS_model_dir, "", "", valid_places, passes);

b) Wenn es sich um Modell+Parameter handelt, schreiben Sie es als

predictor.Build(FLAGS_model_dir, FLAGS_model_dir+"/model", FLAGS_model_dir+"/params", valid_places, passes);

Supongo que te gusta

Origin blog.csdn.net/santanan/article/details/112007330
Recomendado
Clasificación