Mobility Technologies Co., Ltd.
モバイル(エッジ)向け

ニューラルネットワーク推論エンジンの紹介

郭 卓然

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

- 推論エンジンの紹介
- 最適化方法の紹介
- よく用いられる最適化方法の紹介
- ベンチマーク結果の紹介
- 

Mobility Technologies Co., Ltd.


Why we need Neural Networks(NN) inference engine

ニューラルネットワーク( NN)推論をエッジ端末にデプロイする場合の課題
- NN推論のパフォーマンスはエッジ端末の スペックに依存
- NN推論は多くのリソースを消費
- NN推論をエッジ端末にデプロイの 最適化が必要
- 

Mobility Technologies Co., Ltd.


What is NN inference framework

- 

- NN推論フレームワーク : Edge側でNNモデルをロードして推論、予測を行うエンジン
- NN推論エンジンのメリット:
- 最適化による推論速度向上
- モデルサイズ減少、メモリ節約
- モバイル(エッジ)デバイスへのデプロイが容易 

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


Popular NN inference engine for edge 

その他(ベンチマーク*を元に調査対象から除外)
- TensorRT(nvida)
- Tensorflow lite (Google)
- Paddle lite(Baidu)
- MACE(xiaomi)
- TVM

Developed by Pros Cons
MNN Alibaba Supports direct model
conversion and the most
operator types
Performance is slightly
worse than TNN
ncnn Tencent Little memory footprint during
the model inference process
GPU inference requires
Vulkan API
TNN Tencent Strong performance Model conversion needs to
be based on ONNX
*: https://blog.titanwolf.in/a?ID=2db37403-84e8-47a2-8c90-3e3174e1a51b
Mobility Technologies Co., Ltd.


Introduction of MNN 

- 効率的で軽量なNN推論エンジン
- 特徴:
- 高性能:
- third-party computing librariesを依存せず、多数の 独自実装でcore Opを実現し、ARMのCPUのコンピューティングパワー
を最大限に活用
- Androidは、OpenCL、Vulkan、OpenGLのbackendをサポートして、主流な GPU(AdrenoとMali)向けに最適化
- ARM v8.2の新しいアーキテクチャに最適化した、 FP16半精度を使用して 2倍の推論速度を実現
- 軽量性:
- Android:soサイズは約400KB、OpenCLライブラリは約400KB、Vulkanライブラリは約400KB
- 汎用性:
- Tensorflow、Caffe、ONNXなどのモデルファイルと、 CNN、RNN、GANなどのネットワークをサポート
- 使いやすさ:
- MNNの画像処理モジュールがあり、 OpenCVなどが不要
- ネットワークの一部のみの実行をサポートして、 CPUとGPU間の並列操作を指定可能
- Python APIもあり、C++を書かなくても利用できる
- 
 Github: https://github.com/alibaba/MNN/blob/master/README.md
Document: https://www.yuque.com/mnn/en
Mobility Technologies Co., Ltd.
1. Frontends:

さまざまなトレーニングフレームワークをサ
ポート。

2. Graph Optimize:

演算子のfusion、およびメモリ調整によってグ
ラフを最適化

3. Engine:

モデルのロードとグラフのスケジューリングの
計算を担当

4. Backends:

各コンピューティングデバイスでのメモリ割り
当てとOperatorの実装

Introduction of MNN 

https://github.com/alibaba/MNN
Mobility Technologies Co., Ltd.


Introduction of ncnn 

- ncnnは、モバイルプラットフォーム用に最適化された高性能ニューラルネットワーク推論エンジン
- 特徴:
- オープンソース(2017~、https://github.com/Tencent/ncnn)
- 主要なNNフレームワークをほぼサポート
- PyTorch、TensorFlow、ONNX、など
- 複数のエッジデバイス (CPUとGPU)に対応
- NVIDIA、AMD、Intel、Qualcomm、Apple、など
- third-party computing librariesに非依存
- 100% C++実装、AndroidとiOSをサポート
- 優秀なメモリ管理とデータ構造設計によって省メモリ
- Vulkan APIに基づくGPUアクセラレーションをサポート
- ライブラリ全体のボリュームは 700K(場合によっては300K)未満
- 

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

ncnn AI デモ:



● Object detection

● Face parsing 

● Super resolution 

● Frame interpolation 






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

Mobility Technologies Co., Ltd.


Introduction of TNN 

- クロスプラットフォーム、高性能、モデル圧縮を備えた軽量の NN推論エンジン
- 特徴:
- オープンソース( https://github.com/Tencent/TNN/blob/master/README.md)
- ncnnがベース
- ncnnに比べ、モバイルデバイスのサポートとパフォーマンスの最適化がさらに強化
- 計算の最適化:
- さまざまなアーキテクチャのハードウェア特性に応じて、 TNNはOpを大幅に最適化し、ハードウェアの計
算能力を最大限に活用
- 主流のハードウェアプラットフォーム( CPU:ARMv7、ARMv8、X86 GPU:Mali、Adreno、Apple、NV
GPU)ディープチューニング
- 効率的なConvolution (Winograd、Tile-GEMM、Direct Conv、など)
- 低精度の最適化:
- INT8、FP16の低精度計算をサポート
- モデルサイズとメモリ消費の削減と計算速度の向上を実現
- INT8 Winogradアルゴリズム(入力 6ビット)をサポート
- 精度を満たしている場合、モデル計算の複雑さをさらに軽減
- 複数精度の混合計算をサポートし
- モデルの精度を確保しながら計算を高速化 

Mobility Technologies Co., Ltd.




TNN Architecture

https://github.com/Tencent/TNN/blob/master/README.md
Mobility Technologies Co., Ltd.
NN frameworks common optimization method

❏ Operator fusion
❏ FP16/BF16 precision
❏ Quantization
Mobility Technologies Co., Ltd.
Operator fusion

blob1
x=min(x,10)
blob2
x=max(x,0)
blob3
min演算子とmax演
算子を1つの演算に
融合することで演算
子の推論速度を高
速化
blob1
x=max(min(x,10),0)
blob3
blob = Binary Large OBject、バイナリデータを表すオブジェクト、格納するための型
Mobility Technologies Co., Ltd.






FP16/BF16 precision

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.






NN benchmark performance 

https://www.zhihu.com/question/400143354
Snapdragon845 Performance Snapdragon835 Performance
ms
ms
Mobility Technologies Co., Ltd.
Merit and Demerit of the NN inference engines 

- 長所
- アプリケーションへの組み込みがしやすい(依存がすくない、バイナリが軽い)
- モデルの推論速度向上
- モデルサイズ減少、メモリ節約
- 短所
- 推論結果に誤差がある場合がある

モバイル(エッジ)向け ニューラルネットワーク推論エンジンの紹介

  • 1.
    Mobility Technologies Co.,Ltd. モバイル(エッジ)向け
 ニューラルネットワーク推論エンジンの紹介
 郭 卓然

  • 2.
    Mobility Technologies Co.,Ltd. 今日の内容
 - 推論エンジンの紹介 - 最適化方法の紹介 - よく用いられる最適化方法の紹介 - ベンチマーク結果の紹介 - 

  • 3.
    Mobility Technologies Co.,Ltd. 
 Why we need Neural Networks(NN) inference engine
 ニューラルネットワーク( NN)推論をエッジ端末にデプロイする場合の課題 - NN推論のパフォーマンスはエッジ端末の スペックに依存 - NN推論は多くのリソースを消費 - NN推論をエッジ端末にデプロイの 最適化が必要 - 

  • 4.
    Mobility Technologies Co.,Ltd. 
 What is NN inference framework
 - 
 - NN推論フレームワーク : Edge側でNNモデルをロードして推論、予測を行うエンジン - NN推論エンジンのメリット: - 最適化による推論速度向上 - モデルサイズ減少、メモリ節約 - モバイル(エッジ)デバイスへのデプロイが容易 
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 5.
    Mobility Technologies Co.,Ltd. 
 Popular NN inference engine for edge 
 その他(ベンチマーク*を元に調査対象から除外) - TensorRT(nvida) - Tensorflow lite (Google) - Paddle lite(Baidu) - MACE(xiaomi) - TVM
 Developed by Pros Cons MNN Alibaba Supports direct model conversion and the most operator types Performance is slightly worse than TNN ncnn Tencent Little memory footprint during the model inference process GPU inference requires Vulkan API TNN Tencent Strong performance Model conversion needs to be based on ONNX *: https://blog.titanwolf.in/a?ID=2db37403-84e8-47a2-8c90-3e3174e1a51b
  • 6.
    Mobility Technologies Co.,Ltd. 
 Introduction of MNN 
 - 効率的で軽量なNN推論エンジン - 特徴: - 高性能: - third-party computing librariesを依存せず、多数の 独自実装でcore Opを実現し、ARMのCPUのコンピューティングパワー を最大限に活用 - Androidは、OpenCL、Vulkan、OpenGLのbackendをサポートして、主流な GPU(AdrenoとMali)向けに最適化 - ARM v8.2の新しいアーキテクチャに最適化した、 FP16半精度を使用して 2倍の推論速度を実現 - 軽量性: - Android:soサイズは約400KB、OpenCLライブラリは約400KB、Vulkanライブラリは約400KB - 汎用性: - Tensorflow、Caffe、ONNXなどのモデルファイルと、 CNN、RNN、GANなどのネットワークをサポート - 使いやすさ: - MNNの画像処理モジュールがあり、 OpenCVなどが不要 - ネットワークの一部のみの実行をサポートして、 CPUとGPU間の並列操作を指定可能 - Python APIもあり、C++を書かなくても利用できる - 
 Github: https://github.com/alibaba/MNN/blob/master/README.md Document: https://www.yuque.com/mnn/en
  • 7.
    Mobility Technologies Co.,Ltd. 1. Frontends:
 さまざまなトレーニングフレームワークをサ ポート。
 2. Graph Optimize:
 演算子のfusion、およびメモリ調整によってグ ラフを最適化
 3. Engine:
 モデルのロードとグラフのスケジューリングの 計算を担当
 4. Backends:
 各コンピューティングデバイスでのメモリ割り 当てとOperatorの実装
 Introduction of MNN 
 https://github.com/alibaba/MNN
  • 8.
    Mobility Technologies Co.,Ltd. 
 Introduction of ncnn 
 - ncnnは、モバイルプラットフォーム用に最適化された高性能ニューラルネットワーク推論エンジン - 特徴: - オープンソース(2017~、https://github.com/Tencent/ncnn) - 主要なNNフレームワークをほぼサポート - PyTorch、TensorFlow、ONNX、など - 複数のエッジデバイス (CPUとGPU)に対応 - NVIDIA、AMD、Intel、Qualcomm、Apple、など - third-party computing librariesに非依存 - 100% C++実装、AndroidとiOSをサポート - 優秀なメモリ管理とデータ構造設計によって省メモリ - Vulkan APIに基づくGPUアクセラレーションをサポート - ライブラリ全体のボリュームは 700K(場合によっては300K)未満 - 
 reference: https://www.bilibili.com/video/BV1fQ4y1Z7Yx/
  • 9.
    Mobility Technologies Co.,Ltd. Introduction of ncnn 
 ncnn AI デモ:
 
 ● Object detection
 ● Face parsing 
 ● Super resolution 
 ● Frame interpolation 
 
 
 
 refernce:https://github.com/Tencent/ncnn 

  • 10.
    Mobility Technologies Co.,Ltd. 
 Introduction of TNN 
 - クロスプラットフォーム、高性能、モデル圧縮を備えた軽量の NN推論エンジン - 特徴: - オープンソース( https://github.com/Tencent/TNN/blob/master/README.md) - ncnnがベース - ncnnに比べ、モバイルデバイスのサポートとパフォーマンスの最適化がさらに強化 - 計算の最適化: - さまざまなアーキテクチャのハードウェア特性に応じて、 TNNはOpを大幅に最適化し、ハードウェアの計 算能力を最大限に活用 - 主流のハードウェアプラットフォーム( CPU:ARMv7、ARMv8、X86 GPU:Mali、Adreno、Apple、NV GPU)ディープチューニング - 効率的なConvolution (Winograd、Tile-GEMM、Direct Conv、など) - 低精度の最適化: - INT8、FP16の低精度計算をサポート - モデルサイズとメモリ消費の削減と計算速度の向上を実現 - INT8 Winogradアルゴリズム(入力 6ビット)をサポート - 精度を満たしている場合、モデル計算の複雑さをさらに軽減 - 複数精度の混合計算をサポートし - モデルの精度を確保しながら計算を高速化 

  • 11.
    Mobility Technologies Co.,Ltd. 
 
 TNN Architecture
 https://github.com/Tencent/TNN/blob/master/README.md
  • 12.
    Mobility Technologies Co.,Ltd. NN frameworks common optimization method
 ❏ Operator fusion ❏ FP16/BF16 precision ❏ Quantization
  • 13.
    Mobility Technologies Co.,Ltd. Operator fusion
 blob1 x=min(x,10) blob2 x=max(x,0) blob3 min演算子とmax演 算子を1つの演算に 融合することで演算 子の推論速度を高 速化 blob1 x=max(min(x,10),0) blob3 blob = Binary Large OBject、バイナリデータを表すオブジェクト、格納するための型
  • 14.
    Mobility Technologies Co.,Ltd. 
 
 
 FP16/BF16 precision
 FP32 Tensor FP16 Tensor BF16 Tensor FP16演算子kernel、 A55、A75などのアー キテクチャをサポート BF16演算子kernel、 すべてのARMCPUを サポート ● FP/BF16は16ビットを使用して浮動小数点数を表現 ● FP32より、50%のメモリを節約 ● 演算子kernelはより効率的な実現 ● 推論速度が向上
  • 15.
    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
  • 16.
    Mobility Technologies Co.,Ltd. 
 
 
 NN benchmark performance 
 https://www.zhihu.com/question/400143354 Snapdragon845 Performance Snapdragon835 Performance ms ms
  • 17.
    Mobility Technologies Co.,Ltd. Merit and Demerit of the NN inference engines 
 - 長所 - アプリケーションへの組み込みがしやすい(依存がすくない、バイナリが軽い) - モデルの推論速度向上 - モデルサイズ減少、メモリ節約 - 短所 - 推論結果に誤差がある場合がある