ザイリンクス デバイスでの INT8 に最適化したエン … › support ›...

15
© Copyright 2017 Xilinx, Inc. XilinxXilinx のロゴ、 ArtixISEKintexSpartanVirtexVivadoZynq、 およびこの文書に含まれるその他の指定されたブランドは、 米 国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれの保有者に帰属します。 この資料は表記のバージ ョ ンの英語版を翻訳したもので、 内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがありま す。 日本語版は参考用と し てご使用の上、 最新情報につきま し ては、 必ず最新英語版をご参照 く だ さい。 WP490 (v1.0) 2017 3 10 japan.xilinx.com 1 ザイリンクス デバイスでの INT8 最適化に よ り 、 深層学習推論 と従来のコンピューター ビジ ョ ン関数を使用するエンベデッ ビジョン アプ リ ケーシ ョ ンの演算手法において最適なパ フ ォーマン ス と 最高水準の電力効率が実現し ます。 ザ イ リ ン ク スの統合 DSP アーキテクチャでは、 INT8 演算において、 ほか FPGA DSP アーキテクチャと比較してソリューション レベ ルで 1.75 倍のパフォーマンスが達成されます。 ホワイ ト ペーパー : 16nm および 20nm All Programmable デバイス WP490 (v1.0) 2017 3 10 ザイリンクス デバイスでの INT8 に最適化した エンベデッド ビ ジ ョ ン の実装 著者 : Yao FuEphrem WuVarun SanthaseelanKristof DenolfKamran KhanVinod Kathail 概要 こ の資料では、 ザ イ リ ン ク ス の DSP48E2 ス ラ イ ス に実装 さ れた深層学習推論 と コ ン ピ ュ ー ター ビジ ョ ン関数を使用するエンベッ ド ビジョン アプ リ ケーシ ョ ンにおける INT8 演算に ついて考察し、 ほかの FPGA との比較も行います。 ザイ リンクスの DSP アーキテクチャ は、 INT8 累積乗算 (MACC) 演算において、 リ ソース数が同じほかの FPGA と比較して、 ソ リ ュ ーシ ョ ン レベルで最大 1.75 倍のパフォーマンスを達成できます。 エンベデッ ド ジョン アプ リ ケーシ ョ ンでは正確さ を損な う こ と な く 下位ビ ッ ト の精度を利用する ため、 INT8 を効率的に実装する必要があ り ます。 ザイリンクスの DSP アーキテクチャおよびライブラ リは、 INT8 演算向けに最適化されて い ま す。 こ の資料では、 ザ イ リ ン ク ス の 16nm および 20nm All Programmable デバイスの DSP48E2 ス ラ イ スを使用して、 同一のカーネルの重みを共有した 2 つの INT8 MACC 演算 を同時に処理する方法について説明します。 また、 この手法を利用するために入力サイズ として 24 ビ ッ ト が最小限であ る理由を論じ ます。 この点がザイ リ ン ク ス独自の発想です。 さ ら に、 基本の算術演算に DSP48E2 スライスを SIMD モードで使用する方法を詳し く説明 します。 深層学習またはその他のコンピューター ビジョン処理タスクにおいて、 これらの 機能をどのよ うにエンベッ ド ビジョンに利用できるかを示します。

Transcript of ザイリンクス デバイスでの INT8 に最適化したエン … › support ›...

Page 1: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

© Copyright 2017 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれるその他の指定されたブラン ドは、 米国およびその他各国のザイリンクス社の商標です。 すべてのその他の商標は、 それぞれの保有者に帰属します。

この資料は表記のバージ ョ ンの英語版を翻訳したもので、 内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用と してご使用の上、 最新情報につきましては、 必ず最新英語版をご参照く ださい。

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 1

ザイ リ ンクス デバイスでの INT8 最適化によ り、 深層学習推論と従来のコンピューター ビジ ョ ン関数を使用するエンベデッド ビジ ョ ン アプ リ ケーシ ョ ンの演算手法において最適なパフォーマンス と最高水準の電力効率が実現します。 ザイ リ ンクスの統合 DSP アーキテクチャでは、 INT8 演算において、 ほかの FPGA DSP アーキテクチャ と比較してソ リ ューシ ョ ン レベルで 1.75 倍のパフォーマンスが達成されます。

ホワイ ト ペーパー : 16nm および 20nm の All Programmable デバイス

WP490 (v1.0) 2017 年 3 月 10 日

ザイ リンクス デバイスでのINT8 に最適化した

エンベデッ ド ビジ ョ ンの実装著者 : Yao Fu、 Ephrem Wu、 Varun Santhaseelan、

Kristof Denolf、 Kamran Khan、 Vinod Kathail

概要

この資料では、 ザイ リ ンクスの DSP48E2 スライスに実装された深層学習推論と コンピューター ビジ ョ ン関数を使用するエンベッ ド ビジ ョ ン アプリ ケーシ ョ ンにおける INT8 演算について考察し、 ほかの FPGA との比較も行います。 ザイ リ ンクスの DSP アーキテクチャは、 INT8 累積乗算 (MACC) 演算において、 リ ソース数が同じほかの FPGA と比較して、 ソリ ューシ ョ ン レベルで最大 1.75 倍のパフォーマンスを達成できます。 エンベデッ ド ビジ ョ ン アプリ ケーシ ョ ンでは正確さを損な う こ とな く下位ビッ トの精度を利用するため、INT8 を効率的に実装する必要があ り ます。

ザイ リ ンクスの DSP アーキテクチャおよびライブラ リは、 INT8 演算向けに最適化されています。 この資料では、ザイ リ ンクスの 16nm および 20nm の All Programmable デバイスの DSP48E2 スライスを使用して、 同一のカーネルの重みを共有した 2 つの INT8 MACC 演算を同時に処理する方法について説明します。 また、 この手法を利用するために入力サイズと して 24 ビッ トが最小限である理由を論じます。 この点がザイ リ ンクス独自の発想です。さ らに、 基本の算術演算に DSP48E2 スライスを SIMD モードで使用する方法を詳し く説明します。 深層学習またはその他のコンピューター ビジ ョ ン処理タスクにおいて、 これらの機能をどのよ うにエンベッ ド ビジ ョ ンに利用できるかを示します。

Page 2: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 2

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

INT8 による深層学習およびコンピューター ビジョ ンエンベデッ ド ビジ ョ ンとは、 実世界に対応するコンピューター ビジ ョ ン アルゴ リズムをエンベデッ ド プラ ッ ト フォームに実装するこ とです。 コンピューター ビジ ョ ン アルゴ リズムは近年飛躍的に向上してきましたが、 この複雑で計算負荷の高いアルゴ リズムを消費電力が少ないエンベデッ ド プラ ッ ト フォームに移植するこ とは大きな課題です。 アルゴ リズムはフ ィルタリ ングやコーナー検出などの従来のコンピューター ビジ ョ ン向けまたは深層学習向けであるかにかかわらず、 常によ り多くの演算をよ り少ない消費電力で処理する必要があ り ます。

深層ニューラル ネッ ト ワークは、 よ り多くのアプリ ケーシ ョ ンにおける改革を推進し、 人間レベルの人口知能の機能を刷新してきました。 このネッ ト ワークは、 各種アルゴ リズムによってよ り優れた精度が提供されるため、 エンベデッ ド デバイスにおける主要なワークロード とな り ます。 深層学習モデルの精度の向上に伴い、 その複雑さに対応するため、 高い演算能力と広いメモ リ帯域幅が必要と されています。 演算密度と メモリ帯域幅を抑えつつ精度とスループッ ト を確保できる新たな深層学習推論モデルの開発では、 電力効率が革新の推進力となっています。 このオーバーヘッ ドを削減するこ とが、 最終的には電力効率の向上と、 必要な総消費電力の節減につながり ます。

演算時の総消費電力の節減に加えて、 演算のビッ ト幅が小さい方が、 メモ リ帯域幅に必要な消費電力も低減できます。 これは、 同量のメモ リ ト ランザクシ ョ ンでよ り少ないビッ トが転送されるからです。

深層学習推論においては、同じレベルの精度を確保するために浮動小数点演算は不要であるこ とが研究によ り判明しています [参照 1] [参照 2] [参照 3]。 また、 画像分類など数多くのアプリ ケーシ ョ ンで推論の許容精度を確保するために必要なのは、INT8 以下の固定小数点演算精度に過ぎません [参照 2] [参照 3]。 表 1 に、 微調整されたネッ ト ワークでの、 たたみ込み層と完全接続層での固定小数点の動的なパラ メーターと出力を示します。 かっこ内の数値は微調整なしの精度を示します。

深層学習用の INT8 演算の最適化は、 大規模な一連の従来型コンピューター ビジ ョ ン関数にも直接適用できます。 これらのアルゴ リズムは、 通常は 8 ビッ トから 16 ビッ トの整数表現で動作します。 最近提案されたコンピューター ビジ ョ ンの規格である OpenVX [参照 4] は、 チャネルごとに INT8 表現法の使用を指定しています。 ほとんどのコンピューター ビジ ョ ン アプリケーシ ョ ンではある程度のフ ィルタ リ ングを必要と しますが、 これは一連のド ッ ト積演算に分解できます。 ザイ リ ンクス DSP48E2 スライスでの SIMD モードの演算では、 ビジ ョ ン アルゴ リズムに関係する演算を実装するための追加のオプシ ョ ンがあ り ます。

表 1: 固定小数点精度での CNN モデル

層出力CONV

パラメーター

FC パラメーター

32 ビッ ト浮動小数点ベースライン

固定小数点精度

LeNet (Exp1) 4 ビッ ト 4 ビッ ト 4 ビッ ト 99.1% 99.0% (98.7%)

LeNet (Exp2) 4 ビッ ト 2 ビッ ト 2 ビッ ト 99.1% 98.8% (98.0%)

フル CIFAR-10 8 ビッ ト 8 ビッ ト 8 ビッ ト 81.7% 81.4% (80.6%)

SqueezeNet top-1 8 ビッ ト 8 ビッ ト 8 ビッ ト 57.7% 57.1% (55.2%)

CaffeNet top-1 8 ビッ ト 8 ビッ ト 8 ビッ ト 56.9% 56.0% (55.8%)

GoogLeNet top-1 8 ビッ ト 8 ビッ ト 8 ビッ ト 68.9% 66.6% (66.1%)

Page 3: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 3

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

ザイリ ンクス DSP スライスでの INT8 演算ザイ リ ンクスの DSP48E2 スライス (UltraScale と UltraScale+ の FPGA、および Zynq UltraScale+ MPSoC (プログラマブル ロジック )) は、 1 つの積和演算で、 1 ク ロ ッ ク サイクル内に最大で 18x27 ビッ トの乗算と最大で 48 ビッ トの累算を効率的に実行するよ うに設計されています。 図 1 を参照して ください。 その DSP スライス自体にループバッ クするこ とによ り、 または複数の DSP48E2 スライスをチェーン接続するこ とによ り、 ザイ リ ンクス デバイスでは累積乗算 (MACC) を効率的に実行できます。

INT8 演算では、 基本的に 27 ビッ ト幅という広い幅が使用されます。 従来の利用法では、 (A+B) x C タイプの演算を効率的に実装するために通常は前置加算器が利用されますが、 このタイプの演算は、 深層学習およびコンピューター ビジ ョ ン アプリケーシ ョ ンにはあま り見られません。(A+B) x C の結果を A x C と B x C に分けるこ とで、累算を個別のデータ フローで実行できます。 これによ り、 深層学習やコンピューター ビジ ョ ンに関連する一般的な演算に適合できます。

18x27 ビッ ト乗算器を備えているこ とは、 INT8 MACC 演算にとってメ リ ッ トです。 1 つの DSP48E2 スライスで 2 つの INT8 MACC を同時に実行するには、 乗算器への入力の少なく と も 1 つが最低でも 24 ビッ トで、 キャ リー アキュムレータが 32 ビッ トであるこ とが必要です。 27 ビッ トの入力と 48 ビッ トのアキュムレータを組み合わせるこ とによ り、 ソ リ ューシ ョ ンのパフォーマンスが 1.75 倍に向上しました (INT8 MACC に対する DSP 乗算器の比が 1.75:1)。 ほかのベンダーの FPGA では 1 つの DSP ブロ ッ クに 18x19 乗算器があるのみで、 INT8 MACC に対する DSP 乗算器の比は 1:1 に限定されています。

スケーラブルな INT8 最適化

目標は、 入力 a、 b、 c の間の乗算結果を a x c と b x c に容易に分けるこ とができるよ うに、 a、 b、 c を効率的にエンコードする方法を見つけるこ とです。 共通の入力を c とする と、 この技法は、 単一命令の、 共通係数を持つ 2 つのデータ と表現できます。

INT8 乗算などの減精度演算では、 よ り精度の高い 10 ビッ ト または 19 ビッ トの入力は 0 または 1 で埋められており、 運んでいる情報は 1 ビッ トのみです。 これは、 45 ビッ トの最終の積の上位 29 ビッ トでも同じです。 そのため、 下位の 8 ビッ トおよび 16 ビッ トの入力結果に影響を与えずに、 上位 19 ビッ ト を使用して別の演算を実行するこ とが可能です。

X-Ref Target - Figure 1

図 1: MACC モードでの DSP48E2 スライス

WP490_01_03

b B

AccumulatedResults

Accumulated resultsloopback or forwardto next DSP

C

D

a A

18 x 27

PatternDetect

W

ALU

Out

put R

egis

ters

Page 4: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 4

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

未使用の上位ビッ ト を別の演算に利用する際は、 一般的に次の 2 つのルールに従う必要があ り ます。

1. 上位ビッ トが下位ビッ トの演算に影響を与えてはならない。

2. 下位ビッ トの演算によ り上位ビッ トに影響が生じた場合の検出および回復が可能でなければならない。

上記のルールを満たすため、 上位の積の結果の最下位ビッ トが下位 16 ビッ トに入らないよ うにする必要があ り ます。 つま り、上位ビッ トの入力は少なく と も第 17 ビッ トから始める必要があ り ます。 上位が 8 ビッ トの入力の場合、 合計入力サイズは最小で 16 + 8 = 24 ビッ トが必要です。 この 24 ビッ トの最小入力サイズで保証できるのは、 1 つの乗算器での 2 つの同時乗算のみです。 これでは、 全体で 1.75 倍の MACC スループッ ト を達成するのに十分ではあ り ません。

1 つの DSP48E2 スライスで ac と bc を並列に計算する手順を次に示します。 こ こではスライスが 27 ビッ ト前置加算器 (入力も出力も 27 ビッ ト幅) と 27x18 乗算器を持つ演算ユニッ ト と して使用されています。 詳細は、 図 2 を参照してください。

1. 8 ビッ トの入力 a と b は、 前置加算器を通して DSP48E2 乗算器の 27 ビッ ト ポート p にパッ ク されます。 これによ り、 2 ビッ トのベクターはできるだけ遠ざけられます。 入力 a は 18 ビッ トだけ左シフ ト されます。 これは、 b < 0 かつ a = –128 である場合に前置加算器でのオーバーフローを防ぐために、 最初の項から 27 ビッ ト内に 2 つの符号ビッ ト a を生成するためです。 a のシフ ト量が 18 であるこ と、 つま り DSP48E2 乗算器ポート B の幅は偶然です。

2. パッ ク された 27 ビッ ト ポート p と 18 ビッ トの c で表される 8 ビッ ト係数の積を 2 の補数フォーマッ トで計算するために、 DSP48E2 27x18 乗算器が使用されます。 この 45 ビッ トの積は、 2 つの 44 ビッ ト項の和を 2 の補数フォーマッ トで表したものになり ます。 つま り、 18 ビッ トだけ左シフ ト された ac と bc です。

上述の 45 ビッ トの積を累算するために後置加算器を使用できます。 この積には、 上位と下位に分割可能な積項が含まれています。 上位項と下位項に対して正しい累算が実行され、 単一の 45 ビッ トの積が累算されます。 最終的な累算結果は、 オーバーフローが生じていなければ、 単純な演算で分割できます。

この手法の限界は、 各 DSP48E2 スライスで累算できる積項の数にあ り ます。 上位と下位の積項の間には 2 ビッ トが残っているため (図 3 参照)、 下位ビッ トにオーバーフローを生じさせるこ とな く累算を保証できる積項の数は、 最大で 7 つまでです。積項の数が 7 つを超えた場合にこの限界を広げるには、 追加の DSP48E2 スライスが必要です。 結果と して、 この 8 つの DSP48E2 スライスは 7x2 INT8 乗算/加算演算を実行します。 これは、同じ数の乗算器を持つ競合デバイス と比較して 1.75 倍の INT8 MACC 演算です。

X-Ref Target - Figure 2

図 2: 8 ビッ ト最適化

WP490_02_020317

c B

AccumulatedResults

Accumulated resultsloopback or forwardto next DSP

C

D

a <<18 A

18 x 27

PatternDetect

W

ALU

Out

put R

egis

ters

b

p

Page 5: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 5

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

この手法には、 実際のユース ケースの要件に応じて幅広く応用可能です。 ReLU (正規化線形関数) を使用したたたみ込みニューラル ネッ ト ワーク (CNN) では、非負のアクティベーシ ョ ンが生成され、符号なしの INT8 フォーマッ トでは 1 ビッ トだけ精度が増して、 ピーク スループッ トが 1.75 倍に向上します。

DSP48E2 SIMD モード

DSP48E2 スライスの後置加算器は、 4 つの 12 ビッ ト SIMD ALU または 2 つの 24 ビッ ト SIMD ALU に分割され (図 4 を参照)、加算、 減算、 累算、 またはビッ ト単位論理演算を並列で実行します。 SIMD モードでは、 DSP48E2 スライスの前置加算器および乗算器は使用できません。 サイ クル ベースで、 ALUMODE[3:0] コン ト ロール バスは演算を選択し、 OPMODE[8:0] コン トロール バスはオペランド W、 X、 Y、 Z を選択します。 24 ビッ ト演算の場合、 DSP48E2 スライスの P レジスタに 2 つの入力アレイの処理結果を格納できます。 各アレイについて、 サイ クルごとに 1 エレ メン トずつ合計の計算が順次実行されます。 したがって、 スループッ トはサイクルごとに 2 つの新しい結果になり ます。 詳細は、 『UltraScale アーキテクチャ DSP スライス ユーザー ガイ ド』 (キーワード 「SIMD」、 「ALUMODE」、 「OPMODE」 ) (UG579) [参照 5] を参照して ください。

X-Ref Target - Figure 3

図 3: 1 つの DSP48E2 スライスでの 2 つの INT8 乗算のパック

WP490_03_020317

+

+

+

+

=

=

a[0]a[7] . . . . . .

c[0]c[7] . . . . . .

ac[0]ac[15] . . . . . .... . . . . .

bc[0]bc[15] . . . . . .... . . . . .

ac[0]ac[15] . . . . . .... . . . . .

0x0. . . . . .... . . . . .0x0 . ...a[7] . . . . a[0]x

b[0]. . . . . .... . . b[7] b[7] b[7]. . .... . . . . .b[7]

c[0]. . . . . .... . . 0x0 0x0 c[7]. . .... . . . . .0x0

bc[0]. . . . . .... . . . . .bc[15]bc[15] .ac[0]ac[15] ... . . . .... . . . . bc[15]

+

=

b[0]b[7] . . . . . .

c[0]c[7] . . . . . .

bc[0]bc[15] . . . . . .... . . . . .

Page 6: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 6

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

INT8 最適化の深層学習アプリ ケーショ ンへの応用最新のニューラル ネッ ト ワークの多くは、元来のパーセプ ト ロン モデルから派生しています [参照 6]。詳細は、図 5 を参照して ください。

深層ニューラル ネッ ト ワーク (DNN) と も呼ばれる最新の深層学習の基本的な演算は、 標準的なパーセプト ロン構造から大きく進歩したとは言え、 未だにパーセプ ト ロン的な演算を継承しています。 ただし、 パーセプ ト ロン構造は全体と してよ り広く、 また、 よ り深く積み重なっています。 図 5 ではパーセプ ト ロンの基本的な演算を示しています。 この演算は複数の層を介して典型的な深層学習推論ごとに究極的には数百万回から数十億回繰り返されます。

X-Ref Target - Figure 4

図 4: DSP48E2 のデュアル 24 ビッ ト SIMD モード

WP490_04_020917

X

Y

W

Z

0

P

0

1

PCIN

P

C

A:B

C

0

P

RND

CQ

0

[47:0]

P[47:24], CARRYOUT[3]

P[23:0], CARRYOUT[1]

ALUMODE[3:0]

[47:24]

[47:0]

[47:0]

[47:0] [23:0]

X-Ref Target - Figure 5

図 5: パーセプトロンと深層ニューラル ネッ トワーク

a1

an

w1

wi

wn

w01

Activation Function

WP490_05_020317

Perceptron

ai

an

oj

om

o1a1

Deep Neural Networks

......

......

......

......

...

Convolution

Fully Connected

Input

Input

Output

Output

Input Output

Recurrent

Neural Network Layer

Sum of Product Terms(Dot Product of Vectors A and W)

ai

Page 7: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 7

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

図 6 に示すよ うに、 ニューラル ネッ ト ワークのある層における m 個のパーセプ ト ロン/ニューロン出力

のそれぞれを計算するための主要な操作は、 n 個の入力サンプル

を取り込み、 各入力を対応する次のカーネル重みで乗じて、

その結果を累算します。

こ こで、 f(x) は任意のアクティベーシ ョ ン関数です。

と の精度が INT8 に制限される場合、 この積和は、 INT8 最適化手法で記述した並列の MACC の最初のものになり ます。

2 番目の積和では同じ入力 を使用しますが、 別の一連のカーネル重み を使用します。

2 番目のパーセプ ト ロン/ニューロン出力の結果は次のよ うにな り ます。

詳細は、 図 7 を参照して ください。

X-Ref Target - Figure 6

図 6: 深層学習におけるパーセプトロン

WP490_06_020317

a1

ai

Sum of product terms: a1w1,j + ... + aiwi,j + ... + anwn,j + w0

an

O1

Oj

Om

w1,j

wi,j

wn,j

Output/Next Layer

Input/Last Layer

Page 8: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 8

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

INT8 最適化手法を使用して の値を 18 ビッ ト左シフ トするこ とで、 各 DSP48E2 スライスでは最終出力値の一部となる独

立した部分が生成されます。 各 DSP48E2 スライスのアキュムレータのビッ ト幅は 48 ビッ トであ り、 次のスライスにチェーン

接続されます。 これによ り、 チェーン接続したブロ ッ クの数は 7 に制限されます。 これを超える と、 シフ ト された が飽

和して演算に影響します。 つま り、 合計 n 個の入力サンプルに対して n 個の DSP スライスで MACC は 2n 個になり ます。

標準的な DNN の各層には数百から数千の入力サンプルがあ り ます。 ただし、 7 項を累算した後は、 48 ビッ トのアキュムレータの下位の項が飽和する可能性があるため、 7 項の和ごとに DSP48E2 スライスが追加で必要になり ます。 これは、 14 の MACC が、 7 つの DSP48E2 スライス と、 過飽和を防ぐためのも う 1 つの DSP48E2 スライスで得られるこ とを意味します。 結果と して、 スループッ トが 7/4、 つま り 1.75 倍に向上します。

たたみ込みニューラル ネッ ト ワーク (CNN) では通常、 たたみ込み層で同一の重みが頻繁に再利用されて、 a x w および b x w とい う タイプの並列 MACC 演算を形成します。 したがって、 入力の共有に代えて重みの共有も利用できます (図 8 参照)。

X-Ref Target - Figure 7

図 7: 共通の入力を使用した並列の 2 つの積和項

an

ok

om

o1a1

......

......

...ai

ojInput/Last Layer

Output/Next Layer

WP490_07_020317

Page 9: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 9

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

INT8 でチェーン接続した MACC を作成するその他の方法

INT8 でチェーン接続した MACC は、使用可能な LUT (デザインのほかの部分で使用されていない LUT) を利用して、DSP48E2 スライスに近い周波数で動作するプログラマブル ロジッ ク内に構築するこ と もできます。

使用可能な LUT を利用するこ とで、 深層学習のパフォーマンスは大幅に向上させるこ とができ、 場合によっては 3 倍になります。 FPGA 以外のほかのアーキテクチャでは多くの場合、 使用可能な深層学習演算の実行時に、 こ う した利用可能な演算リソースが考慮の対象になり ません。

ザイ リ ンクスの FPGA および MPSoC のプログラマブル ロジッ クは、 さまざまなワークロードを同時かつ効率的に処理できるという点で独特です。 たとえば、 ザイ リ ンクスの FPGA および MPSoC では、 CNN 画像の分類、 ネッ ト ワークでの暗号化、データの圧縮を同時に実行できます。 この深層学習パフォーマンスの競合分析において、 MACC LUT は考慮に入れていません。 これは LUT が通常、 MACC 機能の実行よ り も、 その他の並行機能の実行に使用した方が有用だからです。

X-Ref Target - Figure 8

図 8: 重みの共有と入力の共有の比較

13

13

256

WP490_08_020617

Input Feature Maps (IFMs) Out Feature Maps (OFMs)256 Kernel Weights

13

33

13

384

384W

ab

13

13

256

Input Feature Maps (IFMs) Out Feature Maps (OFMs)256 Kernel Weights

13

33

13

384

384Wj

a

a. Weight Sharing: Compute two OFM samples in parallel

b. Input Sharing: Compute two OFMs in parallel

Wk

Page 10: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 10

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

INT8 最適化のコンピューター ビジョン関数への応用Khronos OpenVX 規格では、 顔、 身体、 身体動作の追跡、 スマート ビデオ監視、 先進運転支援システム (ADAS)、 オブジェクト とシーンの再構築、 拡張現実、 外観検査、 ロボッ ト工学などのユース ケースにおいて特に重要な一連のコンピューター ビジ ョ ン処理モジュールが定義されています。 表 2 に、 INT8 最適化を適用できるコンピューター ビジ ョ ン関連の関数を示します。

表 2: コンピューター ビジ ョ ン関数に適用可能な INT8 最適化

画像/ビジ ョ ン処理ベンチマーク コンポーネン ト

OpenVX OpenCV スケーラブルな INT8 互換

SIMD 互換

ピクセル レベル: 空間フ ィルタ リングおよび幾何学的空間の変換

絶対値差分 AbsDiff absDiff – ○

画像累積 AccumulateImage accumulate – ○

重み付け累積 AccumulateWeightedImage accumulateWeighted ○ –

算術加算 Add add – ○

算術減算 Substract subtract – ○

ビッ ト単位の And、 Or、 Xor、 Not

And、 Or、 Xor、 Notbitwise_and、 bitwise_or、bitwise_xor、 bitwise_not

– ○

しきい値 Threshold threshold – ○

ボッ クス フ ィルター Box3x3 boxFilter ○ –

フ ィルター 2D (たたみ込み)

Convolve filter2D ○ –

膨張フ ィルター (形態)、最大

Dilate3x3 dilate – ○

縮小フ ィルター (形態)、最大

Erode3x3 erode – ○

ガウシアン フ ィルター Gaussian3x3 GaussianBlur ○ –

ガウシアン ピラ ミ ッ ド GaussianPyramid buildPyramid ○ –

ラプラス ピラ ミ ッ ド LaplacianPyramid ○ –

メディアン Median3x3 medianBlur ○

Sobel Sobel3x3 Sobel ○ –

スケーリ ング HalfScaleGaussian、 ScaleImage resize ○ –

オプティカル フロー OpticalFlowPyrLK PyrLKOpticalFlow ○ –

ステレオ視差 (SBM または SGM)

なし FindStereoCorrespondenceBM ○ –

解析および認識

積分画像 IntegralImage integral – ○

平均値標準偏差 MeanStdDev meanStddev – ○

最小/最大ロケーシ ョ ン MinMaxLoc minMaxLoc – ○

Canny エッジ検出 CannyEdgeDetector Canny ○ Y

FAST9 コーナー検出 FastCorners FAST ○ –

Harris コーナー検出 HarrisCorners cornerHarris ○ –

ORB (Oriented FAST and Rotated BRIEF)

特徴検出器なし ORB::ORB – ○

Page 11: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 11

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

スケーラブルな INT8 最適化では、 共有する係数で 2 つのデータを同時に処理するための互換性をチェッ ク します。 SIMD は、DSP48E2 スライス内の 4 つのオペランド演算子の利点を活かすこ とができるモジュールをチェッ ク します。データ と重みが 8 ビッ ト制限を順守するすべてのフ ィルター関連モジュールは、 スケーラブルな INT8 技法の利点を活かすこ とができます。 基本の画像演算 (加算/減算、 比較など) に関係するほかのモジュールはほとんど、 DSP48E2 の SIMD 演算を活用できます。

スケーラブルな INT8 最適化を使用するカスタム 2D たたみ込み

コンピューター ビジ ョ ン関数の場合、 大半の事前処理タスクである程度のフ ィルタ リ ングが必要になり ます。 画像はたいていチャネルあたり 8 ビッ トで表されるため、 深層学習アプリ ケーシ ョ ンにおける INT8 演算の最適化は、 画像処理における 2 次元フ ィルタ リ ング演算に適用できます。 唯一の制約は、 フ ィルター内の係数が 8 ビッ トの精度でなければならないという ことです。 これは一般に、 Sobel、 Scharr、 Laplacian などの一般的なエッジ検出フ ィルターに当てはま り ます。

DSP48E2 スライスの 2 乗算器モードは、 次のいずれかの技法を使用して利用できます。

同じチャネルの出力の複数ピクセルに対する演算処理: このモードでは、 2 つの出力ピクセルを並列で演算処理できます。フ ィルターの係数は画像内の複数のピクセルで共有されているため、 ロケーシ ョ ン (x,y) および (x,y+1) のピクセルを同時に計算できます。 各フ ィルターの係数は、 フ ィルター計算の実行順序に応じて、 2 つの異なる入力ピクセルで乗算されます。 つまり、 プログラマブル ロジッ クで使用可能な量と同じ リ ソースによ り、 1.75 倍までパフォーマンスが向上します。

異なるチャネルまたは画像の出力の複数ピクセルに対する演算処理: 処理される画像にチャネルが複数あ り、 異なるチャネル間でフ ィルターを共有する場合には、 同じロケーシ ョ ン (x,y) のピクセルに対してフ ィルターの係数を複数のチャネル間で共有できます。 同じ技法を、 複数の画像に対する同時演算処理にも利用できます。

HOG 検出/ディ スク リプター

なし HOGDescriptor ○ –

SVM なし CvSVM::predict ○ –

表 2: コンピューター ビジ ョ ン関数に適用可能な INT8 最適化 (続き)

画像/ビジ ョ ン処理ベンチマーク コンポーネン ト

OpenVX OpenCV スケーラブルな INT8 互換

SIMD 互換

Page 12: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 12

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

SIMD 演算を使用するメディアン フ ィルター

メディアン フ ィルターも画像処理では一般的であ り、 ノ イズ除去に使用されます。 画像に対してメディアン フ ィルターを使用するには、 プリセッ ト サイズのウ ィンド ウで画像をスキャンし、 そのウ ィンド ウに収まるピクセルの中央値を計算し、 中央のピクセルをその中央値で置き換えます。 中央値の計算は負荷が高く、 値をソート した後にリ ス トの中央に位置する値を検出します。 ソートは、 一連の比較演算で行われます。

プログラマブル ロジッ クで DSP を使用してメディアン フ ィルターを実装するために、 アルゴ リズムを変更できます。 各比較演算は、 減算と、 それに続く符号ビッ トのチェッ クに分割できます。 DSP48E2 スライスは、 減算ではクワ ッ ド 12 ビッ ト またはデュアル 24 ビッ ト モードで動作できます。 DSP48E2 スライスを十分に活用するために、 複数のピクセルを並列で演算処理できます。 各ピクセルに 12 ビッ ト未満の深さの単一チャネルを使用する場合、 4 つの出力ピクセルを同時に処理できます。各出力ピクセルでは、 DSP48E2 スライスの減算で使用されるソート演算が複数あ り ます。 結果の符号ビッ トは、 DSP48E2 スライスの外部で最小のロジッ クによってチェッ クできます。 比較の合計数は、 値のソートに使用したアルゴ リズムに応じて異なり ます。

X-Ref Target - Figure 9

図 9: メディアン フ ィルターに用いる DSP48E2 動作モード

WP490_09_020917

PRND

Q

0

[47:0]

[47:0]

1C

0

A:BP

0

[47:0]

PCINPC

0

[47:0]

P [47:36]

[47:36]

P [35:24]

[35:24]

P [23:12]

[23:12]

P [11:0]

[11:0]

ALUMODE[3:0]

W

X

Y

Z

Page 13: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 13

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

競合分析この競合分析では、 Intel 社の (以前は Altera 社の) Arria 10 デバイス とザイ リ ンクスの Zynq® UltraScale+™ MPSoC を比較しています。 エンベデッ ド ビジ ョ ン アプリ ケーシ ョ ンにおけるこの計算効率を比較する と、 選択された次のデバイスの DSP 集積度とデバイス消費電力は同等です。

• Arria 10 SoC: SX220、 SX270、 SX480

• Zynq UltraScale+ MPSoC: ZU3、 ZU7、 ZU9 デバイス

比較では、 深層学習やコンピューター ビジ ョ ンなど数多くのアプリ ケーシ ョ ンで使用できる汎用 MACC のパフォーマンスに焦点を当てています。

Intel 社の MACC パフォーマンスは、 前置加算器を活用した演算子に基づいています。 ただし、 この実装で生成されるのは、積項の和であ り、 個々の独立した積項ではあ り ません。 結果的に Intel 社の前置加算器は、 深層学習またはコンピューター ビジ ョ ン向けの効率的な演算には適していません。

この計算効率分析での各デバイスの消費電力は、 ザイ リ ンクスの 2016.4 Power Estimator ツールおよび Intel 社の 16.0.1 EPE Power Estimate ツールを使用して、 次の前提で見積り ました。

1. DSP 使用率: 90%

2. Intel デバイス -2L、 0.9V (FMAX)

3. ザイ リ ンクス デバイス -1L、 0.72V (FMAX)

4. ク ロ ッ ク レート DSP FMAX でのロジッ ク使用率: 70%

5. 半分のクロ ッ ク レート DSP FMAX でのブロ ッ ク RAM 使用率: 90%

6. DSP ト グル レート : 12.5%

7. 消費電力特性評価: 「標準消費電力」

図 10 は、 深層学習と コンピューター ビジ ョ ンの演算における電力効率を比較したものです。 深層学習およびコンピューター ビジ ョ ンの演算において、ザイ リ ンクス デバイスは Intel 社の Arria 10 SoC デバイス と比較して 3 倍から 7 倍高い計算効率を実現します。

Page 14: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 14

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

まとめこのホワイ ト ペーパーでは、 ザイ リ ンクスの DSP48E2 スライスが INT8 深層学習演算およびコンピューター ビジ ョ ンに最適であ り、 1.75 倍のパフォーマンスを達成できるこ とについて論じました。 深層学習では、 ザイ リ ンクスの DSP48E2 スライスを使用する と、 同一のカーネル重みを共有して 2 つの INT8 MACC 演算を同時に実行できます。 INT8 を効率良く実装するには、 24 ビッ トの入力幅が必要です。 この利点をサポート しているのは、 ザイ リ ンクスの DSP48E2 スライスのみです。 この利点は、 コンピューター ビジ ョ ンでのフ ィルタ リ ングなどの演算やその他のイ メージ操作タスクにも利用できます。 ザイ リ ンクスの DSP48E2 スライスの SIMD モードによ り、 4 つの 12 ビッ ト SIMD または 2 つの 24 ビッ ト SIMD 操作を実行する手段がさらに追加されます。

要約する と、 ザイ リ ンクスの Zynq UltraScale+ MPSoC は INT8 ワークロードに大変適しており、 エンベデッ ド ビジ ョ ンでの多数のアプリ ケーシ ョ ンを推進するための非常に優れた選択肢です。 ザイ リ ンクスは、 今後もエンベデッ ド ビジ ョ ン応用分野での深層学習およびコンピューター ビジ ョ ンの機能を促進するためにハードウェアおよびソフ ト ウェアに基づく新たなメ ソド ロジを開拓していきます。

ザイ リ ンクス デバイスでのエンベデッ ド ビジ ョ ンの詳細は、 次のサイ ト を参照して ください。

https://japan.xilinx.com/products/design-tools/embedded-vision-zone.html

X-Ref Target - Figure 10

図 10: INT8 深層学習およびコンピューター ビジ ョ ンでの電力効率の比較: ザイリンクスと Intel 社

45

Arria 10 SoCSX220

Arria 10 SoCSX270

Arria 10 SoCSX480

XilinxZU3

XilinxZU7

XilinxZU9

150

500

400

300

GO

Ps/

Wat

t

200

100

0

165

340

441481

Page 15: ザイリンクス デバイスでの INT8 に最適化したエン … › support › documentation › white...Kristof Denolf、Kamran Khan、Vinod Kathail 概要 この資料では、ザイリンクスの

WP490 (v1.0) 2017 年 3 月 10 日 japan.xilinx.com 15

ザイリンクス デバイスでの INT8 に最適化した エンベデッ ド ビジ ョ ンの実装

参考資料注記: 日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. Dettmers、 『8-Bit Approximations for Parallelism in Deep Learning』、 ICLR 2016 https://arxiv.org/pdf/1511.04561.pdf

2. Gysel ほか、 『Hardware-oriented Approximation of Convolutional Neural Networks』、 ICLR 2016 https://arxiv.org/pdf/1604.03168v3.pdf

3. Han ほか、 『Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization And Huffman Coding』、ICLR 2016https://arxiv.org/pdf/1510.00149v5.pdf

4. Khronos Group、 https://www.khronos.org/openvx/

5. 『UltraScale アーキテクチャ DSP スライス ユーザー ガイ ド』 (UG579: 英語版、 日本語版)

6. F. Rosenblatt、『The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain』、Psychological Review 第 65 巻、 No. 6、 1958http://www.ling.upenn.edu/courses/cogs501/Rosenblatt1958.pdf

改訂履歴次の表に、 この文書の改訂履歴を示します。

免責事項本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示され

る情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適用される法律が許容す

る最大限の範囲で、 (1) 本情報は 「現状有姿」 、 およびすべて受領者の責任で (with all faults) とい う状態で提供され、 ザイ リ ンクスは、 本通知

をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれらに限られません)、 すべての保証および条

件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、本情報 (貴殿または貴社による本情報の使用を含む) に関係し、起因し、関

連する、 いかなる種類・性質の損失または損害についても、責任を負わない (契約上、不法行為上 (過失の場合を含む)、 その他のいかなる責任

の法理によるかを問わない) ものと し、 当該損失または損害には、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行

為の結果被った、 データ、 利益、 業務上の信用の損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ

当該損害や損失が合理的に予見可能であった り、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。

ザイ リ ンクスは、 本情報に含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせ

る義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生産、変更、頒布、 または公に展示してはなり ません。

一定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売

条件を参照して ください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件に従う こ とになり ま

す。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプリ ケーシ ョ ンに使用するために、 設計さ

れたり意図されたり していません。 そのよ うな重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を使用する場合のリ スク と責任は、 貴殿または

貴社が単独で負う ものです。 http://japan.xilinx.com/ legal.htm#tos で見られるザイ リ ンクスの販売条件を参照して ください。

自動車用のアプリ ケーショ ンの免責条項オート モーテ ィブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性の機能 (「セーフティ設計」 ) がない限り、エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セーフティ アプリ ケーシ ョ

ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用前または提供前に安全を目的と し

て十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品を使用する リ スクはすべて顧客が負い、製品

の責任の制限を規定する適用法令および規則にのみ従う ものと します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの右下にある

[フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 いただきましたご意見を参考に早急に対応させて

いただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。

日付 バージョ ン 内容

2017 年 3 月 10 日 1.0 初版