Paddle-Lite は現在、Docker 環境での bm 予測ライブラリのコンパイルをサポートしています。
1.コンパイル
1.1 ダウンロードコード
git clone https://github.com/AnBaolei1984/Paddle-Lite.git
baolei/bitmain ブランチにチェックアウトする必要があります
1.2 Dockerの起動
a) Dockerイメージの準備
Paddlelite ドキュメントの Docker イメージの準備に関するセクションを参照してください。推奨される方法 2 は、ローカル ソース コードの Docker イメージ
https://paddle-lite.readthedocs.io/zh/latest/source_compile/compile_env.html#docker
b) Paddle-Lite 上のディレクトリで次のコマンドを実行します。Docker コンテナは bm デバイス (–device=/dev/bm-sophon0:/dev/bm-sophon0 など) へのアクセスを許可されている必要があることに注意してください。
以下は、sc5+ 3 チップ カードの docker 起動コマンドです。
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
モデルを変換するためにライブラリをコンパイルするだけの場合は、-device をマップする必要はありません。
1.3 ソースコードのコンパイル
1)CD /パドルライト
2) コンパイルスレッド数を設定する
export LITE_BUILD_THRLITE_BUILD_THREADSEADS=4
3) コンパイル
コンパイルオプション
a) target_name (デフォルトは BM1682)
Bitmain BM1682 シリーズ ハードウェア (SC3/SE3) を使用している場合は、target_name を BM1682 に設定します。
Bitmain BM1684 シリーズ ハードウェア (SC5/SE5/SM5) を使用している場合、target_name は BM1684 に設定されます。
b) save_bmodel (デフォルトは OFF)
ボックス (SE3/SE5) またはモジュール (SM5) で開発している場合は、変換された bmodel を保存します。ONに設定する必要があります。
c) ダイナミック (デフォルトはオフ)
動的コンパイル (バッチは可変ですが、静的コンパイルよりもパフォーマンスが低下します) または静的コンパイルを選択します。
d) save_umodel (デフォルトはオフ)
BM1684 シリーズチップで int8 量子化を実行する場合は、変換された umodel を保存します。ONに設定する必要があります。
コンパイルコマンドの例:
./lite/tools/build_bm.sh --target_name=BM1684 --test=ON --save_bmodel=ON
2. SC5/SC5+ の直接オンライン推論予測
分類ネットワーク (/PaddleLite/lite/api/test_classify_lite_bm.cc) を実行する例を示します。
cd build.lite.bm/lite/api
コマンドを実行します:
./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. bmodel または umodel を変換する
https://github.com/AnBaolei1984/Paddle2BMmodelを参照してください。
Paddle2BMmodel で使用される inference_lite_lib は、Paddle-Lite をコンパイルすることによって取得されます。コンパイル後、Paddle-Lite/build.lite.bm/inference_lite_lib ディレクトリに生成されます。
4. 注意事項
パドル モデルには、__model__ と model+params の 2 つの形式があります。
a) __model__ の場合、lite/api/test_classify_lite_bm.cc の 40 行目は次のように記述されます。
predictor.Build(FLAGS_model_dir, "", "", valid_places, passes);
b)model+paramsの場合は次のように記述します。
predictor.Build(FLAGS_model_dir, FLAGS_model_dir+"/model", FLAGS_model_dir+"/params", valid_places, passes);