インテル fpga のdeep learning acceleration suite …...hardware microservices on fpgas...

Post on 30-May-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

インテル 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. 無断での引用、転載を禁じます。

top related