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);