SNPE教程一:基本概念

1、基本概念

SNPE是高通推出的一个神经网络加速引擎,他可以同时利用到DSP和GPU、GPU。

目前最新版本的SNPE1.54支持TensorFlow, Caffe, Caffe2, ONNX, TensorFlow

整体流程如下:

转换的流程大致如下:

 将训练好的模型用SNPE的工具转成DLC文件就可以在SNPE运行环境里跑了。装成DLC之后也可以用它自带的量化工具量化成8位整形,放到DSP上跑。

各芯片支持:


2、运行环境

大致架构如下:

DL Container Loader:加载DLC工具

Model Validation : 验证DLC工具

Runtime Engine : 推理引擎

Partitioning Logic : 将模型划分成多个子网络

Runtime
CPU支持双精度浮点和8位量化的模型
GPU        支持混合精度或者单精度浮点
DSP支持8位整形
AIP支持8位整形


 

HTA: 全称Hexagon Tensor Accelerator,既Hexagon张量加速器。 如果要在HTA上运行模型的一部分就需要用工具(snpe-dlc-quantize)对模型进行量化并且将其二值化然后嵌入到DLC中。有些情况下也可能手动的去分配哪些子网络在HTA上运行会更高效

HVX:Hexagon Vector eXtensions,向量处理扩展核心

SNPE可以将AIP剩余的部分放到CPU上运行

HTA自网络:对应着HTA编译器编译的部分,他的元数据来源于DFC的HTA部分

HNN子网络:对应着可以用Hexagon NN 库在DSP上运行的子网络,他的元数据是DLC的HVX部分

AIP: AIP(AI Processor) 可以交叉使用HTA, HVX, Q6去运行神经模型。而Q6就是协调HTA和HVX一起运行的

AIP(AI Processor)运行环境有以下几种方式:

A: 全部在HTA上运行

当你选择AIP运行环境时默认时完全的HTA

B: 部分在HTA上运行,部分在HNN上运行

当所有的子网络不能再HTA上运行时,HTA智能编译一个更小的子集

你也可以手动划分一个子网络到HTA上运行

C:可以手动划分多个部分

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值