インテル® nGraph コンパイラー

nGraphさまざまなフレームワークやハードウェア上でモデルの柔軟な実行を可能にするオープンソースのコンパイラー
*

*

*

*

*

*

将来の
フレーム
ワーク

*

*

nGraph – ディープラーニング・コンパイラー

GPU

記載されているすべての製品、コンピューター・システム、日付、および数値は、現在の予想に基づくものであり、予告なく変更されることがあります。

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

将来の
ハード
ウェア

https://www.intel.ai/ngraph/ (英語)3インテル® パフォーマンス・
ライブラリー
ディープ・ニューラル・ネットワーク向けインテル® マス・カーネル・ライブラリー(インテル® MKL-DNN)
インテル® Machine Learning Scaling Library (インテル® MLSL)

ディープ・ニューラル・ネットワーク向け
インテル® マス・カーネル・ライブラリー(インテル® MKL-DNN)

インテル® MKL-DNN
インテルのオープンソースである
ディープ・ニューラル・ネットワーク向けマス・カーネル・ライブラリー
インテルのハードウェア上で最適化するディープラーニング・フレームワークの開発者用

ディストリビューションの詳細▪ オープンソース▪ Apache* 2.0 ライセンス▪ すべてのインテル® ハードウェアで共通の DNN API

github.com/01org/mkl-dnn (英語)

▪ 業界のフレーム統合を推進するために、ディープラーニングのコミュニティーで 迅速なリリースを繰り返す▪ インテル® MKL を基に高度なベクトル化とスレッド化によ
る最高性能

例:

Direct 2D
畳み込み

局所的応答正規化(LRN)

正規化線形ユニット・
ニューロン・アクティ
ベーション(ReLU)

プーリングを最大化

内積

記載されているすべての製品、コンピューター・システム、日付、および数値は、現在の予想に基づくものであり、予告なく変更されることがあります。

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

6

インテル® プロセッサー向け
ディープラーニング・ソフトウェア・スタック
ディープラーニングと AI エコシステム には端末とデータセンターのアプリケーションが含まれる• オープンソース・フレームワーク (TensorFlow*、MXNet*、CNTK、PaddlePaddle*)• インテルのディープラーニング製品 (neon™ フレームワーク、BigDL、OpenVINO™
ツールキット)• 内製のユーザー・アプリケーション
インテル® MKL とインテル® MKL-DNN はディープラーニング・アプリケーションを
インテル® プロセッサーに最適化• 仕様の変更にフレームワークの開発者と協同で対応 (TensorFlow*、MXNet*、
PaddlePaddle*、CNTK)• インテルに最適化されたライブラリーを使用 (Caffe、Torch*、Theano*)• 独自のソリューションを可能

インテル®
MKL

インテル® MKL-DNN

インテル® プロセッサー
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® MKL-DNN はディープラーニング用オープンソースの数値演算ライブラリー(https://github.com/intel/mkl-dnn (英語))• 広範囲の DNN 関数を実装した高速なオープンソース• いち早く新しく実験的な機能をテスト• オープンなコミュニティーへの貢献

インテル® MKL は数値演算アプリケーションに幅広く対応する独自の高性能ライブラリー
ディストリビューション: インテル® レジストレーション・センター、パッケージ・リポジト
リー (apt、yum、conda、pip)
7

インテル® MKL/MKL-DNN を使用した TensorFlow*
インテル® Distribution for Python* の使用▪ 例えば MKL_VERBOSE=1 をサポートする多くの NumPy* 計算用にインテル® MKL を使用▪ Conda （英語) や YUM（英語)、APT （英語) のパッケージ・マネージャーをサポート

事前にビルドされている TensorFlow* wheel (英語) を使用するか、`bazel build -config=mkl` オプションで TensorFlow* をビルド
▪ インテル® VTune™ Amplifier を使用する場合には、ソースプログラムのビルドが必要▪ アフィニティーと内部と外部実行スレッドの数の設定を含む CPU 最適化 (英語) のアドバイスに従う▪ インテル® MKL-DNN 関連のさらなる最適化が次のバージョンで予定: 可能であれば最新の TensorFlow* のマスターを使用最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

8

インテル® Distribution of Caffe (インテル® Caffe)
インテルが BVLC Caffe のフォーク (英語) をメンテナンス
CNN向けの最速の CPU フレームワーク

インテル® Xeon® スケーラブル・プロセッサー (開発コード名 Skylake) の数値精度の低い推論 (英語) をサポート

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

9

インテル® MKL-DNN 概要
機能:▪ 訓練 (float32) と 推論 (float32、int8)

プリミティブクラス▪ CNN (1D、2D と 3D)、RNN (plain、LSTM、GRU)• (逆)畳み込み• 内積• Vanilla RNN、LSTM、GRU

計算集約
的操作

• プーリング 平均/最大• バッチ 正規化
ポータビリティー:• 局所反応正規化▪ コンパイラー: インテル® C++ コンパイラー/Clang/GCC/MSVC• 活性化関数(ReLU、Tanh、Softmax、...)▪ OS: Linux*、Windows*、macOS*• 和▪ スレッド化: OpenMP*、インテル® TBB• リオーダー
• 連結

メモリー依
存演算

▪ インテル® プロセッサーに最適化

インテル® MKL-DNN を使用しているフレームワーク:

データ操
作

インテル® Caffe、TensorFlow*、MxNet*、PaddlePaddle*、CNTK、OpenVINO™、DeepBench*
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

10インテル® MKL-DNNライブラリーで最適化
レイヤー結合の例
入力

入力

畳み込み 1 x 1

畳み込み 1 x 1

畳み込み 3 x 3

畳み込み 3 x 3

畳み込み 1 x 1

結合したプリミティブ

メモリー書き込み

畳み込み 1 x 1

メモリー読み込み

メモリー操作の減少
和メモリー書き込み

和
ReLU

メモリー読み込み

ReLU
メモリー書き込み

メモリー書き込み

メモリー読み込み

メモリー読み込み

出力

出力最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

11

インテル® Machine Learning
Scaling Library(インテル® MLSL)

ディープラーニングの訓練• フォワード伝播: 入力バッチと現在の重みを基に損失関数を計算• バックワード伝播: (チェーンルールを使って) すべてのレイヤーの重みに関して誤差勾配を計算• 重みのアップデート: 重みのアップデートに勾配を使用。vanilla SGD、Momentum、Adamなどの異なるアルゴリズムが存在。

レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

SGD: 𝑊𝑛∗ = 𝑊𝑛 − 𝛼 ∗ 𝜕𝐸/𝜕𝑊𝑛 またはバリエーション
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

13

インテル® Machine Learning Scaling Library(インテル® MLSL)
Alltoall

ディープラーニングのスケールアウト: 必要条件
最適な計算分割の方法を選択
バッチサイズの大小に対してスケーラビリティーを有効
通信量の減少最適な通信アルゴリズムの選択
レイテンシー重視の通信を優先
CNN、RNN、LSTM などのワークロードをサポート
ディープラーニング・フレームワークとの統合

✓
✓
✓
✓
✓
✓
✓

重み
またはモデル

出力または
アクティ
ベーション

レ
イ
ヤ
Allreduceー1

2

フォワード伝播レイ
ヤ
Allreduceー

バックワード伝播

N

Alltoall
処理の分割方法によって異なる通信
データ並列 = Allreduce (または) Reduce_Scatter +Allgather
モデル並列 = AlltoAll
ハイブリッド並列ノード
モデル並列多くのディープ
重みのグループ
部分出力または
出力または
移動
ノード
1
アクティベーション
ラーニング
アクティベーション グループ 2
重み
フレームワークまたはモデル

データ並列
入力データ

レ
イ
ヤ
Allreduce
ー

入力データ

X

=
アクティベーションの移動最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

多様なネットワーク
ファブリックイーサネットOmni-Path

InfiniBand*14

インテル® MLSL 2018 Update 3
ハードウェア(https://github.com/intel/MLSL (英語))
ソフトウェアOS:- インテル® Core™ プロセッサー・ファミリー以降- インテル® Xeon® プロセッサー E5 v3 ファミリー(推奨)- インテル® Xeon® プロセッサー E7 v2 ファミリー(推奨)- 第2世代インテル® Xeon Phi™ プロセッサー(開発コード名 Knights Landing)- メモリー： コアあたり 1GB
コアあたり 2GB (推奨)- 必要な空きディスク容量： 1GB- Red Hat* Enterprise Linux* 6/7- SuSE* Linux* Enterprise Server 12- Ubuntu* 16

コンパイラー:- GNU*: C/C++ 4.4.0 以降- インテル® C++ コンパイラー for Linux* 16.0 以降

仮想化環境:-

Docker*
KVM

Python* インタープリター:
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

Python* 2.x
15

インテル® MLSL : 並列オプションM

𝑾 ∈ 𝑹𝑲𝒙𝑴
重みまたはモデル𝑶 ∈ 𝑹𝑵𝒙𝑴
出力またはアクティベーション

M=4

K=3

K=3

N=2

K

𝑰 ∈ 𝑹𝑵𝒙𝑲
入力

M=4

N=2

I W O

完全に接続されたレイヤー
いくつかの並列オプション

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

16

インテル® MLSL : 並列オプション
データ並列:••••

すべてのノードにモデルをコピー
各ノードに分割されたバッチの入力データを送る
すべてのノードで勾配の平均を得るために通信が必要
通信パターンはどちらも可能••

AllReduce パターン
入力データ
ReduceScatter + AllGather パターン最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

重み
またはモデル出力またはアクティベーション17インテル® MLSL : 並列オプション
レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

データ並列

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

18

インテル® MLSL : 並列オプション
I
入力データ

部分出力またはアクティベーションW
重みまたはモデル

X

=

O
出力または
アクティベーション

REDUCE_SCATTER

モデルの並列 (#1):• すべてのノードでモデルを分割• 入力データのスライスを各ノードに送る• 次のレイヤーの処理を続けるため部分的なアクティベーションの通信が必要
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

19

インテル® MLSL : 並列オプション
I
入力データ

部分出力またはアクティベーションW
重みまたはモデル

X

=

O
出力または
アクティベーション

ALLGATHER

モデルの並列 (#2):• すべてのノードでモデルを分割• 入力データの同じバッチを各ノードに送る• 結果を集めて、さらに処理を続けるために部分的なアクティベーションの通信が必要
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

20

インテル® MLSL : 並列オプション
ノード
グループ 2

ハイブリッド並列:• ノードをグループに分割

重みの
移動

ノード
グループ 1

アクティベーションの移動• グループ内でモデル並列化• グループ間はデータ並列化• 勾配とアクティベーションの両方を通信最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

21

インテル® MLSL : スケールの並列化
一般的な経験則▪ アクティベーション > 重み の場合にはデータ並列を使用▪ 重み > アクティベーション の場合にはモデル並列を使用

データ並列とモデル並列の注意点▪ スケール時のデータ配列では アクティベーション << 重み▪ スケール時のモデル並列では 重み << アクティベーション▪ 通信時間はスケールに影響

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

22

インテル® MLSL : メッセージの優先度
ノード 1：

レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

ノード k：

レイヤー
ｎ-1

レイヤー
ｎ

レイヤー
ｎ+1

直ちに結果が必要

結果は後でもよい最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

23

インテル® MLSL : 機能
現バージョンの機能:✓ 非ブロッキング・ディープラーニング・レイヤーと集団
インターフェイス
✓ Python*/C++/C 対応✓ 非同期通信数列✓ 最適化されたアルゴリズム

将来的な機能 (開発中または調査中):✓ 優先度を明確にする API✓ スパースデータの allreduce✓ 勾配の量子化と圧縮✓ クラウドネイティブ機能✓ データ並列、モデル並列、ハイブリッド並列をサポート✓ 量子化を最初にサポート– インテル® Caffe/インテル® MLSL に同梱✓ (環境変数を通して)逆優先順位付けをビルトイン –インテル® Caffe/インテル® MLSL に同梱

https://github.com/intel/MLSL (英語)
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

24

HPC 環境でのスケールアウト•

インテル® Caffe: インテル® MLSL
ベースのマルチノード・ソリューション
Horovod、nGraph: 開発中•

インテル® MLSL は Baidu* のDeepBench* に最適化•

SURFSara: ResNet50 time-totrain record (~40 分、768 SKX†) を達成するためにインテル® Caffe/インテル® MLSL を使用1•

IA での TensorFlow* のスケーリング

UC-Berkeley、TACC、UC-Davis:
ResNet50 をインテル® Caffe/インテル® MLSL (2048 KNL†) を使用して 14 分で達成2† 開発コード名
1 https://arxiv.org/pdf/1711.04291.pdf (英語)
2 https://arxiv.org/pdf/1709.05011.pdf (英語)

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® Caffe/インテル® MLSL
25

15 ペタフロップス・システム1におけるディープラーニング•

NERSC、スタンフォード大学、インテルの共同開発•

分散 SGD への新たなアプローチ : グループ内では同期、グループをまたがるときには非同期動作•

記録的なスケーリング : 同じモデルを協力して訓練するノード数 (9600 KNL†)•

ピーク性能 : ~15ペタフロップス•

通信手段 : ほかのグループとの通信にはインテル® MLSL、グループ内の通信には MPI を使用

計算グループ 1

計算グループ G• メカニズムはインテル® Caffe/インテル® MLSL
で採用
† 開発コード名
1 https://arxiv.org/abs/1708.05256 (英語)

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

26

分散 TensorFlow* の比較
パラメーター・サー
バーを使った分散
TensorFlow*

パラメーター・
サーバーの使用または分散訓練処理のパラメーター・サーバー・モデルはパラメーター・サーバーから、それぞれが異なるパフォーマンス・プロファイルを持つワーカーへ異なる重みを設定することが可能

パラメーター・
サーバーなしTensorFlow* 用分散訓練フレームワー
クに関する Uber* のオープンソース
リングの all-reduce アルゴリズムでは、勾配を平均化し、パラメーター・サーバーなしに勾配をすべてのノードに分散させることができる

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

出典: https://eng.uber.com/horovod/ (英語)28

分散訓練: Horovod MPI ライブラリーを使ったマルチ
ノード・マルチソケット
インターコネクト・ファブリック (インテル® OPA またはイーサネット)

10 Cores½-Skt-0

10 Cores½-Skt-1

10 Cores½-Skt-0

10 Cores½-Skt-1

10 Cores½-Skt-0

10 Cores½-Skt-1

10 Cores½-Skt-0

10 Cores½-Skt-1

マルチノード & マルチソケット上での分散訓練の実行• パラメーター・サーバーは必要なし• 各ワーカーノードの各ソケットは 2 つ以上のフレームワーク・
ストリームを実行• Horovod MPI ライブラリー経由でノード間通信最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

29

Horovod for multinode:
パラメーター・サーバーより (PS):
NP=4
PER_PROC=10
HOSTLIST=192.168.10.110
MODEL=inception3
BS=64
BATCHES=100
INTRA=10
INTER=2/usr/lib64/openmpi/bin/mpirun --allow-run-as-root -np $NP -cpus-per-proc $PER_PROC –map-by socket -H $HOSTLIST --report-bindings --oversubscribe -x LD_LIBRARY_PATH python./tf_cnn_benchmarks.py --model $MODEL --batch_size $BS --data_format NCHW –num_batches $BATCHES --distortions=True --mkl=True --local_parameter_device cpu –num_warmup_batches 10 --optimizer rmsprop --display_every 10 --kmp_blocktime 1 –variable_update horovod --horovod_device cpu --num_intra_threads $INTRA –num_inter_threads $INTER --data_dir /home/tf_imagenet --data_name imagenet
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

30

OpenVINO™ ツールキット(Open Visual Inference & Neural Network Optimization)

OpenVINO™ ツールキットの構成
インテル® ディープラーニング・
デプロイメント・ツールキット
モデル・オプティマイザー
変換、最適化
20+ 事前訓練
済みモデル

IR

推論エンジン
最適化された推論

コンピューター・ビジョン・アルゴリズムIR = 中間表現フォーマット

従来のコンピューター・ビジョン・ツールとライブラリー
最適化されたライブラリー
Photography
OpenCVOpenVX*
Visionコードサンプル

サンプル

インテル® CPU & インテル® グラフィックス向け

メディア / ビデオ / グラフィックスの性能向上

インテル® メディア SDK
オープンソース版

OpenCL*ドライバー & ランタイム

インテル® グラフィックス搭載 CPU 向け

インテル® FPGA に最適化
FPGA ランタイム環境
Bitstreams(インテル® FPGA SDK for OpenCL*)FPGA – Linux* のみ
サポート OS: (64ビット) CentOS* 7.4、Ubuntu* 16.04.3 LTS、Microsoft* Windows® 10、Yocto Project* バージョン Poky Jethro v2.0.3

インテル® アーキテクチャー・ベースのプラットフォームをサポート
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

OpenVX および OpenVX ロゴは Khronos の商標です。
OpenCL および OpenCL ロゴは、Apple Inc. の商標であり、Khronos の使用許諾を受けて使用しています。
Microsoft、Windows、Windows ロゴは、アメリカ合衆国および / またはその他の国における Microsoft Corporation の商標または登録商標です。

32

インテル® ディープラーニング・デプロイメント・ツールキット
インテル® アーキテクチャーの性能を有効活用
モデル・オプティマイザー

推論エンジン▪ What it is: 準備段階 -> トレーニングされたモデルをインポート▪ What it is: 高レベルの推論 API▪ Why important: 従来のトポロジー変換で性能/スペースを最適化。ハードウェアがサポートするデータ型への変換では最大の性能向上が見込まれる▪ Why important: インターフェイスは各ハードウェア・タイプ
ごとに直接ロードされるプラグインとして実装。プログラマー
が複数のコード経路を実装、維持することなく最高の性能を提供することが可能

訓練済み
モデル
Caffe
TensorFlow*

MxNet*ONNX*

拡張性 C++

すべてのターゲットに合うように変換 & 最適化

モデル・オプティマイザー変換 & 最適化

Kaldi*

IR

IR .data

ロード、推論IR =中間表現フォーマット

GPU = インテグレーテッド・グラフィックス・プロセシング・ユニット/インテル® プロセッサー・グラフィックスを搭載したインテル® CPU

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

CPU プラグイン

推論エンジン異なるプラット
フォーム上で最適化された推論を行う共通 API(C++、Python*)GPU プラグイン

拡張性
OpenCL*

拡張性
OpenCL*/TBD

FPGA プラグイン

拡張性 TBD

Myriad™ プラグイン
拡張性 TBDGNA プラグイン

OpenCL および OpenCL ロゴは、Apple Inc. の商標であり、Khronos の使用許諾を受けて使用しています。

33

モデル・オプティマイザーによる性能向上
モデル・オプティマイザー
解析
訓練済み
モデル

数値化

中間表現フォーマット(IR)トポロジーの最適化
変換▪ 使い勝手の良いPython* ベースのワークフローはフレームワークの再構築を要求しない▪ サポートされているさまざまなフレームワークからモデルを読み込む - Caffe、TensorFlow*、MXNet*、ONNX*、Kaldi*▪ Caffe、MXNet*、TensorFlow* の 100 以上のモデルを検証済み、ONNX* model zoo のすべてのモデルをサポート▪ Kaldi* のサポートにより、モデル・オプティマイザーは画像認識以外のネットワークでの推論を拡張▪ 中間表現フォーマット (IR) は標準レイヤーを使用しており、ユーザーが提供するカスタムレイヤーは Caffe 不要▪ サポートされていないレイヤーの場合には、元のフレームワークにフォールバックが可能だが、オリジナルのフレームワークが必要最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

34

推論エンジンで最適なモデル性能を実現▪ 幅広いインテル® アーキテク
チャー (CPU/GEN/FPGA) をサポートする最適化された推論▪ ヘテロジニアスなハードウェア・
タイプにまたがったレイヤーの実行をサポート▪ 非同期実行により性能を向上▪ 次世代のインテル® アーキテクチャー・ベースのプロセッサー
向けの大規模開発
GPU = インテグレーテッド・グラフィックス・プロセシング・ユニット/
インテル® プロセッサー・グラフィックスを搭載したインテル® CPU
GNA = ガウス混合モデルおよびニューラル・ネットワーク・アクセラレーター

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

アプリケーション/サービス

推論
エンジン
ランタイム

プラグイン・アーキテクチャー▪ すべてのインテル® アーキテク
チャーをサポートする簡単で統一された API

推論エンジン共通 API

１つのAPI
☺
clDNN

FPGA
プラグイン

インテル® MKL
(MKL-DNN)
プラグイン

プラグイン

Movidius™
プラグイン

プラグイン

DLA

組込み関数

OpenCL*

Movidius™ API

GNA APIインテル®
Arria® 10
FPGA

インテル® Xeon® プロセッサー
インテル® Core™ プロセッサー
Intel Atom® プロセッサー

インテル®
グラフィックス
(GPU)

インテル®
Movidius™
Myriad™ 2

インテル®
GNA

GNA

モデルの変換 & 結果を左右するデータ& インテリジェンス
OpenCL および OpenCL ロゴは、Apple Inc. の商標であり、Khronos の使用許諾を受けて使用しています。

35

各モデルにおける OpenVINO™ ツールキットとインテル® アーキテク
チャーによるディープラーニング・ワークロードの性能向上
7.73x

性能向上比

フレームレート (FPS) による比較

標準 Caffe
ベースラインモデル (バッチサイズ)
標準 Caffe

OpenCVOpenVINO™ on CPU

OpenVINO™ on CPU + インテル® グラフィックス (GPU)/(FP16)

インテルのハードウェアではアクセラレーターなしでも高速
1ワークロードに応じて、FP16 の質/解像度は多少影響を受けます。FP32 から FP16 へのパフォーマンス/質の変更が精度に影響することがあります。異なる設定を試し、状況に最も適した設定を選択してください。上記のベンチマーク結果は、追加のテストによって変更が必要になる可能性があります。異なる設定を試し、状況に最も適した設定を選択してください。上記のベンチマーク結果は、追加のテストによって変更が必要になる可能性があります。パフォーマンス結果は 2018 年 4 月 10 日時点のテスト結果に基づいたものであり、公開されている利用可能なすべてのセキュリティー・アップデートが適用されていない可能性があります。詳細については、構成の開示を参照してください。絶対的なセキュリティーを提供できる製品はありません。性能やベンチマーク結果について、さらに詳しい情報をお知りになりたい場合は、www.intel.com/benchmarks (英語) を参照してください。 システム構成: 2018 年 4 月 10 日時点のインテルによるテスト。インテル® Core™ i7-6700K プロセッサー @2.90GHz 固定、GPU GT2 @ 1.00GHz 固定。社内テスト v312.30 – Ubuntu* 16.04、OpenVINO™ ツールキット 2018 RC4。テストは、使用モデル (公開されているもの)、バッチサイズ、その他の要因などのさまざまなパラメーターに基づきます。異なるモデルを異なるインテル® ハードウェア・ソリューションで高速化できますが、同じインテル® ソフトウェア・ツールが使用されます。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル®
ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提として© 2019 Intel Corporation. 無断での引用、転載を禁じます。
います。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。 該当する製品のユーザー・リファレンス・ガイドを参照してください。注意事項の改訂 #20110804

36

各モデルにおける OpenVINO™ ツールキットとインテル® アーキテク
チャーによるディープラーニング・ワークロードの性能向上
19.9x1

フレームレート (FPS) による比較

20
18

性能向上比

16
14
12
10
8
6
4

標準 Caffe
ベースライン

20
GoogLeNet v1

Vgg16*

Squeezenet* 1.1

モデル (バッチサイズ)
Std. Caffe
Caffeon
onCPU
CPU
標準

OpenCV on CPU

GoogLeNet v1(32)

OpenVINOon
onCPU
CPU
OpenVINO™

Vgg16* (32)

OpenVINO™ on CPU +インテル®
グラフィックス
OpenVINO
on GPU(GPU)/(FP16)Squeezenet* 1.1(32)
OpenVINO™
OpenVINO on CPU
FPGA+ インテル® FPGA

インテル® FPGA でさらに大きな性能向上
1ワークロードに応じて、FP16 の質/解像度は多少影響を受けます。FP32 から FP16 へのパフォーマンス/質の変更が精度に影響することがあります。異なる設定を試し、状況に最も適した設定を選択してください。パフォーマンス結果は 2018 年 6 月

13 日時点のテスト結果に基づいたものであり、公開されている利用可能なすべてのセキュリティー・アップデートが適用されていない可能性があります。詳細については、構成の開示を参照してください。絶対的なセキュリティーを提供できる製品はありません。性能やベンチマーク結果について、さらに詳しい情報をお知りになりたい場合は、www.intel.com/benchmarks (英語) を参照してください。システム構成: 2018 年 6 月 13 日時点のインテルによるテスト。インテル® Core™ i7-6700K プロセッ
サー @ 2.90GHz 固定、GPU GT2 @ 1.00GHz 固定。社内テスト v3.15.21 – Ubuntu* 16.04、OpenVINO™ ツールキット 2018 RC4、インテル® Arria® 10 FPGA 1150GX。テストは、使用モデル (公開されているもの)、バッチサイズ、その他の要因などのさまざまなパラメーターに基づきます。異なるモデルを異なるインテル® ハードウェア・ソリューションで高速化できますが、同じインテル® ソフトウェア・ツールが使用されます。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル®
ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提として© 2019 Intel Corporation. 無断での引用、転載を禁じます。
います。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。 該当する製品のユーザー・リファレンス・ガイドを参照してください。注意事項の改訂 #20110804

37最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

38

さあ、始めよう
最適化に役立つ情報

iSUS (IA Software User Society)▪

インテル® ソフトウェア開発製品の日本語版や日本語ヘルプの提供▪

インテル コーポレーションのインテル® ソフトウェア・
ネットワークの記事の日本語化

インテル® Parallel Studio XE▪

概要、機能、サポート、コードサンプル (英語)▪

トレーニング資料、Tech.Decoded ウェビナー (英語)、HOW TO ビデオと記事 (英語)▪

お客様の声 (英語) & ケーススタディー▪

その他のインテル® ソフトウェア開発製品

40

インテル® Code Modernization Program▪

概要 (英語)▪

ライブ・トレーニング (英語)

最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

TECH ウェビナーの視聴

https://intel.ly/2PdkNhN (英語)40

法務上の注意書きと最適化に関する注意事項
パフォーマンス結果は 2018 年 9 月時点のテスト結果に基づいたものであり、公開されている利用可能なすべてのセキュリティー・アップデートが適用されていない可能性があります。詳細については、構成の開示を参照してください。絶対的なセキュリティーを提供できる製品はありません。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や
MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。詳細については、www.intel.com/benchmarks (英語) を参照してください。

本資料の情報は、現状のまま提供され、本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスも許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、
またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的財産権の侵害への保証を含む) をするものではありません。
© 2019 Intel Corporation. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴ、Arria、Intel Atom、Intel Core、Iris、Stratix、
Xeon、Movidius、Myriad、Intel Nervana、OpenVINO は、アメリカ合衆国および/ またはその他の国における Intel Corporation またはその子会社の商標です。
最適化に関する注意事項
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッ
サー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル®
マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。
注意事項の改訂 #20110804
最適化に関する注意事項© 2019 Intel Corporation. 無断での引用、転載を禁じます。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

41