プルーナーは、精度の低下を最小限に抑えながらモデルのパラメーター数を削減するように設計されています。これは次の図に示すように反復的なプロセスによって達成されます。プルーニングによって低下した精度を再学習によって回復します。プルーニングと再学習を 1 つのセットとして、これを反復実行します。最初の反復では、ベースライン モデルを入力モデルとして、プルーニングと微調整を実行します。その後の反復では、直前の反復で生成された微調整済みモデルを新しいベースラインとします。通常、目的のスパース モデルを得るにはこのプロセスを何度か繰り返す必要があります。1 回でモデルをプルーニングすると精度を維持できないため、反復が必要です。1 回のプルーニングで削除するパラメーターが多すぎると、精度がステップ関数として低下します。このような低下は回復が困難です。
重要: 微調整段階での精度を向上させるために、リダクション パラメーター値は、反復ごとに徐々に大きくする必要があります。
プルーニングを反復実行すると、モデルの精度を大きく低下させることなく、高いプルーニング率を達成できます。
図 1. 反復プルーニング
反復プルーニングには、主に次の 4 つのステージがあります。
- 分析
- モデルの感度分析を実行して、最適なプルーニング手法を決定します。
- プルーニング
- 入力したモデルの演算数を削減します。
- 微調整
- 再度トレーニングして、精度を回復します。
- 変換
- 重みが削減されたデンス (密) モデルを生成します。
次の手順に従ってモデルをプルーニングします。次の図にもこれらの手順を示します。
- 元のベースライン モデルを解析する。
- モデルをプルーニングする。
- プルーニング済みモデルを微調整します。
- 手順 2 と 3 を数回繰り返す。
- プルーニング済みのスパース (疎) モデルを、Vitis AI クオンタイザーで使用される最終的なデンス (密) 暗号化モデルに変換する。
図 2. 反復プルーニングのワークフロー
よりよいプルーニング結果を得るためのガイドライン
次に、プルーニング結果を最適化するための推奨事項を示します。これらのガイドラインに従うことで、開発者は精度の低下を抑えながらプルーニング率を高めることができます。
- モデルの解析には、できるだけ多くのデータを使用します。理想的には、検証データセットのすべてのデータを使用する必要がありますが、これにはかなりの時間を要する可能性があります。検証データセットの一部のみを使用することも可能ですが、少なくとも半分以上は使用する必要があります。
- 微調整段階では、初期学習率、学習率の減衰ポリシーなどのいくつかのパラメーターを試し、最良の結果を次のプルーニングへの入力として使用します。
- 微調整で使用するデータは、ベースライン モデルの学習に使用した元のデータセットのサブセットである必要があります。
- 微調整を複数回実行しても精度が十分に向上しない場合は、プルーニング率のパラメーターを下げてからプルーニングと微調整を再度実行してください。