OFA (Once-for-All) - OFA (Once-for-All) - 3.5 日本語 - UG1414

Vitis AI ユーザー ガイド (UG1414)

Document_ID
UG1414
Release_Date
2023-09-28
Version
3.5 日本語

OFA (Once-for-All) 1 は、ワンショット NAS に基づく圧縮方式です。学習済みモデルの圧縮と 1 つ以上のデバイス上での運用といったタスクを実行する場合、従来の方式では、デバイスごとにネットワーク設計プロセスを繰り返し、設計済みのネットワークに新規に再学習させる必要があるため、非常に高い演算処理能力が必要となります。

OFA はこの問題に対する新たなソリューションです。一度設計した Once-for-All ネットワークは、さまざまなアーキテクチャ上で直接運用できます。これにより、学習コストの問題が解決されます。推論は、Once-For-All ネットワークの一部のみを選択して実行されます。

OFA は、プルーニングよりも多くの次元でモデルのサイズを削減します。OFA は、さまざまな深さ、幅、カーネル サイズ、および画像解像度のモデルのファミリを作成し、すべてのモデル候補を一緒に最適化します。学習の完了後、進化的検索により、精度とスループットの最適なバランスが得られるサブネットワークを見つけることができます。

Vitis OFA では、元のモデルの各レイヤーに対して任意のチャネル プルーニング率と任意のカーネル サイズを使用できます。元のモデルは多数の子ネットワークに分割されます。これらのネットワークは重みを共有し、1 つのスーパーネットワークを形成します。子ネットワークは、たたみ込みの重みの一部を使用して順方向パスを実行してアップデート可能です。学習中にすべてのサブネットワークを一緒に最適化する必要があります。すべての子ネットワークに十分に学習させたら、精度とスループットの最適なバランスを提供するサブネットワークをスーパーネットワークから検索できます。

最高の圧縮率を実現するために、Vitis OFA プルーナーには通常のたたみ込みの数に対する depthwise たたみ込みの数の比に基づいて検索空間を最適化する機能があります。depthwise たたみ込みの数が通常のたたみ込みの数よりも多い場合、Vitis OFA プルーナーは主に kernel size > 1 のたたみ込み層を圧縮します。その結果、チャネル幅が狭く、精度が低いスーパーネットワークが生成されます。

OFA は、サブネットワークの学習を指導する教師モデルとして元のモデルを使用します。知識の蒸留により、教師モデルの出力をソフト化されたラベルとして使用して、クラス内およびクラス間に関する詳細な情報が得られます。Vitis OFA は、適応型ソフト KDLoss 2 とサンドイッチ ルール 3 を使用して精度と効率を改善します。元の OFA と比較すると、Vitis OFA は学習時間を 2 分の 1 に短縮します。

注記:
  1. Han Cai et al., Once-for-All: Train One Network and Specialize it for Efficient Deployment, arXiv:1908.09791
  2. Dilin Wang et al., AlphaNet: Improved Training of Supernets with Alpha-Divergence, arXiv:2102.07954
  3. Jiahui Yu et al., BigNAS: Scaling Up Neural Architecture Search with Big Single-Stage Models, arXiv:2003.11142