SlideShare a Scribd company logo
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

コンピュータビジョンの観点から見たAIの公平性
コンピュータビジョンの観点から見たAIの公平性コンピュータビジョンの観点から見たAIの公平性
コンピュータビジョンの観点から見たAIの公平性
cvpaper. challenge
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
Deep Learning JP
 
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
Koichiro Mori
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 
LakeTahoe
LakeTahoeLakeTahoe
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
Yusuke Uchida
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
Hideki Tsunashima
 
MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介
emakryo
 
深層学習向け計算機クラスター MN-3
深層学習向け計算機クラスター MN-3深層学習向け計算機クラスター MN-3
深層学習向け計算機クラスター MN-3
Preferred Networks
 
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
Deep Learning JP
 
LiDAR点群と画像とのマッピング
LiDAR点群と画像とのマッピングLiDAR点群と画像とのマッピング
LiDAR点群と画像とのマッピング
Takuya Minagawa
 
Teslaにおけるコンピュータビジョン技術の調査 (2)
Teslaにおけるコンピュータビジョン技術の調査 (2)Teslaにおけるコンピュータビジョン技術の調査 (2)
Teslaにおけるコンピュータビジョン技術の調査 (2)
Kazuyuki Miyazawa
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
Preferred Networks
 
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査
Kazuyuki Miyazawa
 
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
Deep Learning JP
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
 

What's hot (20)

コンピュータビジョンの観点から見たAIの公平性
コンピュータビジョンの観点から見たAIの公平性コンピュータビジョンの観点から見たAIの公平性
コンピュータビジョンの観点から見たAIの公平性
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
 
マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
MediaPipeの紹介
MediaPipeの紹介MediaPipeの紹介
MediaPipeの紹介
 
深層学習向け計算機クラスター MN-3
深層学習向け計算機クラスター MN-3深層学習向け計算機クラスター MN-3
深層学習向け計算機クラスター MN-3
 
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
【DL輪読会】LAR-SR: A Local Autoregressive Model for Image Super-Resolution
 
LiDAR点群と画像とのマッピング
LiDAR点群と画像とのマッピングLiDAR点群と画像とのマッピング
LiDAR点群と画像とのマッピング
 
Teslaにおけるコンピュータビジョン技術の調査 (2)
Teslaにおけるコンピュータビジョン技術の調査 (2)Teslaにおけるコンピュータビジョン技術の調査 (2)
Teslaにおけるコンピュータビジョン技術の調査 (2)
 
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
 
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査
 
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 

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 と、それから最近の NVIDIA
NVIDIA 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 source
Yoshiyuki 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が必須