晶视 TPU-CV183x 开发板调研和测试验证
一、晶视 TPU-CV183x 开发板调研
A、基本信息:
- 应用场景:人脸考勤机、智能监控 IP 摄像机,主要用于视频图像领域
- 通信方式:串口通信,需安装 ftdi_ft232 驱动,波特率 115200
- 传输文件方式:SD 卡通信(验证中) 网口通信(已验证)
- 算力:CPU ARM Cortex-A53 @ 1.2Ghz 32KB I-cache, 32KB D-Cache,128KB L2 cache,支持 Neon 加速, 集成浮点运算单元 (FPU) TPU ~0.5TOPS INT8
- 开发环境:厂商提供 docker 镜像
- 量化方式:int8 BF16 支持混合量化
- 算子支持:
TPU: | BatchNorm BroadcastMul Clip Concat Conv2D Crop DeConv2D EltwiseAdd EltwiseMax EltwiseMul FullyConnected Gru LeakyRelu Lstm Mish Normalize Pad Permute PixelShuffle PoolAvg2D PoolMask PoolMax2D Power PRelu ReduceMax ReduceMean Relu Reorg Scale Sigmoid Slice Sqrt Softmax TanH Tile Upsample YoloDetection ZeroMask |
CPU: | FrcnDetection DetectionOutput Custom PriorBox Proposal RetinaFaceDetection ROIPooling |
暂未发现能够自定义算子暂未发现 OP 级接口
B、量化方式:
模型的量化主要分为两种方式: Per-Tensor 量化(有时也称为 Per-Layer)是指对整个Tensor 使用同一组量化参数(scale 或 threshold); Per-Channel 量化(有时也称为 Per-Axis) 是指对于 Channel 这个维度支持各个 Channel 有各自不同的量化参数。 理论上,Weight Tensor 和Activation Tensor 都可以选择 Per-Tensor 或 Per-Channel 量化。但是实际实现过程中,TPU 选择只对 Weight Tensor 支持 Per-Channel 量化,对 Activation Tensor 保持 Per- Tensor 量化。 另外,按照 INT8 时 0 点映射的方法,量化方式也可以分为两种: 对称量化,将需要映射的动态范围映射为正负对称的区间; 非对称量化,是映射到非对称的区间,这时 INT8 的 0 点会被映射到一个非零的值;
C、量化过程:
使用量化感知训练传入量化参数,目前不支持客户自己量化
D、生态相关:
支持 caffe、pytorch(onnx)、tensorflow1.x、tensorflow2.x 框架模拟器:提供库文件 保证和 TPU 精度一致 暂无模拟器代码
二、晶视 TPU-CV183x 开发板测试验证
A、实际算力测算
模型 | 推理耗时(ms) | 实测算力(GOPS) |
Mobilenet_v2 | 5.58 | 110 |
Resnet18 | 12.72 | 286 |
Shufflenet | 2.57 | 110 |
B、注意事项
1、Sample: resnet18 模型量化:机器内存最好大于 16G, 不然量化过程中会报错如下
2、量化模型版本要与板子版本相对应
Docker 中:
cvitek_mlir/cvitek_envs.sh
cvimodel_tool -a dump -i xxx.cvimodel
C、测试效率(export TPU_ENABLE_PMU=1 model_runner + --pmu +文件名)
1、Resnet18
2、Mobilenet_v2
3、Shufflenet
原文地址:https://blog.csdn.net/mieshizhishou/article/details/140142772
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!