インテル FPGA の Deep Learning
Acceleration Suite とマイクロソフトの
Brainwave を HW 視点から比較してみる
竹村 幸尚
インテル株式会社
プログラマブル・ソリューションズ事業本部
シニア・テクノロジー・スペシャリスト
DA22
•
FPGAの性能向上
CPU 対 FPGA
FPGA: 空間計算FPGA
データ 命令 命令 命令 データ 命令 命令 命令 CPU: 時間的計算CPU
命令FPGA アーキテクチャー: 基本エレメント
FPGA アーキテクチャー: 基本エレメント
1-bit configurable
operation
Configured to perform any
1-bit operation:
AND, OR, INV, XOR, etc.
基本エレメント
1-bit register
(store result)
FPGA アーキテクチャー: インターコネクト
基本エレメントは
フレキシブルなインターコネクト
(配線)に囲まれている
FPGA アーキテクチャー: インターコネクト
カスタム回路は基本エレメントを
接続することで実現できる
…
…
32-bit sqrt
Your custom 64-bit
bit-shuffle and encode
16-bit add
FPGA アーキテクチャー: メモリーブロック
メモリー
ブロック
20 Kb
addr
data_in
data_out
FPGA アーキテクチャー: メモリーブロック
メモリー
ブロック
20 Kb
addr
data_in
data_out
沢山の小型キャッシュ
キャッシュ
大型
data_in
data_out
FPGAの取り組み
Catapult v0
Catapult v1
スケール v1
Catapult v2
2011
2012
2013
2014
2015
2016
...
Ignite
本番展開
Hardware Microservices on FPGAs [MICRO’16]
Web search ranking
Traditional software (CPU) server plane
QPI CPU QSFP 40Gb/s
ToR
FPGA CPU 40Gb/s QSFP QSFPHardware acceleration plane Web search ranking Deep neural networks SDN offload SQL CPUs FPGAs Routers
DNN のための シリコンレベル の選択肢
DNN Processing Units効率性
柔軟性
Soft DPU (FPGA) Contr ol Unit (CU) Register s Arithmet ic Logic Unit (ALU) CPUs GPUs ASICs Hard DPU Cerebras Google TPU Graphcore Groq Intel Nervana Movidius Wave Computing Etc. BrainWave Baidu SDA Deephi Tech ESE Teradeep Etc.Project BrainWave
f
f
f
l0
l1
f
f
f
l0
Pretrained DNN モデル
CNTK などで
ハードウェア マイクロサービス
スケーラブルな DNN
BrainWave
Soft DPU
Instruction Decoder & CtrlNeural FU
ネットワークスイッチ FPGABrainWave Stack
Pretrained DNN モデル を ソフト DPU にコンパイルするための
フレームワーク中立の連合コンパイラとランタイム
狭精度 DNN 推論のための適応型 ISA
変化目まぐるしいAI アルゴリズムをサポートする柔軟性と拡張性
BrainWave Soft DPU マイクロアーキテクチャ
高精度、低遅延バッチに最適
Intel の FPGA を スケールする HW マイクロサービスに展開
[マイクロ ' 16]
FPGA 上でモデルパラメータを完全に永続化するオンチップメモリは、
多数の FPGA にまたがってスケーリングすることにより、
大規模なモデルをサポート
Brainwave コンパイラとランタイム
FPGA0
FPGA1
Add500 1000-dim ベクトル 1000-dim ベクトル 分割 500x500 マトリックス MatMul500 500x500 マトリックスMatMul500 MatMul500 MatMul500 500x500 マトリックス Add500 Add500 Sigmoid500 Sigmoid500 分割 Add500 500 500 concat 500 500 500x500 マトリックス ターゲット コンパイラ FPGA ターゲット コンパイラ CPU-CNTK フロント ポータブル IR ターゲット コンパイラ CPU-カフェ トランスフォーム IRs グラフスプリッタ と オプティマイザ 展開パッケージ Caffe モデル FPGA ハードウェア マイクロサービス CNTK モデル Tensorflowモデル
一般的なシナリオ
=O(N
2) data
O(N
2) compute
入力アクティベーション 出力前のアクティベーション N ウェイトカーネルO(N
3) data
O(N
4K
2) compute
=従来の高速化アプローチ:
ローカルのオフロードとストリーミング
FPGA
2xCPUDRAM で初期化された
モデルパラメータ
従来の高速化アプローチ:
ローカルのオフロードとストリーミング
FPGA
2xCPUDRAM で初期化された
モデルパラメータ
バッチ処理による HW 使用率の向上
バッチサイズ
ハードウェア
利用
(%)
FPGA
バッチ処理による HW 使用率の向上
バッチサイズ
99回目
待ち時
間
最大
許可
遅延
バッチサイズ
ハードウェア
利用
(%)
バッチ処理により HW の使用率が向上するが、待ち時間は増加
バッチ処理による HW 使用率の向上
バッチサイズ
99回目
の待ち
時間
最大
許可
遅延
バッチサイズ
ハードウェア
利用
(%)
バッチ処理により HW の使用率が向上するが、待ち時間が増加
代替: "永続的な" ニューラルネット
FPGA
2xCPU代替: "永続的な" ニューラルネット
2xCPU
代替: "永続的な" ニューラルネット
代替: "永続的な" ニューラルネット
Inter-Layer パイプラインの並列処理
2
CPU CPU2 CPU2 CPU2 CPU2 CPU2 CPU2 CPU2
LST M LST M LST M LST M LST M LST M LST M LST M
FPGA
MVU カーネルMatrix Vector Unit
+ + × × + × × + + × × + × × +
インテル® OpenVINO™
ツールキット
ディープラーニング・トポロジーの推論処理
“head”
1
“head”
2
“head”
10
ニューラルネット
「本体」
イメージ
…
ほとんどの計算は、ここで実行される
画像認識: CNN (ResNet)
音声認識・言語翻訳
特徴
インデックスの特徴
ベクトル
タグ
物体検出
後処理
サイズの変更 /
クロップ
イメージ
前処理
OpenVINO™ ツールキット概要
OpenVINO™ Toolkit
OpenVX
Intel OVX
Kernel
Extensions
Libraries
Inference
Engine
Model
Optimizer
Tools
画像処理とディープ・ラーニングを使用した画像認識をサポート
インテル・アーキテクチャに最適化された、ヘテロジニアス対応ライブラリ
User program
Algorithms
OpenCV
Pre-trained
DL models
ディープラーニング
デプロイメント・
ツールキット
画像処理
•
全インテル® アーキテクチャーで訓練済のモデルをデプロイ可能
•
CPU、GPU、FPGA、など
•
最良の実行となるよう最適化
•
ユーザーによる検証と調整が可能
•
全デバイスで使いやすいランタイム API
Caffe*
TensorFlow*
MxNet*
IR
.bin .xml推論エンジ
ン
共通
AP
I (C
++)
ロード・推論
CPU プラグイン
GPUプラグイン
FPGAプラグイン
モデル・
オプティマ
イザー
所定のターゲットを変換・
最適化
ディープ・ラーニング・デプロイメント・ツールキット
ONNX*
Myriadプラグイン
再掲:Brainwave コンパイラとランタイム
ターゲット コンパイラ FPGA ターゲット コンパイラ CPU-CNTK フロント ポータブル IR ターゲット コンパイラ CPU-カフェ トランスフォーム IRs グラフスプリッタ と オプティマイザ 展開パッケージ Caffe モデル FPGA ハードウェア マイクロサービス CNTK モデル Tensorflowモデルインテル® FPGA DLAS の機能
•
一般的なトポロジーに向けたCNN アクセラ
レーション・エンジン
•
グラフ・ループ・アーキテクチャー
•
AlexNet、GoogleNet、LeNet、SqueezeNet、
VGG16、ResNet、Yolo、SSD、LSTM など
•
ソフトウェア・デプロイメント
•
FPGA のコンパイルは不要
•
ランタイムでのリコンフィグレーションが可能
•
カスタマイズされたハードウェア開発
•
パラメーターを使用したカスタム・アーキテクチャーの
作成
•
OpenCL™ フローを使用したカスタム・プリミティブ
畳み込み
PE アレイ
クロスバー
prim prim prim カスタム
DDR
メモリー 読み取り/書き込み特徴マップキャッシュ
DDR
コンフィグレーション・エンジンDLA アーキテクチャー: 高パフォーマンス設計
•
FPGA 上で最大限の並列化を実現
•
Filter Parallelism (プロセッシング・エレメント)
•
Input-Depth Parallelism
•
Winograd Transformation
•
Batching
•
Feature Stream Buffer
•
Filter Cache
•
FPGA ビットストリームを選択
•
Data Type / Design Exploration
•
Primitive Support
ReLU
Convolution /
Fully
Connected
Norm
MaxPool
ストリーム・
バッファー
畳み込み PE アレイ
クロスバー
ReLU PoolMax
DDR メモリー 読み取り/ 書き込み 特徴マップキャッシュ DDR DDR DDR コンフィグレーショ ン・エンジン Norm
実行
ReLU
Convolution /
Fully Connected
Norm
MaxPool
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・
ReLU
Convolution /
Fully Connected
Norm
MaxPool
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
Norm
MaxPool
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLU
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
Convolution /
Fully Connected
AlexNet Graph
Conv
ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
アーキテクチャー詳細
ReLU
Output
Writer 1
Filter
Reader
PE 1
Norm
PE 2
MaxPool
PE 3
PE 23
Input
Reader
DDR
PE
Sequencer
Output
Writer 2
Convolution/全結合 (1D systolic array of 24 PEs)
PE 24
…
Stream Buffer
PE FeederBias
Reader
DDR ring interconnect…
余談:Systolic Array
Arria 10
1150
Load B
PE
PE
drainPE
PE
PE
PE
PE
PE
PE
PE
PE
PE
PE
PE
PE
PE
PE
feeder
feeder
feeder
feeder
Load A
feeder feeder feeder feederDrain C
DDR4
drain drain
Convolution の効率的な並列処理
•
並列畳み込み
•
同じConvolution層の異なるフィルター
が別のプロセッシング・エレメント (PE) で
並列的に処理されます
•
ベクトル演算
•
特徴マップの深度全体
•
PE アレイ・ジオメトリーは、既定
のトポロジーのハイパーパラメーター
にカスタマイズ可能です
FPGA
ダブルバッファー
On-Chip RAM
フィルター (on-chip RAM)フィル
ター並列処理
(出力深度
)
外部 DDR
56
Winograd 変換
•
より少ない乗算で畳み込みを実行します
•
FPGA 上でより多くの畳み込みを可能にします
•
6 つの入力特徴エレメントと 3 つのフィルター・エレメン
トを必要とします
•
標準的な畳み込みには、12 回の乗算が必要です
•
変換された畳み込みに必要な乗算は 6 回です
ReLU
Convolution /
Fully
Connected
Norm
MaxPool
Winograd 変換
ストリーム・バッファーWinograd 変換
フィーチャ・キャッシュ
•
特徴データはオンチップにキャッシュ
•
並列処理エレメントのデイジーチェーンにストリームされる
•
ダブルバッファー
•
畳み込みとキャッシュの更新が同時進行
•
1つのサブグラフの出力が他のサブグラフの入力に
•
不必要な外部メモリーへのアクセスを解消
ダブルバッファー
オンチップ RAM
ストリーム・
バッファー・サイズ
フィルター・キャッシュ
•
フィルター・ウェイトは、各プロセッシング・エレメントにキャッシュ
•
プリフェッチをサポートするためにダブルバッファーを使用
•
1つのセットが出力特徴マップの計算に使用されている間、別のセットがプリフェッチされる
DLA アーキテクチャーの選択
•
必要条件を満たす最適な FPGA イメージを選択
異なるトポロジーに対するサポート
•
機能とパフォーマンスはトレードオフ
畳み込み PE アレイ
クロスバー
ReLU
Norm
MaxPool
メモリー
読み取り/
書き込み
特徴マップキャッシュ
コンフィグレー ション・ エンジン畳み込み PE アレイ
クロスバー
ReLU Norm MaxPool
メモリー
読み取り/
書き込み
特徴マップキャッシュ
コンフィグレー ション・ エンジン LRN Permute Concat Flatten SoftMax Reshapevs
サポートされるプリミティブとトポロジー
トポロジー
✓ サポート有 ✓ リクエストに応じてサポート有 ✓ 将来的にサポートを予定プリミティブ
✓AlexNet ✓GoogleNet v1 ✓SSD ✓ResNet18 ✓SSD ✓ResNet50 ✓ResNet101 ✓SqueezeNet ✓SSD ✓VGG16 ✓Tiny Yolo ✓LeNet ✓batch norm ✓concat ✓flatten✓max pool ✓relu, leaky relu ✓ lrn normalization
✓average pool ✓scale ✓ softmax
✓inner product ✓permute ✓ prelu
✓reshape ✓detection output ✓conv
✓prIOrbox ✓fully connected ✓eltwise
✓bias ✓group conv ✓depthwise conv
✓local conv ✓sigmoid ✓elu
✓power ✓crop ✓proporal
✓slice ✓depthwise conv ✓roi pooling
✓dilated conv
精度を下げてデザインを検討してみる
•
パフォーマンスと精度はトレードオフ
•
精度を下げることで、より多くの処理が並列的に実行可能
•
より小さい浮動小数点形式を使用するための、ネットワークの再トレーニングは不要
•
FP11 は INT8/9 よりもメリットがある
•
再トレーニング不要、より良いパフォーマンス、精度の損失が少ない
FP11
FP10
FP9
FP8
Sign、指数5ビット、仮数10ビット
FP16
Sign、指数5ビット、仮数5ビット
Sign、指数5ビット、仮数4ビット
Sign、指数5ビット、仮数3ビット
Sign、指数5ビット、仮数2ビット
経験
ツール
フレームワーク
ライブラリ
ハードウエア
Intel® Distribution for Python* Mlib BigDLOpenVINO™
Toolkit
Intel® Nervana™ Cloud and ApplianceIntel Nervana Deep Learning Studio
Intel® Data Analytics
Acceleration Library (DAAL) Intel® Math Kernel Library (Intel® MKL, MKL-DNN)
Intel Nervana Graph¥
Memory and Storage Networking
¥Future
*Other names and brands may be claimed as the property of others.
Compute – CPU, iGPU, VPU, FPGA,
…
法的注意事項および免責条項
本資料に記載されている情報は、開発中の製品、サービス、プロセスに関するものです。 ここに記載されているすべての情報は、予告 なく変更されることがあります。 インテルの最新の予測、スケジュール、仕様、およびロードマップをご希望の方は、インテルの担当者までお問い合わせください。 インテル® テクノロジーの機能と利点はシステム構成によって異なり、対応するハードウェアやソフトウェア、またはサービスの有効化 が必要となる場合があります。詳細については、intel.com を参照するか、OEM や販売店にお問い合わせください。絶対的なセキュリ ティーを提供できるコンピューター・システムはありません。 テストでは、特定のシステムでの個々のテストにおけるコンポーネントの性能を文書化しています。ハードウェア、ソフトウェア、シス テム構成などの違いにより、実際の性能は掲載された性能テストや評価とは異なる場合があります。購入を検討される場合は、ほかの情 報も参考にして、パフォーマンスを総合的に評価することをお勧めします。性能やベンチマーク結果について、さらに詳しい情報をお知 りになりたい場合は、http://www.intel.com/performance (英語) を参照してください。 インテル® テクノロジーの機能と利点はシステム構成によって異なり、対応するハードウェアやソフトウェア、またはサービスの有効化 が必要となる場合があります。実際の性能はシステム構成によって異なります。絶対的なセキュリティーを提供できるコンピューター・ システムはありません。詳細については、各システムメーカーまたは販売店にお問い合わせいただくか、http://www.intel.co.jp/ を参照 してください。 本資料は、(明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず) いかなる知的財産権のライセンスも許諾する ものではありません。OpenCL および OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用しています。
Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴ、Arria、Avalon、Cyclone、Nios、 Stratix は、アメリカ合衆国および/また はその他の国における Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各所有者の表示、商標または登録商標です。 © 2018 Intel Corporation. 無断での引用、転載を禁じます。