このページは Cloud Translation API によって翻訳されました。
Switch to English

モデルの最適化

エッジデバイスのメモリや計算能力は限られていることがよくあります。これらの制約内で実行できるように、さまざまな最適化をモデルに適用できます。さらに、一部の最適化では、推論を加速するための専用ハードウェアを使用できます。

TensorFlow LiteとTensorFlowモデル最適化ツールキットは、推論の最適化の複雑さを最小限に抑えるツールを提供します。

アプリケーション開発プロセスでは、モデルの最適化を検討することをお勧めします。このドキュメントでは、エッジハードウェアにデプロイするためにTensorFlowモデルを最適化するためのいくつかのベストプラクティスの概要を説明します。

モデルを最適化する必要がある理由

モデルの最適化がアプリケーション開発に役立つ主な方法はいくつかあります。

小型化

一部の形式の最適化は、モデルのサイズを縮小するために使用できます。小さいモデルには次の利点があります。

  • ストレージサイズが小さいモデルが小さいほど、ユーザーのデバイスのストレージ容量が少なくなります。たとえば、小さいモデルを使用するAndroidアプリは、ユーザーのモバイルデバイスで使用するストレージ容量が少なくなります。
  • ダウンロードサイズが小さいモデルが小さいほど、ユーザーのデバイスにダウンロードするために必要な時間と帯域幅が少なくなります。
  • メモリ使用量の削減モデルが小さいほど、実行時に使用するRAMが少なくなり、アプリケーションの他の部分が使用できるようにメモリが解放され、パフォーマンスと安定性が向上します。

量子化により、これらのすべてのケースでモデルのサイズを縮小できますが、精度が犠牲になる可能性があります。プルーニングとクラスタリングは、モデルをより簡単に圧縮できるようにすることで、ダウンロードするモデルのサイズを縮小できます。

待ち時間の短縮

レイテンシは、特定のモデルで単一の推論を実行するのにかかる時間です。一部の形式の最適化では、モデルを使用して推論を実行するために必要な計算量を減らすことができるため、レイテンシが短くなります。レイテンシも消費電力に影響を与える可能性があります。

現在、量子化を使用して、推論中に発生する計算を簡略化することにより、潜在的にある程度の精度を犠牲にして、レイテンシを削減できます。

アクセラレータの互換性

Edge TPUなどの一部のハードウェアアクセラレータは、正しく最適化されたモデルで非常に高速に推論を実行できます。

一般に、これらのタイプのデバイスでは、モデルを特定の方法で量子化する必要があります。要件について詳しくは、各ハードウェアアクセラレータのドキュメントをご覧ください。

トレードオフ

最適化により、モデルの精度が変わる可能性があります。これは、アプリケーション開発プロセス中に考慮する必要があります。

精度の変化は、最適化される個々のモデルに依存し、事前に予測することは困難です。一般に、サイズまたはレイテンシが最適化されたモデルは、わずかな精度を失います。アプリケーションに応じて、これはユーザーのエクスペリエンスに影響する場合と影響しない場合があります。まれに、最適化プロセスの結果として、特定のモデルである程度の精度が得られる場合があります。

最適化のタイプ

TensorFlow Liteは現在、量子化、プルーニング、およびクラスタリングによる最適化をサポートしています。

これらは、TensorFlow Liteと互換性のあるモデル最適化手法のリソースを提供するTensorFlowモデル最適化ツールキットの一部です。

量子化

量子化は、モデルのパラメーターを表すために使用される数値(デフォルトでは32ビットの浮動小数点数)の精度を下げることで機能します。これにより、モデルサイズが小さくなり、計算が高速になります。

TensorFlow Liteで使用できる量子化のタイプは次のとおりです。

技術データ要件小型化正確さサポートされているハードウェア
トレーニング後のfloat16量子化 データなし 50まで% わずかな精度低下 CPU、GPU
トレーニング後のダイナミックレンジの量子化 データなし最大75% 精度の低下 CPU、GPU(Android)
トレーニング後の整数量子化 ラベルなしの代表的なサンプル最大75% 精度の損失が少ない CPU、GPU(Android)、EdgeTPU、Hexagon DSP
量子化を意識したトレーニング ラベル付けされたトレーニングデータ最大75% 最小の精度損失 CPU、GPU(Android)、EdgeTPU、Hexagon DSP

以下は、いくつかのモデルでのポストトレーニング量子化および量子化対応トレーニングのレイテンシと精度の結果です。すべてのレイテンシ数値は、単一の大きなコアCPUを使用するPixel 2デバイスで測定されます。ツールキットが改善されると、ここの数値も改善されます。

型番トップ1の精度(オリジナル) トップ1の精度(トレーニング後の数値化) トップ1の精度(量子化対応トレーニング) レイテンシ(オリジナル)(ms) レイテンシ(トレーニング後の定量化)(ミリ秒) レイテンシ(量子化対応トレーニング)(ミリ秒) サイズ(オリジナル)(MB) サイズ(最適化)(MB)
Mobilenet-v1-1-224 0.709 0.657 0.70 124 112 64 16.9 4.3
Mobilenet-v2-1-224 0.719 0.637 0.709 89 98 54 14 3.6
Inception_v3 0.78 0.772 0.775 1130年 845 543 95.7 23.9
Resnet_v2_101 0.770 0.768 なし 3973 2868 なし 178.3 44.9
表1一部のCNNモデルのモデル量子化の利点

剪定

剪定は、予測にわずかな影響しかないモデル内のパラメーターを削除することで機能します。プルーニングされたモデルはディスク上で同じサイズで、実行時のレイテンシは同じですが、より効率的に圧縮できます。これにより、プルーニングはモデルのダウンロードサイズを削減するための便利な手法になります。

将来的に、TensorFlow Liteはプルーニングモデルのレイテンシを削減する予定です。

クラスタリング

クラスタリングは、モデル内の各レイヤーの重みを事前定義された数のクラスターにグループ化し、個々のクラスターに属する重みの重心値を共有することで機能します。これにより、モデル内の一意の重み値の数が減り、複雑さが軽減されます。

その結果、クラスター化されたモデルをより効果的に圧縮でき、プルーニングと同様のデプロイメントの利点を提供します。

開発ワークフロー

まず、 ホストモデルのモデルがアプリケーションで機能するかどうかを確認します。そうでない場合、これは広く適用可能であり、トレーニングデータを必要としないため、トレーニング後の量子化ツールから始めることをお勧めします。

精度とレイテンシの目標が満たされていない場合、またはハードウェアアクセラレータのサポートが重要な場合は、 量子化を意識したトレーニングの方が適しています。 TensorFlowモデル最適化ツールキットのその他の最適化手法をご覧ください。

モデルのサイズをさらに小さくしたい場合は、モデルを量子化する前に、 剪定クラスタリングを試すことができます。