TensorFlow Model Optimization Toolkit は、機械学習の推論を最適化する際の複雑さを最小限に抑えます。
機械学習モデルをデプロイするときには、レイテンシ、メモリ使用量はもちろん、多くの場合に消費電力の観点からも、推論の効率性が重要になります。特にモバイルやモノのインターネット(IoT)のようなエッジデバイスでは、リソースがさらに制約され、モデルサイズとコンピューティングの効率が重視されます。
トレーニングに必要なコンピューティング性能は、さまざまなアーキテクチャでトレーニングされるモデルの数とともに増大しますが、推論に必要なコンピューティング性能は、ユーザーの数に比例して増大します。
ユースケース
モデルの最適化は、特に次のような場合に有用です。
- クラウド デバイスとエッジデバイス(モバイル、IoT など)の両方で推論のレイテンシとコストを削減する。
- 処理能力、メモリ、消費電力に制約のあるエッジデバイスにモデルをデプロイする。
- モデルの無線(OTA)アップデートでのペイロード サイズを削減する。
- 固定小数点演算に特化した、または最適化したハードウェアでの実行を可能にする。
- 専用ハードウェア アクセラレータ用にモデルを最適化する。
最適化の手法
モデル最適化の分野には、さまざまな手法があります。
- プルーニングと構造化プルーニングを使用して、パラメータ数を減らす。
- 量子化を使用して表現精度を下げる。
- 元のモデルトポロジを、パラメータを減らしたり、実行を高速化したりすることで、より効率的なものに更新する。たとえば、テンソル分解の手法や抽出を使用します。
Google のツールキットは、トレーニング後の量子化、量子化認識トレーニング、プルーニング、クラスタリングをサポートしています。このツールキットは、異なる技術を組み合わせて使用するための共同最適化も実験的にサポートしています。
量子化
量子化モデルとは、32 ビット浮動小数点数ではなく 8 ビット整数などの精度の低いモデルで表現するものです。特定のハードウェアを活用するには、精度を低くする必要があります。
スパース性とプルーニング
スパースモデルは、演算子間の接続(ニューラル ネットワーク レイヤ)がプルーニングされ、パラメータ テンソルにゼロが導入されたモデルです。
クラスタリング
クラスタリングされたモデルは、元のモデルのパラメータが、より少ない数の固有の値に置き換えられたモデルです。
共同最適化
このツールキットは、共同最適化を実験的にサポートしています。これにより、複数のモデル圧縮技術を組み合わせるメリットを活かしつつ、量子化認識トレーニングによる精度の向上を図ることができます。