Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
インテル FPGA の Deep Learning
Acceleration Suite とマイクロソフトの
Brainwave を HW 視点から比較してみる
竹村 幸尚
インテル株式会社
プログラマブル・ソリューションズ事業本部
シニア・テクノロジー・スペシャリスト
DA22
FPGAとは
汎用アクセラレーターとしてのFPGA
• FPGAの性能向上
なぜFPGAアクセラレーションか
CPU 対 FPGA
FPGA: 空間計算
FPGA
データ
命令
命令
命令
データ
命令
命令
命令
CPU: 時間的計算
CPU
命令
FPGA アーキテクチャー: 基本エレメント
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 アーキテクチャー: カスタム回路
FPGA アーキテクチャー: メモリーブロック
メモリー
ブロック
20 Kb
addr
data_in
data_out
FPGA アーキテクチャー: メモリーブロック
メモリー
ブロック
20 Kb
addr
data_in
data_out
沢山の小型キャッシュ大型
キャッシュ
data_in data_out
FPGA アーキテクチャー: 浮動小数点演算器
FPGA アーキテクチャー: ルーティング
FPGA アーキテクチャー: 再構成可能なI/O
Project Brainwave
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
QPICPU
QSFP
40Gb/s ToR
FPGA
CPU
40Gb/s
QSFP QSFP
Hardware 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 GPUsASICsHard
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 & Ctrl
Neural FU
ネットワークスイッチ
FPGA
BrainWave 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マトリックス
Add500Add500
Sigmoid500 Sigmoid500
分割
Add500
500 500
concat
500 500
500x500マトリックス
ターゲット
コンパイラ
FPGA
ターゲット
コンパイラ
CPU-CNTK
フロント
ポータブル IR
ターゲット
コンパイラ
CPU-カフェ
トランスフォーム IRs
グラフスプリッタとオプティマイザ
展開パッケージ
Caffeモデル
FPGA ハードウェアマイクロサービス
CNTKモデル
Tensorflowモデル
一般的なシナリオ
=
O(N2) data
O(N2) compute
入力アクティベーション
出力前のアクティベーション
N ウェイトカーネル
O(N3) data
O(N4K2) compute
=
従来の高速化アプローチ:ローカルのオフロードとストリーミング
FPGA2xCPU
DRAM で初期化された
モデルパラメータ
従来の高速化アプローチ:ローカルのオフロードとストリーミング
FPGA2xCPU
DRAM で初期化された
モデルパラメータ
バッチ処理による HW 使用率の向上
バッチサイズ
ハードウェア
利用
(%)
FPGA
バッチ処理による HW 使用率の向上
バッチサイズ
99回目
待ち時
間
最大許可遅延
バッチサイズ
ハードウェア
利用
(%)
バッチ処理により HW の使用率が向上するが、待ち時間は増加
バッチ処理による HW 使用率の向上
バッチサイズ
99回目
の待ち
時間
最大許可遅延
バッチサイズ
ハードウェア
利用
(%)
バッチ処理により HW の使用率が向上するが、待ち時間が増加
代替: "永続的な" ニューラルネット
FPGA2xCPU
代替: "永続的な" ニューラルネット
2xCPU
観測
代替: "永続的な" ニューラルネット
2xCPU
代替: "永続的な" ニューラルネット
2xCPU
解決方法:データセンター規模での永続化
Inter-Layer パイプラインの並列処理
2CPU
2CPU
2CPU
2CPU
2CPU
2CPU
2CPU
2CPU
LSTM
LSTM
LSTM
LSTM
LSTM
LSTM
LSTM
LSTM
NPU
FPGA MVU カーネル
Matrix Vector Unit
+
+
×
×+
×
×+
+
×
×+
×
×+
インテル® OpenVINO™ツールキット
ディープラーニング・トポロジーの推論処理
“head”
1
“head”
2
“head”
10
ニューラルネット
「本体」
イメージ
…ほとんどの計算は、ここで実行される
画像認識: CNN (ResNet)
音声認識・言語翻訳
特徴
インデックスの特徴
ベクトル
タグ
物体検出
後処理
サイズの変更 /
クロップ
イメージ
前処理
OpenVINO™ ツールキット概要
OpenVINO™ Toolkit
OpenVXIntel OVX
Kernel
ExtensionsLibraries
Inference
Engine
Model
OptimizerTools
画像処理とディープ・ラーニングを使用した画像認識をサポート
インテル・アーキテクチャに最適化された、ヘテロジニアス対応ライブラリ
User program
Algorithms
OpenCVPre-trained
DL models
ディープラーニング
デプロイメント・
ツールキット
画像処理
• 全インテル® アーキテクチャーで訓練済のモデルをデプロイ可能
• CPU、GPU、FPGA、など
• 最良の実行となるよう最適化
• ユーザーによる検証と調整が可能
• 全デバイスで使いやすいランタイム API
Caffe*
TensorFlow*
MxNet* .bin
IR.xml
推論
エン
ジン
共通
AP
I (
C+
+)
ロード・推論
CPU プラグイン
GPUプラグイン
FPGAプラグイン
モデル・
オプティマ
イザー
所定のターゲットを変換・
最適化
ディープ・ラーニング・デプロイメント・ツールキット
ONNX* Myriadプラグイン
再掲:Brainwave コンパイラとランタイム
ターゲット
コンパイラ
FPGA
ターゲット
コンパイラ
CPU-CNTK
フロント
ポータブル IR
ターゲット
コンパイラ
CPU-カフェ
トランスフォーム IRs
グラフスプリッタとオプティマイザ
展開パッケージ
Caffeモデル
FPGA ハードウェアマイクロサービス
CNTKモデル
Tensorflowモデル
OpenVINO™におけるFPGA実装
インテル® FPGA DLAS の機能
• 一般的なトポロジーに向けたCNN アクセラ
レーション・エンジン
• グラフ・ループ・アーキテクチャー
• AlexNet、GoogleNet、LeNet、SqueezeNet、
VGG16、ResNet、Yolo、SSD、LSTM など
• ソフトウェア・デプロイメント
• FPGA のコンパイルは不要
• ランタイムでのリコンフィグレーションが可能
• カスタマイズされたハードウェア開発
• パラメーターを使用したカスタム・アーキテクチャーの
作成
• OpenCL™ フローを使用したカスタム・プリミティブ
畳み込み
PE アレイ
クロスバー
prim prim prim カスタム
DD
R
メモリー
読み取り/書き込み
特徴マップキャッシュ
DD
R
コンフィグレーション・エンジン
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 アレイ
クロスバー
ReLUMax
Pool
DDR
メモリー
読み取り/
書き込み
特徴マップキャッシュ
DDR
DDR
DDR
コンフィグレーショ
ン・エンジン
Norm
実行
ReLUConvolution /
Fully ConnectedNorm MaxPool
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・
バッファー
ReLUConvolution /
Fully ConnectedNorm MaxPool
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLUConvolution /
Fully ConnectedNorm MaxPool
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLUConvolution /
Fully Connected
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ストリーム・バッファー
出力
入力
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ReLUConvolution /
Fully Connected
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLUConvolution /
Fully Connected
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
MaxPool
ReLUConvolution /
Fully Connected
AlexNet Graph
Conv ReLu Norm MaxPool Fully Conn.
ブロックはランタイムでリコンフィグレーションおよびバイパスが可能
ストリーム・バッファー
出力
入力
ReLUConvolution /
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 BufferPE Feeder
Bias
Reader
DDR ring interconnect
…
余談:Systolic Array
Arria 10
1150 PELoad B
PE
drain
PE PE PE
PE PE PE PE
PE PE PE PE
PE PE PE PE
feeder
feeder
feeder
feeder
Load Afeeder feeder feeder feeder
Drain C
DDR4
drain draindrain
Convolution の効率的な並列処理
• 並列畳み込み• 同じConvolution層の異なるフィルター
が別のプロセッシング・エレメント (PE) で
並列的に処理されます
• ベクトル演算• 特徴マップの深度全体
• PE アレイ・ジオメトリーは、既定
のトポロジーのハイパーパラメーター
にカスタマイズ可能です
FPGA
ダブルバッファーOn-Chip RAM
フィルター(on-chip RAM)
フィ
ルタ
ー並
列処
理
(出力
深度
)
外部 DDR
56
Winograd 変換
• より少ない乗算で畳み込みを実行します
• FPGA 上でより多くの畳み込みを可能にします
• 6 つの入力特徴エレメントと 3 つのフィルター・エレメン
トを必要とします
• 標準的な畳み込みには、12 回の乗算が必要です
• 変換された畳み込みに必要な乗算は 6 回です
ReLU
Convolution /
Fully
Connected
NormMaxPool
Winograd 変換
ストリーム・バッファー
Winograd 変換
フィーチャ・キャッシュ
• 特徴データはオンチップにキャッシュ• 並列処理エレメントのデイジーチェーンにストリームされる
• ダブルバッファー
• 畳み込みとキャッシュの更新が同時進行
• 1つのサブグラフの出力が他のサブグラフの入力に
• 不必要な外部メモリーへのアクセスを解消
ダブルバッファーオンチップ RAM
ストリーム・
バッファー・サイズ
フィルター・キャッシュ
• フィルター・ウェイトは、各プロセッシング・エレメントにキャッシュ• プリフェッチをサポートするためにダブルバッファーを使用
• 1つのセットが出力特徴マップの計算に使用されている間、別のセットがプリフェッチされる
DDRConv Conv
DDR
DLA アーキテクチャーの選択
• 必要条件を満たす最適な FPGA イメージを選択
• 必要に応じてカスタムの FPGA イメージを作成
異なるトポロジーに対するサポート
• 機能とパフォーマンスはトレードオフ
畳み込み PE アレイ
クロスバー
ReLU Norm MaxPool
メモリー
読み取り/
書き込み
特徴マップキャッシュ
コンフィグレー
ション・
エンジン
畳み込み PE アレイ
クロスバー
ReLU Norm MaxPool
メモリー
読み取り/
書き込み
特徴マップキャッシュ
コンフィグレー
ション・
エンジン
LRN
Permute
Concat FlattenSoftMax
Reshape
vs
サポートされるプリミティブとトポロジー
トポロジー
✓ サポート有
✓ リクエストに応じてサポート有
✓ 将来的にサポートを予定
プリミティブ
✓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
✓ tanh ✓deconv
精度を下げてデザインを検討してみる
• パフォーマンスと精度はトレードオフ• 精度を下げることで、より多くの処理が並列的に実行可能
• より小さい浮動小数点形式を使用するための、ネットワークの再トレーニングは不要
• 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 BigDL
OpenVINO™
Toolkit
Intel® Nervana™ Cloud and Appliance
Intel 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. 無断での引用、転載を禁じます。