スパース性

Versal アダプティブ SoC AIE-ML アーキテクチャ マニュアル (AM020)

Document ID
AM020
Release Date
2023-11-10
Revision
1.2 日本語

多くのニューラル ネットワークでは、負の値を 0 にクランプする ReLU 関数を使用するため、レイヤー間にゼロ活性化が生成されます。これらの任意の 0 は、ReLU 関数によって入力および出力活性化内に生成されます。AIE-ML タイルと AIE-ML メモリ DMA には伸張/圧縮ロジックが追加されているため、これらの 0 は AXI4-Stream を介して送信されません。ゼロ値のデータ重みもオフラインで圧縮できます。これらの重みは圧縮された状態で外部メモリから移動し、タイル DMA の S2MM チャネルで伸張されます。

さらに、AIE-ML コアは、たたみ込みを実行する前にゼロの重みを挿入することにより、データ ロード中のオンザフライの伸長をサポートします。この機能により、ゼロでない重みだけがローカル タイル メモリに格納されます。

AXI4-Stream 内の活性化の圧縮とコアのロード中の重みのオンザフライの伸長は、オプションの機能です。AIE-ML メモリおよび AIE-ML タイル DMA 内の圧縮/伸長は BD 内の専用ビットによって制御されます。次の図に、2 つの主要なユース ケースを示します。

図 1. DMA 内での圧縮と伸長
図 2. コア ロード インターフェイスでのオフラインの圧縮と伸長

次の図は、重みと活性化の両方からゼロを削除するように設計された圧縮アルゴリズムを示しています。このアルゴリズムは 8 ビット データ サンプルを処理し、32 ビット マスクを使用して 256 ビット ワード内のゼロ バイトとゼロでないバイトをエンコードします。ビット マスク内では、ゼロ バイトは 0 で表現され、ゼロでないバイトは 1 で表現されます。ゼロ値のバイトは圧縮されたデータから省略されます。次のマスクが 32 ビット境界に揃えられるように、必要に応じてガード ビットが挿入されます。この圧縮プロセスは、すべての 256 ビット データ ワードに一貫して適用されます。

図 3. 8 ビット サンプルの圧縮