Arm ML ツールによって保守されます
このドキュメントでは、さまざまな手法を組み合わせて機械学習モデルの展開を最適化するための実験的な API の概要を説明します。
概要
協調的な最適化は、展開時に推論速度、モデルのサイズ、精度などのターゲット特性の最適なバランスを示すモデルを生成するためのさまざまな手法を含む包括的なプロセスです。
協調最適化の考え方は、個別のテクニックを次々に適用して構築し、累積された最適化効果を達成することです。次の最適化をさまざまに組み合わせて実行できます。
これらのテクニックを連鎖させようとするときに発生する問題は、通常、いずれかのテクニックを適用すると、前のテクニックの結果が破壊され、すべてのテクニックを同時に適用することによる全体的な利点が損なわれてしまうことです。たとえば、クラスタリングでは、プルーニング API によって導入されたスパース性が維持されません。この問題を解決するために、次の実験的な協調最適化手法を導入します。
これらは、機械学習モデルを圧縮し、推論時にハードウェア アクセラレーションを活用するために使用できるいくつかのデプロイ パスを提供します。以下の図は、必要なデプロイメント特性を持つモデルを検索するために探索できるいくつかのデプロイメント パスを示しています。リーフ ノードはデプロイメントの準備ができたモデル、つまり、部分的または完全に量子化され、tflite 形式になっています。緑色の塗りつぶしは再トレーニング/微調整が必要なステップを示し、赤い破線の境界線は協調的な最適化ステップを強調表示します。特定のノードでモデルを取得するために使用される手法は、対応するラベルに示されています。
直接の量子化専用 (トレーニング後または QAT) デプロイメント パスは、上の図では省略されています。
アイデアは、上記のデプロイメント ツリーの 3 番目のレベルで完全に最適化されたモデルに到達することです。ただし、他のレベルの最適化でも十分な結果が得られ、必要な推論レイテンシーと精度のトレードオフを達成できる可能性があります。その場合、それ以上の最適化は必要ありません。推奨されるトレーニング プロセスは、ターゲット デプロイメント シナリオに該当するデプロイメント ツリーのレベルを繰り返し実行し、モデルが推論レイテンシー要件を満たしているかどうかを確認し、満たしていない場合は、対応する協調最適化手法を使用してモデルをさらに圧縮し、これを繰り返すことです。必要に応じて、モデルが完全に最適化される (枝刈り、クラスター化、量子化) まで。
以下の図は、協調最適化パイプラインを通過するサンプル重みカーネルの密度プロットを示しています。
その結果、トレーニング時に指定されたターゲットのスパース性に応じて、一意の値の数が減り、かなりの数のスパースの重みが含まれる量子化された展開モデルが得られます。モデル圧縮の重要な利点以外に、特定のハードウェア サポートでは、これらの疎なクラスター化モデルを利用して、推論遅延を大幅に削減できます。
結果
以下は、PQAT および CQAT 協調最適化パスを実験したときに得られた精度と圧縮の結果です。
スパース性保持量子化対応トレーニング (PQAT)
モデル | アイテム | ベースライン | 枝刈りモデル (50% スパース性) | QATモデル | PQATモデル |
---|---|---|---|---|---|
DS-CNN-L | FP32 トップ1の精度 | 95.23% | 94.80% | (偽INT8) 94.721% | (偽INT8) 94.128% |
INT8 完全整数量子化 | 94.48% | 93.80% | 94.72% | 94.13% | |
圧縮 | 528,128 → 434,879 (17.66%) | 528,128 → 334,154 (36.73%) | 512,224 → 403,261 (21.27%) | 512,032 → 303,997 (40.63%) | |
モバイルネット_v1-224 | FP32 トップ 1 の精度 | 70.99% | 70.11% | (偽INT8) 70.67% | (偽INT8) 70.29% |
INT8 完全整数量子化 | 69.37% | 67.82% | 70.67% | 70.29% | |
圧縮 | 4,665,520 → 3,880,331 (16.83%) | 4,665,520 → 2,939,734 (37.00%) | 4,569,416 → 3,808,781 (16.65%) | 4,569,416 → 2,869,600 (37.20%) |
クラスター保存量子化対応トレーニング (CQAT)
モデル | アイテム | ベースライン | クラスター化モデル | QATモデル | CQATモデル |
---|---|---|---|---|---|
CIFAR-10 の Mobilenet_v1 | FP32 トップ1の精度 | 94.88% | 94.48% | (偽INT8) 94.80% | (偽INT8) 94.60% |
INT8 完全整数量子化 | 94.65% | 94.41% | 94.77% | 94.52% | |
サイズ | 3.00MB | 2.00MB | 2.84MB | 1.94MB | |
ImageNet の Mobilenet_v1 | FP32 トップ 1 の精度 | 71.07% | 65.30% | (偽INT8) 70.39% | (偽INT8) 65.35% |
INT8 完全整数量子化 | 69.34% | 60.60% | 70.35% | 65.42% | |
圧縮 | 4,665,568 → 3,886,277 (16.7%) | 4,665,568 → 3,035,752 (34.9%) | 4,569,416 → 3,804,871 (16.7%) | 4,569,472 → 2,912,655 (36.25%) |
チャネルごとにクラスタ化されたモデルの CQAT および PCQAT の結果
以下の結果は、チャネルごとのクラスタリング手法を使用して得られます。これらは、モデルの畳み込み層がチャネルごとにクラスター化されている場合、モデルの精度が高くなることが示されています。モデルに多くの畳み込み層がある場合は、チャネルごとにクラスター化することをお勧めします。圧縮率は変わりませんが、モデルの精度は高くなります。私たちの実験では、モデル最適化パイプラインは「クラスター化 -> QAT を保持するクラスター -> トレーニング後の量子化、int8」です。モデル クラスター化 -> CQAT、int8 量子化 チャネルごとにクラスター化 -> CQAT、int8 量子化 DS-CNN-L 95.949% 96.44% モバイルネット V2 71.538% 72.638% MobileNet-V2 (プルーニング) 71.45% 71.901%
例
ここで説明する協調最適化手法のエンドツーエンドの例については、 CQAT 、 PQAT 、スパース性保持クラスタリング、およびPCQATサンプル ノートブックを参照してください。