深層学習モデルの Paddle-Lite 端末展開プロセス

Paddle Lite は、Paddle Mobile の新しいアップグレードに基づくエンドサイドの推論エンジンです. マルチハードウェア、マルチプラットフォーム、およびハードウェア ハイブリッド スケジューリングをサポートします. 携帯電話を含むエンドサイドのシナリオに効率的で軽量な AI アプリケーションを提供します. 推論能力,携帯電話のコンピューティング能力やメモリの限界などの問題を効果的に解決し、AI アプリケーションのより広範な実装を促進することに取り組んでいます。

展開プロセスは一般に 4 つのステップに分かれています

  • 1) 他のフレームワーク (pytorch/tensorlfow) でトレーニングされたモデルをパドル モデルに変換します。
  • 2) パドルモデルは軽量モデルとして最適化
  • 3) paddle-lite は、API を介して軽量モデル推論を呼び出します
  • 4) ビジネスコードに統合してランディングを完了する

1. X2Paddle 機種変換ツール

X2Paddle は現在、Caffe/TensorFlow/ONNX/PyTorch の 4 つの主要なフレームワークの予測モデルの変換と、現在市場で主流の深層学習フレームワークをカバーする PyTorch トレーニング プロジェクトの変換をサポートしており、コマンド ラインまたは API で完了できます。モデル変換。詳細については、次のリンクを参照してください。

https://github.com/PaddlePaddle/X2Paddle

モデルの変換はメモリ内で実行されることに注意してください, つまり, モデルファイルの単純な変換ではありません. 最初に torch を介して pytorch モデルを読み込み, 重みをロードし, それをメモリに読み込む必要があります. 、保存するためにパドル モデルに変換します。

1.1 pytorch モデルをパドル モデルに変換する

たとえば、pytorch モデルは model.pt であり、最終的な結果は次のようになります。

 

 その中でパドルモデルはinference_modelに保存されています。内部の model.pdmodel はモデルの結果ファイルで、model.pdiparams はモデルの重みファイルです。具体的な変換プロセスについては、次のリンクを参照してください。

X2Paddle/pytorch2paddle.ipynb 開発 · PaddlePaddle/X2Paddle · GitHub

2. opt ツールはモデルを定量化します

Paddle-Lite は、量子化、部分グラフ融合、ハイブリッド スケジューリング、カーネル最適化、その他の方法を含む、元のトレーニング モデルを自動的に最適化するためのさまざまな戦略を提供します。 最適化プロセスをより便利で使いやすくするために、最適化ステップを自動的に完了し、軽量で最適な実行可能モデルを出力するoptツールが提供されています。

パドルモデルは形態によって、コンバイン形態と非コンバイン形態に分けられます。結合形式とは、モデル構造ファイルと重みファイルが分離されていることを意味し、非結合形式とは、2 つが 1 つのファイルにあることを意味します。opt は最終的にパドル モデルを naive_buffer 形式 (推奨) の .nb ファイル、または protobuf ファイルに変換します。同時に、使用状況に応じて、パラメーター --valid_targets、arm または x86 に対応するプラットフォームを選択します。ハードウェア アーキテクチャが一致しない場合、結果は正しくありません。opt ツールを使用する場合は、パラメーターの説明に注意してください。詳細については、次のリンクを参照してください。

モデルを変換するための Python 呼び出し opt — Paddle-Lite ドキュメント

3. Paddle-Lite の展開と推論

Paddle-Lite の展開と推論は、ハードウェア プラットフォームに依存し、x86、Arm (Android)、および Arm (Linux) に展開できます。paddle-lite は、パドル モデルを直接読み取るか、opt-optimized モデルを読み取ることができますpaddle-lite を使用する手順は次のとおりです。

  • paddle-lite ソース コードをコンパイルし、対応するプラットフォーム用のライブラリ ファイルを生成します。
  • 他の言語(C++など)はpaddle-liteのAPIを呼び出し、APIを介してoptの変換モデルを読み込み、推論で結果を取得します。このプロセスでは、C++ で、推論前のアルゴリズムの前処理部分と、推論後のアルゴリズムの後処理部分を記述する必要があります。これは、トレーニング モデルと一致している必要があります。
  • 通常、C++ は、作成された後、コンパイルされ、ビジネス コール用のインターフェイスに再度パッケージ化されます。

実際の使用にあたっては、Welcome to Paddle-Lite's documentation! — Paddle-Lite Documentationを参照してください。

 

おすすめ

転載: blog.csdn.net/Eyesleft_being/article/details/120368277