OFA モデルを生成する - 2.5 日本語

Vitis AI オプティマイザー ユーザー ガイド (UG1333)

Document ID
UG1333
Release Date
2022-06-15
Version
2.5 日本語

ofa_model() を呼び出して、OFA モデルを生成します。このメソッドは、すべての nn.Conv2d/nn.ConvTranspose2d モジュールと nn.BatchNorm2d モジュールを検出し、これらのモジュールを DynamicConv2d/DynamicConvTranspose2dDynamicBatchNorm2d に置き換えます。

どのような OFA モデルを生成するかを指定するには、プルーニング率のリストが必要です。

OFA モデル内の各たたみ込み層に対して、出力チャネルに任意のプルーニング率を使用できます。このリストの最大値と最小値は、モデルの最大圧縮率と最小圧縮率を表します。リストのその他の値は、最適化されるサブネットワークを表します。デフォルトでは、プルーニング率は [0.5, 0.75, 1] に設定されます。

OFA モデルからサンプリングされるサブネットワーク内のたたみ込み層の出力チャネルは、プルーニング率のリストのいずれかの値に元の値をかけた値です。たとえば、プルーニング率のリストが [0.5, 0.75, 1] でたたみ込み層が nn.Conv2d(16, 32, 5) である場合、サンプリングされるサブネットワーク内のこのレイヤーの出力チャネルは、[0.5*32, 0.75*32, 1*32] のいずれかです。

最初のレイヤーと最後のレイヤーはネットワークの精度に大きな影響を与えるため、一般にプルーニングから除外されます。デフォルトでは最初と最後のたたみ込みを自動で特定し、これらを除外リストに追加します。auto_add_excludes を FALSE に設定すると、この動作を無効にできます。

ofa_model = ofa_pruner.ofa_model([0.5, 0.75, 1], excludes = None, auto_add_excludes=True)