Path: blob/master/site/ja/model_optimization/guide/combine/pcqat_example.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Keras でのスパース性とクラスタリングを保持する量子化認識トレーニング(PCQAT)の例
概要
このチュートリアルでは、TensorFlow モデル最適化ツールキットの協調最適化パイプラインの一部である**スパース性とクラスタリングを保持する量子化認識トレーニング(PCQAT)**API の使用法を実演します。
その他のページ
パイプラインの概要とその他の利用可能な手法については、協調最適化の概要ページを参照してください。
内容
チュートリアルでは、次について説明しています。
MNIST データセットの
tf.keras
モデルを最初からトレーニングしますプルーニングを使用してモデルを微調整し、精度を確認して、モデルが正常にプルーニングされたことを確認します。
プルーニングされたモデルにスパース性を保持するクラスタリングを適用し、以前に適用されたスパース性が保持されていることを確認します。
QAT を適用し、スパース性とクラスタリングの損失を観察します。
PCQAT を適用し、前に適用されたスパース性とクラスタリングが保持されていることを確認します。
TFLite モデルを生成し、それに PCQAT を適用した場合の影響を観察します。
さまざまなモデルのサイズを比較して、スパース性を適用した後の圧縮の利点を観察し、その後、スパース性を保持するクラスタリングと PCQAT の協調最適化手法を観察します。
完全に最適化されたモデルの精度を、最適化されていないベースラインモデルの精度と比較します。
セットアップ
この Jupyter ノートブックは、ローカルの virtualenv または Colab で実行できます。依存関係のセットアップに関する詳細は、インストールガイドをご覧ください。
MNIST の tf.keras モデルをトレーニングし、プルーニングとクラスタリングを使用する
ベースラインモデルを評価して後で使用できるように保存する
モデルをプルーニングし、50% のスパース性に微調整する
prune_low_magnitude()
API を適用して、次のステップでクラスタリングされるプルーニングされたモデルを作成します。プルーニング API の詳細については、包括的なプルーニングガイドを参照してください。
モデルを定義してスパース性 API を適用する
事前にトレーニングされたモデルが使用されることに注意してください。
モデルを微調整し、スパース性を確認し、ベースラインに対する精度を評価する
3 エポックのプルーニングでモデルを微調整します。
モデルのスパース性とクラスタリングを計算して出力するヘルパー関数を定義します。
最初にプルーニングラッパーを削除し、次にモデルカーネルが正しくプルーニングされたことを確認します。
スパース性を保持するクラスタリングを適用し、両方の場合でモデルのスパース性への影響を確認する
次に、プルーニングされたモデルにスパース性を保持するクラスタリングを適用し、クラスタの数を観察して、スパース性が保持されていることを確認します。
最初にクラスタリングラッパーを削除し、モデルが正しくプルーニングおよびクラスタリングされていることを確認します。
QAT と PCQAT を適用し、モデルのクラスタリングとスパース性への影響を確認する
次に、スパースなクラスタリングされたモデルに QAT と PCQAT の両方を適用し、PCQAT がモデル内の重みのスパース性とクラスタリングを保持することを確認します。クラスタリングラッパーが削除されたモデルが QAT および PCQAT API に渡されることに注意してください。
PCQAT モデルの圧縮のメリットを確認する
zip 形式のモデルファイルを取得するためのヘルパー関数を定義します。
モデルにスパース性、クラスタリング、および PCQAT を適用すると、圧縮に大きなメリットがもたらされることに注目してください。
TF から TFLite への精度の永続性を確認する
テストデータセットで TFLite モデルを評価するヘルパー関数を定義します。
プルーニング、クラスタリングおよび量子化されたモデルを評価し、TensorFlow の精度が TFLite バックエンドに持続することを確認します。
結論
このチュートリアルでは、モデルを作成し、prune_low_magnitude()
API を使用してモデルをプルーニングし、cluster_weights()
API を使用してスパース性を保持するクラスタリングを適用して重みのクラスタリングを実行する際にスパース性を保持する方法を学習しました。
次に、スパース性とクラスタリングを保持する量子化認識トレーニング (PCQAT) を適用して、QAT を使用する際にモデルのスパース性とクラスタリングを保持しました。最終的な PCQAT モデルを QAT モデルと比較して、スパース性とクラスタリングが前者で保持され、後者で失われることを示しました。
次に、モデルを TFLite に変換して、スパース性の連鎖、クラスタリング、および PCQAT モデルの最適化手法の圧縮のメリットを示し、TFLite モデルを評価して、TFLite バックエンドで精度が維持されることを確認しました。
最後に、PCQAT TFLite モデルの精度を最適化前のベースラインモデルの精度と比較して、元のモデルと同様の精度を維持しながら、協調最適化手法で圧縮のメリットを実現できることを示しました。