vai_q_pytorch はブロック浮動小数点 (BFP) という新しいデータ形式を導入します。BFP では、同じブロック内の数値は指数部を共有します。共有される指数部は、ブロック内で最も大きな指数部を持つ数値で決定されます。小さい数値では、この共有指数部に対応するために仮数部が右にシフトされます。
量子化結果を評価に vai_q_pytorch を使用することはできますが、現時点では量子化されたモデルをハードウェアにデプロイするオプションはありません。
注記: BFP は、現在のバージョンの Vitis AI ツールチェーンでは完全にサポートされていない新しいデータ フォーマットです。
使用法
BFP には、ビット幅、ブロック サイズなど、さまざまな設定があります。ユーザーは、「mx6」と「mx9」という 2 種類のプリセットをそのまま利用できるため、これらを設定する必要はありません。モデルを量子化するには、次の手順を実行します。
- 浮動小数点モデルと入力を準備する
model = buid_your_model() batch_size = 32 inputs = torch.randn([batch_size, 3, 224, 224], dtype=torch.float32)
- 浮動小数点モデルを量子化する
from pytorch_nndct import bfp quantized_model = bfp.quantize_model(model, inputs, dtype='mx6')
- 量子化されたモデルの検証: 量子化されたモデルを評価関数に渡して、結果を検証する。
validate(quantized_model, data_loader)
BFP API
bfp.quantize_model(model,
inputs, dtype='mx6', config_file=None)
- モデル
- 量子化される浮動小数点モジュール。
- 入力
- 入力テンソルは量子化される浮動小数点モジュールの実際の入力と同じ形状を持ちますが、値は乱数を取ることができます。
- dtype
- あらかじめ設定された BFP の構成。指定可能な値は mx6、mx9 です。
- config_file
- コンフィギュレーション ファイルのパス。この機能は開発中です。事前定義済みの dtype を使用してください。