TensorFlow モデルの最適化
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
TensorFlow Model Optimization Toolkit は、機械学習の推論を最適化する際の複雑さを最小限に抑えます。
機械学習モデルをデプロイするときには、レイテンシ、メモリ使用量はもちろん、多くの場合に消費電力の観点からも、推論の効率性が重要になります。特にモバイルやモノのインターネット(IoT)のようなエッジデバイスでは、リソースがさらに制約され、モデルサイズとコンピューティングの効率が重視されます。
トレーニングに必要なコンピューティング性能は、さまざまなアーキテクチャでトレーニングされるモデルの数とともに増大しますが、推論に必要なコンピューティング性能は、ユーザーの数に比例して増大します。
ユースケース
モデルの最適化は、特に次のような場合に有用です。
- クラウド デバイスとエッジデバイス(モバイル、IoT など)の両方で推論のレイテンシとコストを削減する。
- 処理能力、メモリ、消費電力に制約のあるエッジデバイスにモデルをデプロイする。
- モデルの無線(OTA)アップデートでのペイロード サイズを削減する。
- 固定小数点演算に特化した、または最適化したハードウェアでの実行を可能にする。
- 専用ハードウェア アクセラレータ用にモデルを最適化する。
最適化の手法
モデル最適化の分野には、さまざまな手法があります。
- プルーニングと構造化プルーニングを使用して、パラメータ数を減らす。
- 量子化を使用して表現精度を下げる。
- 元のモデルトポロジを、パラメータを減らしたり、実行を高速化したりすることで、より効率的なものに更新する。たとえば、テンソル分解の手法や抽出を使用します。
Google のツールキットは、トレーニング後の量子化、量子化認識トレーニング、プルーニング、クラスタリングをサポートしています。このツールキットは、異なる技術を組み合わせて使用するための共同最適化も実験的にサポートしています。
量子化
量子化モデルとは、32 ビット浮動小数点数ではなく 8 ビット整数などの精度の低いモデルで表現するものです。特定のハードウェアを活用するには、精度を低くする必要があります。
スパース性とプルーニング
スパースモデルは、演算子間の接続(ニューラル ネットワーク レイヤ)がプルーニングされ、パラメータ テンソルにゼロが導入されたモデルです。
クラスタリング
クラスタリングされたモデルは、元のモデルのパラメータが、より少ない数の固有の値に置き換えられたモデルです。
共同最適化
このツールキットは、共同最適化を実験的にサポートしています。これにより、複数のモデル圧縮技術を組み合わせるメリットを活かしつつ、量子化認識トレーニングによる精度の向上を図ることができます。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2021-09-01 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2021-09-01 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2021-09-01 UTC。"]]