TensorFlowLiteタスクライブラリ

TensorFlow Liteタスクライブラリには、アプリ開発者がTFLiteでMLエクスペリエンスを作成するための、強力で使いやすいタスク固有のライブラリのセットが含まれています。画像分類、質問と回答など、一般的な機械学習タスク用に最適化されたすぐに使用できるモデルインターフェイスを提供します。モデルインターフェイスは、最高のパフォーマンスと使いやすさを実現するために、タスクごとに特別に設計されています。タスクライブラリはクロスプラットフォームで動作し、Java、C ++、およびSwiftでサポートされています。

タスクライブラリに期待すること

  • ML以外の専門家が使用できるクリーンで明確に定義されたAPI
    推論はわずか5行のコードで実行できます。タスクライブラリの強力で使いやすいAPIをビルディングブロックとして使用して、モバイルデバイスでTFLiteを使用してMLを簡単に開発できるようにします。

  • 複雑だが一般的なデータ処理
    データとモデルに必要なデータ形式を変換するための共通ビジョンと自然言語処理ロジックをサポートします。トレーニングと推論のための同じ共有可能な処理ロジックを提供します。

  • 高性能ゲイン
    データ処理にかかる時間は数ミリ秒以内で、TensorFlowLiteを使用した高速な推論エクスペリエンスが保証されます。

  • 拡張性とカスタマイズ
    タスクライブラリインフラストラクチャが提供するすべての利点を活用して、独自のAndroid / iOS推論APIを簡単に構築できます。

サポートされているタスク

以下は、サポートされているタスクタイプのリストです。ますます多くのユースケースを有効にし続けるにつれて、リストは増えると予想されます。

代理人と一緒にタスクライブラリを実行する

デリゲートは、 GPUCoral Edge TPUなどのデバイス上のアクセラレータを活用することで、TensorFlowLiteモデルのハードウェアアクセラレーションを可能にします。それらをニューラルネットワークの操作に利用すると、遅延と電力効率の点で大きなメリットがあります。たとえば、GPUはモバイルデバイスのレイテンシーを最大5倍高速化し、Coral EdgeTPUはデスクトップCPUより10倍高速に推論できます。

タスクライブラリは、デリゲートを設定して使用するための簡単な構成とフォールバックオプションを提供します。次のアクセラレータがTaskC ++ APIでサポートされるようになりました。

iOS用のコアMLデリゲート、およびTask Java / Swift / WebAPIでのアクセラレーションサポートが間もなく登場します。

AndroidでのGPUの使用例

手順1.次のようなbazelビルドターゲットのGPUデリゲートプラグインに依存します。

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

その他のデリゲートオプションは次のとおりです。

"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon

手順2.タスクオプションでGPUデリゲートを構成します。たとえば、 BertQuestionAnswerer GPUを次のように設定できます。

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

ここで、より高度なアクセラレータ設定を確認してください

コーラルエッジTPUの使用例

手順1.次のようなbazelビルドターゲットのCoralEdgeTPUデリゲートプラグインに依存します。

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

手順2.タスクオプションでCoralEdgeTPUを構成します。たとえば、 ImageClassifier Coral ImageClassifierを次のように設定できます。

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

手順3.以下のようにlibusb-1.0-0-devパッケージをインストールします。すでにインストールされている場合は、次の手順にスキップしてください。

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

手順4.bazelコマンドで次の構成を使用してコンパイルします。

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

Coral EdgeTPUデバイスでタスクライブラリCLIデモツールを試してみてください。事前トレーニング済みのEdgeTPUモデル高度なEdgeTPU 設定の詳細をご覧ください