b4-deeplearning-embedded-c-mw

Similar documents
ディープラーニングの組み込み機器実装ソリューション ~GPC/CPU編~

Presentation Title

PowerPoint Presentation

SimulinkによるReal-Time Test環境の構築

f2-system-requirement-system-composer-mw

MATLAB®製品紹介セミナー

Presentation Title

MATLAB EXPO 2019 Japan プレゼン資料の検討

Presentation Title

PowerPoint Presentation

Presentation Title

SimscapeプラントモデルのFPGAアクセラレーション

AGENDA ディープラーニングとは Qwiklab/Jupyter notebook/digits の使い方 DIGITS による物体検出入門ハンズオン

いまからはじめる組み込みGPU実装

MATLAB ではじめる画像処理とロボットビジョン ~ 機械学習による物体認識と SLAM~ MathWorks Japan アプリケーションエンジニアリング部信号処理 通信 木川田亘 2015 The MathWorks, 1Inc.

ディープラーニングとは AGENDA Qwiklabs/DIGITS の使い方 DIGITS による物体検出入門ハンズオン

いまからはじめる、MATLABによる 画像処理・コンピュータビジョン

医用画像を題材とした3次元画像解析とディープラーニング

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

はじめに AI は 感染症の早期発見と治療法の探索 交通事故死の削減 事故発生前の重大なインフラ欠陥の発見など 人類が直面する複雑な > 問題を解決するのに役立てられています AI とディープラーニング利用における 2 つの大きな課題は パフォーマンスの最大化と 絶え間なく変化する基盤技術の管理です

画像分野におけるディープラーニングの新展開

Slide 1

Slide 1

VOLTA TENSOR コアで 高速かつ高精度に DL モデルをトレーニングする方法 成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12

untitled

Presentation Title

Images per Second Images per Second VOLTA: ディープラーニングにおける大きな飛躍 ResNet-50 トレーニング 2.4x faster ResNet-50 推論 TensorRT - 7ms レイテンシ 3.7x faster P100 V100 P10

MATLABアルゴリズムからCコード生成のワークフローと最適化

GPGPU

ムーアの法則後の世界 年間のマイクロプロセッサのトレンド トランジスタ数 ( 千単位 ) 年率 1.1 倍 シングルスレッド性能 年率 1.5 倍 Original data up t

2017 (413812)

本ラボの目的 ディープラーニングのイントロダクション ネットワークのトレーニング トレーニングの結果を理解する コンピュータビジョン 画像分類に関するハンズオン Caffe と DIGITS を使用する 1/17/217 6

Presentation Title

タイトル

Managing and Sharing MATLAB Code

Presentation Title

07-二村幸孝・出口大輔.indd

it-ken_open.key

Slide 1

Presentation Title

人工知能(AI)時代、企業は、何をすべきか?

d4-automated-driving-mw

untitled

untitled

Presentation Title

Presentation Title

Slide 1

Expo 2014

スライド 1

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

『オープンサイエンス』とAI~オープン化は人工知能研究をどう変えるか?~

PowerPoint プレゼンテーション

制御のためのSimulink入門

SUALAB INTRODUCTION SUALAB Solution SUALAB は 人工知能 ( ディープラーニング ) による画像解析技術を通して 迅速 正確 そして使いやすいマシンビジョン用のディープラーニングソフトウェアライブラリーである SuaKIT を提供します これは 従来のマシン

ディープラーニングによって加速する AI 競争 100% 90% 80% 従来 CV 手法 IMAGENET 正答率 ディープラーニング 70% 60% IBM Watson が自然言語処理のブレークスルーを実現 Facebook が Big Sur を発表 Baidu の Deep Speech

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

田向研究室PPTテンプレート

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

WHITE PAPER RNN

GPU Computing on Business

HULFT の通信をよりセキュアに HULFT と SSH Tectia を組み合わせたセキュアで強力なファイル転送 Compatibility Note 2008 年 9 月 株式会社セゾン情報システムズの企業内 企業間通信ミドルウェアである HULFT は ファイル転送のアプリケーションとして

GPU n Graphics Processing Unit CG CAD

Presentation Title

Coding theorems for correlated sources with cooperative information

Deep Learning によるビッグデータ解析 ~ 手法や CUDA による高速化 2014 年 9 月 5 日 G-DEP ソリューションパートナー株式会社システム計画研究所奥村義和

Jetson and Azure ハンズオン

インテル FPGA の Deep Learning Acceleration Suite とマイクロソフトの Brainwave を HW 視点から比較してみる

Presentation Title

PowerPoint Presentation

PowerPoint プレゼンテーション

main.dvi

PNopenseminar_2011_開発stack

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

! 行行 CPUDSP PPESPECell/B.E. CPUGPU 行行 SIMD [SSE, AltiVec] 用 HPC CPUDSP PPESPE (Cell/B.E.) SPE CPUGPU GPU CPU DSP DSP PPE SPE SPE CPU DSP SPE 2

Microsoft PowerPoint - GPU_computing_2013_01.pptx

ディープラーニングの現在 AGENDA ディープラーニング SDK NVIDIA DIGITS ディープラーニング フレームワーク / ディープラーニングの基礎

システムソリューションのご紹介

アプライドの学校 法人様向け PC IT機器 事務家電情報カタログ 研究室のお役立ち アット ラボ L BO 2019 年 8 月 Vol.1 新 製 品 NEW! 機械学習 深層学習フレームワーク A I 開 発プラットフォーム ReNomプラットフォームは Deep Learningに留まらず

b2-reinforcement-learning-mw

MATLAB®によるビッグデータ解析

f3-power-train-simulation-mw

Presentation Title

ULTIMATE PREMIUM

Microsoft Word - HowToSetupVault_mod.doc

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

gworksctl コマンドマニュアル 2019/6/17 株式会社 GDEP アドバンス 本書は GDEP Advance gworksctl コマンドマニュアルです G-Works G-Works Deep Learning Distribution for Linux( 以下 G-Works)

Microsoft Word - HOKUSAI_system_overview_ja.docx

TOOLS for UR44 Release Notes for Windows

<4D F736F F F696E74202D B B836A F82C982E682E CC835E E93E089E6919C94468EAF82C98AD682B782E98CA48B F18F6F94C5816A2E >

PowerPoint Presentation

名称未設定

Microsoft PowerPoint - Session4古賀様.ppt

PowerPoint Presentation

Introduction Purpose The course describes library configuration and usage in the High Performance Embedded Workshop (HEW), which speeds development of

背景 1 / Reprinted with permission from paper c 2013 SAE International.

CPU Levels in the memory hierarchy Level 1 Level 2... Increasing distance from the CPU in access time Level n Size of the memory at each level 1: 2.2

ArcGIS for Server 機能比較表

スライド 1

Jetson and Azure ハンズオン

Transcription:

ディープラーニングアプリケーション の組み込み GPU/CPU 実装 アプリケーションエンジニアリング部町田和也 2015 The MathWorks, Inc. 1

アジェンダ MATLAB Coder/GPU Coder の概要 ディープニューラルネットワークの組み込み実装ワークフロー パフォーマンスに関して まとめ 2

ディープラーニングワークフローのおさらい Application logic Trained DNN ネットワークの構築と学習 アプリケーション化 組み込み GPU/CPU 実装 3

ディープラーニングワークフローのおさらいネットワークの構築と学習 Keras ONNX Caffe モデルインポート MATLAB による構築 多量のデータの取り扱い ラベリングの自動化 様々なモデルへのアクセス 事前学習済みモデル MATLAB で学習 転移学習 学習済みモデル MATLAB による学習 GPU による学習の高速化 クラスターによる分散処理 4

ディープラーニングワークフローのおさらいアプリケーション化 画像のリサイズ 切り取り グレースケール化モデル インポート 分類結果 検出結果の可視化注釈の追加 前処理 後処理 Reference model MATLAB で学習 転移学習 学習済みモデル複数ネットワークの組み合わせ 5

ディープラーニングワークフローのおさらいマルチプラットフォーム環境への実装 Application logic C コード化 NVIDIA C++/CUDA + TensorRT NVIDIA C++/CUDA + cudnn Intel MKL-DNN ARM ARM- Compute 6

C コード化のハードル Vectorized MATLAB C コード化 CUDA C コード 手書きによるバグ混入等価性の維持が困難 GPU は非常に強力なハードウェアですが プログラミングは専門の知識が必要となります 7

C コード化のハードル 推論以外の処理もコード化する必要があります Pre-processing Classification Post-processing セグメンテーション 切り取りリサイズ Class Activation Map で可視化 8

組み込み実装の課題 Desktop GPU Desktop GPU Embedded GPU C++ C++ 1 機能確認 2 単体検証 3 統合検証 4 リアルタイム検証 高級言語深層学習フレームワーク大規模で複雑なソフトウェアスタック C/C++ 低水準 API 特定用途のライブラリ C/C++ ターゲットの最適化ライブラリメモリと処理速度の最適化 課題 複数のライブラリとパッケージの統合 複数の実装の検証と維持 アルゴリズムとベンダーロックインの検討 9

MATLAB Coder & GPU Coder による実装ソリューション 前処理 後処理を含めたコードの自動生成 生成されるコードの最適化 複数のターゲットへの実装 Application logic GPU Coder MATLAB Coder NVIDIA Intel ARM NVIDIA TensorRT & cudnn Libraries Intel MKL-DNN Library ARM Compute Library 10

MATLAB Coder & GPU Coder による実装ソリューションマルチプラットフォーム環境への実装 Desktop GPU Application logic GPU Coder Desktop Data Center MATLAB Coder NVIDIA Jetson Raspberry pi Mobile Beaglebone Embedded 11

MATLAB Coder & GPU Coder による組み込み実装 複数の実装形式に対応 MATLAB アルゴリズム (functional reference) Build type Desktop GPU Desktop GPU 手書きした main 関数 (CC++) から生成した CUDA コードを Call MATLAB 上で 手書きしたmain 関数 生成したCUDA (CC++) から生成した コードを直接 Call CUDAコードをCall.mex.lib Cross-compiled.lib Embedded GPU C++ C++ 1 機能確認 2 単体検証 3 統合検証 4 リアルタイム検証 12

アジェンダ MATLAB Coder/GPU Coder の概要 ディープニューラルネットワークの組み込み実装ワークフロー パフォーマンスに関して まとめ 13

Demo 顔検出と表情分類アプリケーションの Jetson 実装 MATLAB Happy 前処理 顔の検出 中間処理 表情の分類 後処理 実装ワークフロー 1MATLAB で検証 2 コード生成 ホスト環境での検証 3 コード生成 組み込み環境での検証 14

1MATLAB で検証 MATLAB 前処理 顔の検出 中間処理 表情の分類 後処理 機能検証 アルゴリズムの動作検証 カスタム YOLO v2 MATLAB で学習させた YOLOv2 モデル 他フレームワークからのモデルのインポート 15

1MATLAB で検証 顔の検出 表情の分類 YOLO v2 による物体検出 YOLO(You Only Look Once) とは? リアルタイム向けの物体検出モデル (Faster R-CNN の 100 倍程度高速 ) 学習から CUDA コード生成まで対応 自身のデータセットに合わせたカスタム YOLOv2 モデルの学習から実装までサポート 他フレームワークとの連携 Keras, Caffe モデルの取り込み ONNX フォーマットを介したモデルのやり取り Keras Caffe detector = trainyolov2objectdetector(trainingdata,lgraph,options) net = importkerasnetwork(modelfile) net = importcaffenetwork(protofile,datafile) net = importonnxnetwork(modelfile, 'OutputLayerType',outputtype) 16

2 コード生成 ホスト環境での検証 MATLAB CUDA に最適されたコード 前処理 顔の検出 中間処理 表情の分類 後処理 単体検証 コード生成可能か確認 生成不可の場合は生成可能な形に修正 cudnn/tensorrt に最適化されたコード 17

2 コード生成 ホスト環境での検証コード修正が必要な例 グループ化畳み込み層を通常の畳み込み層に変換 groupedconvolution2dlayer convolution2dlayer コード生成対応 R2019a ではコード生成未対応 Weight size 3x3x1x1x4 3x3x4 3x3x4 3x3x4 3x3x4 Weight size 3x3x4x4 各々 0 埋めして拡張 例 : 4 チャネルの入力を 1 チャネル毎にグループ化した場合 4 計算結果が等価になるように通常の畳み込み層に重みとバイアスを移植 18

3 コード生成 組み込み環境での検証 MATLAB CUDA に最適されたコード Happy 前処理 顔の検出 中間処理 表情の分類 後処理 cudnn/tensorrt に最適化されたコード リアルタイム検証 ターゲット環境でパフォーマンス確認 19

NVIDIA GPU での実装例 Target Libraries Application logic GPU Coder NVIDIA NVIDIA TensorRT & cudnn Libraries Semantic Segmentation MATLAB Coder Intel Intel MKL-DNN Library ARM ARM Compute Library 20

Intel CPU での実装例 Application logic Blood Smear Segmentation GPU Coder NVIDIA Target Libraries NVIDIA TensorRT & cudnn Libraries MATLAB Coder Intel ARM Intel MKL-DNN Library ARM Compute Library 21

ARM プロセッサでの実装例 Application logic Pedestrian Detection GPU Coder NVIDIA Target Libraries NVIDIA TensorRT & cudnn Libraries MATLAB Coder Intel ARM Intel MKL-DNN Library ARM Compute Library 22

ハードウェアへのアクセス MATLAB から 周辺機器にアクセス スタンドアローンアプリケーションとして実装 Processor-in-Loop 検証 23

ターゲットへの実装方法専用アプリによるコード生成と実装 コマンドによるコード生成と実装 24

アジェンダ MATLAB Coder/GPU Coder の概要 ディープニューラルネットワークの組み込み実装ワークフロー パフォーマンスに関して まとめ 25

画像一枚に対する推論速度の比較 TensorFlow (1.13.0) MXNet (1.4.0) GPU Coder (R2019a) PyTorch (1.0.0) Intel Xeon CPU 3.6 GHz - NVIDIA libraries: CUDA10 - cudnn 7 - Frameworks: TensorFlow 1.13.0, MXNet 1.4.0 PyTorch 1.0.0 26

TensorRT による高速化 Single Image Inference with ResNet-50(Titan V) TensorFlow (1.13.0) GPU Coder (R2019a) Intel Xeon CPU 3.6 GHz - NVIDIA libraries: CUDA10 - cudnn 7 Tensor RT 5.0.2.6. Frameworks: TensorFlow 1.13.0 27

CPU での推論速度の比較 CPU, Single Image Inference (Linux) MATLAB TensorFlow MXNet MATLAB Coder PyTorch Intel Xeon CPU 3.6 GHz - Frameworks: TensorFlow 1.6.0, MXNet 1.2.1, PyTorch 0.3.1 28

GPU Coder による様々な最適化 MATLAB Library function mapping Scalarization.. Traditional compiler optimizations Loop perfectization Loop interchange Loop fusion Scalar replacement Loop optimizations Parallel loop creation CUDA kernel creation cudamemcpy minimization CUDA kernel lowering Shared memory mapping CUDA code emission NVIDIA CUDA C/C++ 29

GPU Coder による様々な最適化 MATLAB.. Traditional compiler optimizations ネットワークの最適化 最適化ライブラリの使用 Library function mapping Scalarization Loop perfectization Loop interchange Loop fusion Scalar replacement Parallel loop creation CUDA kernel creation cudamemcpy minimization Loop optimizations コーディングパターン CUDA kernel lowering Shared memory mapping CUDA code emission 30

最適化ライブラリを用いたコード生成 cufft, cublas, cusolver, Thrust Libraries Performance 1. 最適化ライブラリの使用 2. ネットワークの最適化 3. コーディングパターン Preprocessing Postprocessing Intel NVIDIA ARM Intel MKL-DNN Library NVIDIA TensorRT & cudnn Libraries ARM Compute Library 31

ディープニューラルネットワークの最適化 Performance 1. 最適化ライブラリの使用 2. ネットワークの最適化 3. コーディングパターン Max Pool Max Pool Max Pool buffer a buffer b conv conv Batch Norm ReLu ReLu FusedConv FusedConv BatchNormAdd FusedConv FusedConv BatchNormAdd X buffer c Reuse buffer a Add buffer d Max Pool Max Pool Max Pool X buffer e Reuse buffer b Network レイヤーフュージョン バッファの最小化 32

cols kh コーディングパターン : ステンシルカーネル Performance 1. 最適化ライブラリの使用 2. ネットワークの最適化 3. コーディングパターン 画像処理系関数には GPU によるステンシル演算が自動適用 関数例 : imfilter, imerode, imdilate, conv2, マニュアルでの指定には gpucoder.stencilkernel() Input image Conv. kernel Output image kw rows Dotprod 33

コード生成でサポートされるレイヤはリリースごとに増加中 GPU Coder MATLAB Coder Layer Name cudnn TensorRT Intel MKL-DNN ARM Compute AdditionLayer AveragePooling2DLayer BatchNormalizationLayer ClassificationOutputLayer ClippedReLULayer (R2019a) Convolution2DLayer Crop2DLayer (R2019a) (R2019a) (R2019a) CrossChannelNormalizationLayer DepthConcatenationLayer (R2019a) DropoutLayer FullyConnectedLayer ImageInputLayer LeakyReLULayer (R2019a) MaxPooling2DLayer MaxUnpooling2DLayer (R2019a) PixelClassificationLayer ReLULayer RegressionOutputLayer SoftmaxLayer TransposedConvolution2DLayer YOLOv2OutputLayer (R2019a) (R2019a) (R2019a) (R2019a) YOLOv2ReorgLayer (R2019a) (R2019a) YOLOv2TransformLayer (R2019a) (R2019a) (Keras Layer)FlattenCStyleLayer (Keras Layer)GlobalAveragePooling2dLayer (Keras Layer)SigmoidLayer (Keras Layer)TanhLayer (Keras Layer)ZeroPadding2dLayer : R2019a からコード生成可能なレイヤー 34

サポートされるネットワーク (GPU 編 ) CuDNN TensorRT Image Classification VGG, ResNet, SqueezeNet, GoogLeNet VGG, ResNet SqueezeNet, GoogLeNet (R2019a) Encoder/Decoder Semantic Segmentation DenoiseNet, SegNet DenoiseNet, SegNet FCN (R2019a) FCN (R2019a) Object detection ONNX/Keras imported networks YOLOv2 (R2019a) Keras (R2019a) YOLOv2 (R2019a) Keras (R2019a) 35

サポートされるネットワーク (CPU 編 ) Image Classification Intel MKLDNN VGG, ResNet, SqueezeNet, GoogLeNet ARM CPUs VGG, ResNet SqueezeNet, GoogLeNet Encoder/Decoder Semantic Segmentation DenoiseNet Unet, SegNet (R2019a) DenoiseNet 36

アジェンダ MATLAB Coder/GPU Coder の概要 ディープニューラルネットワークの組み込み実装ワークフロー パフォーマンスに関して まとめ 37

まとめ Keras ONNX Caffe ネットワークの構築と学習 Trained DNN モデルインポート MATLAB で学習 Deep Neural Network 事前学習済みモデル Design + Training 転移学習 Application logic Application logic 学習済みモデル Application Design アプリケーション化 組み込み GPU/CPU 実装 Coders NVIDIA TensorRT and cudnn Libraries Intel MKL-DNN Library Standalone Deployment ARM ARM Compute Library 38

2019 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders. 39