SlideShare a Scribd company logo
1 of 17
Download to read offline
Mobility Technologies Co., Ltd.
ncnn: A universal and efficient neural network
inference with vulkan

郭 卓然

Mobility Technologies Co., Ltd.
今日の内容

- ncnnの概要
- ncnnの行う最適化
- ベンチマーク
- 

Mobility Technologies Co., Ltd.
● Tencent社の高性能ニューラルネットワーク推論フレームワーク

● https://github.com/Tencent/ncnn


ncnnとは

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.
● 2017年からオープンソース化



● Vulkan APIを用いて高速化

(VulkanはGPU向けのグラフィックス・コンピュートAPI) 

● 主要なNNフレームワークをほぼサポート

○ PyTorch、TensorFlow、ONNX、など 



● 複数のエッジデバイス(CPUとGPU)に対応

○ NVIDIA、AMD、Intel、Qualcomm、Apple、など 



● Tencent社の幾つかのApplicationsに応用

○ Wechat、QQ、など 



ncnnの概要

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.
● Object detection

● Face parsing 

● Super resolution 

● Frame interpolation 





ncnn AI デモ 

refernce:https://github.com/Tencent/ncnn 

Mobility Technologies Co., Ltd.






プラットフォーム

reference:
https://github.com/Tencent/ncnn
Mobility Technologies Co., Ltd.
メモリプール再利用 

blob1
convolution
blob2
relu(inplace)
blob3
pooling
blob4
blob1 blob2
blob2/blob3
blob4 blob3
計算プロセ
スで2ブロッ
クのメモリの
みが使用さ
れる
メモリプールの使用
blob = Binary Large OBjectの略、バイナリデータを表すオブジェクト、格納するための型
Mobility Technologies Co., Ltd.
Operator fusion

blob1
x=min(x,10)
blob2
x=max(x,0)
blob3
min演算子とmax演
算子が1つの演算に
fuseされることによ
り推論が高速化
blob1
x=torch.clamp(x, min=0, max=10)
blob3
Mobility Technologies Co., Ltd.






Small bits representation (FP16/BF16)

FP32 Tensor
FP16
Tensor
BF16
Tensor
FP16演算子kernel、
A55、A75などのアー
キテクチャをサポート
BF16演算子kernel、
すべてのARMCPUを
サポート
● FP/BF16は16ビットを使用して浮動小数点数を表現
● FP32に比べ50%のメモリ節約
● 効率的な演算子kernelの実装が可能
● 推論速度が向上
Mobility Technologies Co., Ltd.






Quantization

convolution
relu
convolution
FP32blob
FP32blob
FP32blob
FP32blob
quantize
int8 convolution
dequantize
quantize
int8 convolution
dequantize
relu
FP32blob
FP32blob
FP32blob
FP32blob
int8 convolution
quantize
int8 convolution
requantize
requantize
FP32blob
INT8blob
INT8blob
Mobility Technologies Co., Ltd.
● 一部のレイヤーがGPUで動かない場合、自動的にCPUに切り替える必要がある


● CPUとGPUで最適なメモリレイアウトは異なる


● ncnnは、CPUとGPUの変換パイプラインを自動選択


● GPUでの転送にはfp16データ型を優先






CPU/GPU mixed inference

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.
複数のデバイスにタスクをディスパッチする

○ GPUの使用率向上

○ コンピューティング能力を活用



並列推論 

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.


● Qualcomm Adreno <= 540でVkImageを優先する

○ ハードウェア texture fetchで大幅に高速化

○ Adreno640 +を含むその他にはVkBufferを優先





● Blacklist / Whitelist for old-buggy driver

○ vendor id + driver version + vulkan api versionでフィルタリング

○ Androidシステムのアップグレード、特に8.1以降では、ドライバーの品質が向上





プラットフォーム固有のトリック 

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.
● Swiftshader as the vulkan driver on CPU

○ Make sure the vulkan code produces is expected







Vulkan continuous integration 

refernce
https://github.com/Tencent/ncnn
Mobility Technologies Co., Ltd.
● ncnn benchmark on Apple M1 Silicon(ms) (less is better)





ncnnベンチマーク

reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
Mobility Technologies Co., Ltd.
● ncnn benchmark compared with other inference engines





ncnnベンチマーク

Small model、Threads x 1 Large model、Threads x 1
reference: https://www.zhihu.com/question/400143354
Mobility Technologies Co., Ltd.
事業応用観点でみたncnn 

- Pros
- アプリ組み込みがしやすい(依存性がすくない、バイナリが軽い)
- 複数のプラットフォーム向けに 実行ファイルのサンプルが提供されている
- iOS, Androidにも対応し、プラットフォーム間で共用できる
- Cons
- GPUを使うためにはVulkan APIが必須

More Related Content

What's hot

backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門Takuji Tahara
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
Towards Performant Video Recognition
Towards Performant Video RecognitionTowards Performant Video Recognition
Towards Performant Video Recognitioncvpaper. challenge
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Yusuke Uchida
 
[DL輪読会]Objects as Points
[DL輪読会]Objects as Points[DL輪読会]Objects as Points
[DL輪読会]Objects as PointsDeep Learning JP
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送Google Cloud Platform - Japan
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れKazuki Motohashi
 
【チュートリアル】コンピュータビジョンによる動画認識 v2
【チュートリアル】コンピュータビジョンによる動画認識 v2【チュートリアル】コンピュータビジョンによる動画認識 v2
【チュートリアル】コンピュータビジョンによる動画認識 v2Hirokatsu Kataoka
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fieldscvpaper. challenge
 
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied ControlDeep Learning JP
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセットToru Tamaki
 
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...Deep Learning JP
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment AnythingDeep Learning JP
 
Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)Kazuki Maeno
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?Mr. Vengineer
 
最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925小川 雄太郎
 
【メタサーベイ】Video Transformer
 【メタサーベイ】Video Transformer 【メタサーベイ】Video Transformer
【メタサーベイ】Video Transformercvpaper. challenge
 

What's hot (20)

LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
Towards Performant Video Recognition
Towards Performant Video RecognitionTowards Performant Video Recognition
Towards Performant Video Recognition
 
MLOps入門
MLOps入門MLOps入門
MLOps入門
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
[DL輪読会]Objects as Points
[DL輪読会]Objects as Points[DL輪読会]Objects as Points
[DL輪読会]Objects as Points
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れ
 
【チュートリアル】コンピュータビジョンによる動画認識 v2
【チュートリアル】コンピュータビジョンによる動画認識 v2【チュートリアル】コンピュータビジョンによる動画認識 v2
【チュートリアル】コンピュータビジョンによる動画認識 v2
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields
 
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
 
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
 
Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 
最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925
 
【メタサーベイ】Video Transformer
 【メタサーベイ】Video Transformer 【メタサーベイ】Video Transformer
【メタサーベイ】Video Transformer
 

Similar to Ncnn a universal and efficient neural network inference with vulkan

モバイル向けニューラルネットワーク推論エンジンの紹介
モバイル向けニューラルネットワーク推論エンジンの紹介モバイル向けニューラルネットワーク推論エンジンの紹介
モバイル向けニューラルネットワーク推論エンジンの紹介卓然 郭
 
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介kcnguo
 
Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史Hirono Jumpei
 
Edge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよEdge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよVirtualTech Japan Inc.
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIANVIDIA Japan
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試みtomitomi3 tomitomi3
 
いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成Yoshi Sakai
 
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発slankdev
 
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティスGPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティスVirtualTech Japan Inc.
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性Hirofumi Ichihara
 
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方ITコンサルタントが語る!OpenStackを活用した課題解決のやり方
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方VirtualTech Japan Inc.
 
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向Hirofumi Ichihara
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築Hirokatsu Kataoka
 
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢シスコシステムズ合同会社
 
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイcloudconductor
 
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料VirtualTech Japan Inc.
 
20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献Keisuke Umezawa
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 

Similar to Ncnn a universal and efficient neural network inference with vulkan (20)

モバイル向けニューラルネットワーク推論エンジンの紹介
モバイル向けニューラルネットワーク推論エンジンの紹介モバイル向けニューラルネットワーク推論エンジンの紹介
モバイル向けニューラルネットワーク推論エンジンの紹介
 
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介
モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介
 
Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史
 
Edge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよEdge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよ
 
GPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIAGPU と PYTHON と、それから最近の NVIDIA
GPU と PYTHON と、それから最近の NVIDIA
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
 
いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成
 
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月
NFV/OPNFV概要 – OpenStack最新情報セミナー 2015年4月
 
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
 
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティスGPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス
GPU on OpenStack 〜GPUインターナルクラウドのベストプラクティス
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性
 
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方ITコンサルタントが語る!OpenStackを活用した課題解決のやり方
ITコンサルタントが語る!OpenStackを活用した課題解決のやり方
 
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
OpenStack Neutron プロジェクトから見たソフトウェアスイッチ動向
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築
 
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢
【Interop Tokyo 2016】 Seminar - EA-08 : シスコ データセンターSDN戦略、3本の矢
 
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
 
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
 
20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献20180727 Deep Learningの未来と
Chainerの貢献
20180727 Deep Learningの未来と
Chainerの貢献
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 

Ncnn a universal and efficient neural network inference with vulkan

  • 1. Mobility Technologies Co., Ltd. ncnn: A universal and efficient neural network inference with vulkan
 郭 卓然

  • 2. Mobility Technologies Co., Ltd. 今日の内容
 - ncnnの概要 - ncnnの行う最適化 - ベンチマーク - 

  • 3. Mobility Technologies Co., Ltd. ● Tencent社の高性能ニューラルネットワーク推論フレームワーク
 ● https://github.com/Tencent/ncnn 
 ncnnとは
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 4. Mobility Technologies Co., Ltd. ● 2017年からオープンソース化
 
 ● Vulkan APIを用いて高速化
 (VulkanはGPU向けのグラフィックス・コンピュートAPI) 
 ● 主要なNNフレームワークをほぼサポート
 ○ PyTorch、TensorFlow、ONNX、など 
 
 ● 複数のエッジデバイス(CPUとGPU)に対応
 ○ NVIDIA、AMD、Intel、Qualcomm、Apple、など 
 
 ● Tencent社の幾つかのApplicationsに応用
 ○ Wechat、QQ、など 
 
 ncnnの概要
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 5. Mobility Technologies Co., Ltd. ● Object detection
 ● Face parsing 
 ● Super resolution 
 ● Frame interpolation 
 
 
 ncnn AI デモ 
 refernce:https://github.com/Tencent/ncnn 

  • 6. Mobility Technologies Co., Ltd. 
 
 
 プラットフォーム
 reference: https://github.com/Tencent/ncnn
  • 7. Mobility Technologies Co., Ltd. メモリプール再利用 
 blob1 convolution blob2 relu(inplace) blob3 pooling blob4 blob1 blob2 blob2/blob3 blob4 blob3 計算プロセ スで2ブロッ クのメモリの みが使用さ れる メモリプールの使用 blob = Binary Large OBjectの略、バイナリデータを表すオブジェクト、格納するための型
  • 8. Mobility Technologies Co., Ltd. Operator fusion
 blob1 x=min(x,10) blob2 x=max(x,0) blob3 min演算子とmax演 算子が1つの演算に fuseされることによ り推論が高速化 blob1 x=torch.clamp(x, min=0, max=10) blob3
  • 9. Mobility Technologies Co., Ltd. 
 
 
 Small bits representation (FP16/BF16)
 FP32 Tensor FP16 Tensor BF16 Tensor FP16演算子kernel、 A55、A75などのアー キテクチャをサポート BF16演算子kernel、 すべてのARMCPUを サポート ● FP/BF16は16ビットを使用して浮動小数点数を表現 ● FP32に比べ50%のメモリ節約 ● 効率的な演算子kernelの実装が可能 ● 推論速度が向上
  • 10. Mobility Technologies Co., Ltd. 
 
 
 Quantization
 convolution relu convolution FP32blob FP32blob FP32blob FP32blob quantize int8 convolution dequantize quantize int8 convolution dequantize relu FP32blob FP32blob FP32blob FP32blob int8 convolution quantize int8 convolution requantize requantize FP32blob INT8blob INT8blob
  • 11. Mobility Technologies Co., Ltd. ● 一部のレイヤーがGPUで動かない場合、自動的にCPUに切り替える必要がある 
 ● CPUとGPUで最適なメモリレイアウトは異なる 
 ● ncnnは、CPUとGPUの変換パイプラインを自動選択 
 ● GPUでの転送にはfp16データ型を優先 
 
 
 CPU/GPU mixed inference
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 12. Mobility Technologies Co., Ltd. 複数のデバイスにタスクをディスパッチする
 ○ GPUの使用率向上
 ○ コンピューティング能力を活用
 
 並列推論 
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 13. Mobility Technologies Co., Ltd. 
 ● Qualcomm Adreno <= 540でVkImageを優先する
 ○ ハードウェア texture fetchで大幅に高速化
 ○ Adreno640 +を含むその他にはVkBufferを優先
 
 
 ● Blacklist / Whitelist for old-buggy driver
 ○ vendor id + driver version + vulkan api versionでフィルタリング
 ○ Androidシステムのアップグレード、特に8.1以降では、ドライバーの品質が向上
 
 
 プラットフォーム固有のトリック 
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 14. Mobility Technologies Co., Ltd. ● Swiftshader as the vulkan driver on CPU
 ○ Make sure the vulkan code produces is expected
 
 
 
 Vulkan continuous integration 
 refernce https://github.com/Tencent/ncnn
  • 15. Mobility Technologies Co., Ltd. ● ncnn benchmark on Apple M1 Silicon(ms) (less is better)
 
 
 ncnnベンチマーク
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 16. Mobility Technologies Co., Ltd. ● ncnn benchmark compared with other inference engines
 
 
 ncnnベンチマーク
 Small model、Threads x 1 Large model、Threads x 1 reference: https://www.zhihu.com/question/400143354
  • 17. Mobility Technologies Co., Ltd. 事業応用観点でみたncnn 
 - Pros - アプリ組み込みがしやすい(依存性がすくない、バイナリが軽い) - 複数のプラットフォーム向けに 実行ファイルのサンプルが提供されている - iOS, Androidにも対応し、プラットフォーム間で共用できる - Cons - GPUを使うためにはVulkan APIが必須