TensorFlow モデル最適化により管理
このドキュメントでは、モデル プルーニングがユースケースにどの程度適しているかを判断できるよう、その概要について説明します。
- エンドツーエンドの例を詳しく見る場合は、Keras によるプルーニングの例をご覧ください。
- ユースケースに必要な API をすばやく見つけるには、プルーニングの総合的なガイドをご覧ください。
- デバイス上の推論にプルーニングを適用する方法については、XNNPACK を使ったデバイス上の推論に対するプルーニングをご覧ください。
概要
重要度に基づいて重みのプルーニングを行い、トレーニング プロセスの過程でモデル内の複数の重みを徐々にゼロに指定することで、モデルのスパース性を実現します。スパースモデルは圧縮しやすく、ゼロの部分については推論の際にスキップできるため、レイテンシを改善できます。
この手法では、モデルの圧縮により改善が行われます。将来的には、フレームワークでこの手法をサポートすることで、レイテンシを改善する予定です。モデル圧縮により、精度の低下を最小限に抑えながら、最大で 6 倍の改善が確認されました。
この手法は、音声認識やテキスト読み上げなど、さまざまな音声アプリケーションで評価されており、さまざまなビジョンモデルと翻訳モデルで試験されています。
API 互換性マトリックス
ユーザーは、次の API でプルーニングを適用できます。
- モデル構築:
tf.keras
(Sequential モデルと Functional モデルのみ) - TensorFlow の各バージョン: TF 1.x(バージョン 1.14 以降)と 2.x
- TF 2.X パッケージの
tf.compat.v1
と TF 1.X パッケージのtf.compat.v2
はサポートされていません。
- TF 2.X パッケージの
- TensorFlow 実行モード: グラフモードおよび eager モード
- 分散トレーニング:
tf.distribute
(グラフ実行のみ)
ロードマップでは、次の領域でサポートを追加する予定です。
結果
画像分類
モデル | スパースでない最上位の精度 | スパース精度 | スパース性 |
---|---|---|---|
InceptionV3 | 78.1% | 78.0% | 50% |
76.1% | 75% | ||
74.6% | 87.5% | ||
MobilenetV1 224 | 71.04% | 70.84% | 50% |
モデルは Imagenet でテストされました。
翻訳
モデル | 非スパース BLEU | スパース BLEU | スパース性 |
---|---|---|---|
GNMT EN-DE | 26.77 | 26.86 | 80% |
26.52 | 85% | ||
26.19 | 90% | ||
GNMT DE-EN | 29.47 | 29.50 | 80% |
29.24 | 85% | ||
28.81 | 90% |
モデルでは WMT16 のドイツ語と英語のデータセットが使用されました。開発セットとして news-test2013、テストセットとして news-test2015 が使用されています。
例
Keras によるプルーニングのチュートリアルに加えて、次の例をご覧ください。
- MNIST の手書き数字の分類タスクについて、プルーニングを使用して CNN モデルをトレーニングする: コード
- IMDB のセンチメント分類タスクについて、プルーニングを使用して LSTM をトレーニングする: コード
学術的な背景については、「To prune, or not to prune: exploring the efficacy of pruning for model compression」(論文)をご覧ください。