有个疑问,我跑了几个网络,根据编译器debug模式分析出来的延时和OP数量换算,x3的算力大概只有1Tops(双核),与官方宣称的5Tops相距较远,请问是我的测试方法有问题或者计算方式不对吗?能否帮忙提供改进的测试方法或者建议,感谢。
我的测试数据如下:op数大概是0.6G,时延是1.6ms,换算一下算力:0.6G/(1.6/1000) = 375Gops,即使算上双核也只有700Gops(单核算力乘以2)。
另外考虑到网络中有不高效的层会拉慢速度,我也根据这个计算方法计算了mobileNetV2每一层卷积的算力,算上双核的的话最多到1Tops。
HBDK version: 3.37.2
model: mobilenet v2
Op: 602,577,152
latency: 1.6ms
Fps (1 core): 626.17
Fps (2 cores) 1252.34
确实,我算下来也是算力远没达到标称值;
416*416输入的yolov3算法,单核单线程跑纯推理耗时175ms左右,算法计算量在65G左右,那算下来65*(1000/175)=371G,跟你算出来的算力差不多大;
所以想问下官方,能否给下5T算力的计算方式,包括bpu的mac数量、频率等这些数据?
地瓜橙
3
你好,X3是5TOPS@int8 算力,网络模型的推理性能会受到多种因素的影响,例如带宽、模型结构、利用率等等,所以评估芯片的实际能力我们更多会看FPS指标,模型在芯片上跑出的帧率。例如我们验证mobilenetv2(224x224)在Xavier(30T@int8)上的FPS是~973,相比而言,X3虽然是5T的算力却并不逊色,这也是得益于X3芯片上对Depthewise conv有针对性的优化设计,能够获得更好的收益。
谢谢你的回复。
我理解FPS的意义,但是我更想知道关于X3算力的一些信息,这里还有两个疑问:
1、是否方便介绍X3 5TOPS算力是怎么计算出来的呢?
2、对于我们外部用户能否设置一些比较理想的环境,比如尽可能的避开带宽影响,模型结构的影响,只跑单个OP之类的方式,来测出理论上x3的算力(5TOPS)性能呢?
确实,我算下来也是算力远没达到标称值;
416*416输入的yolov3算法,单核单线程跑纯推理耗时175ms左右,算法计算量在65G左右,那算下来65*(1000/175)=371G,跟这位朋友算出来的算力差不多大;
所以想问下官方,能否给下5T算力的计算方式,包括bpu的mac数量、频率等这些数据?
地瓜橙
6
您的测试结果没有问题。 AI加速器可以理解为一个异构系统,主要来自于矩阵计算单元、向量计算单元、其他特定计算单元如Pooling等,模型推理时不会把这些计算单元同时用满的。例如GPU的cuda core和tensor core在同一个SM Domain里,两者的算力不能同时并发。
您可以多测一些模型,并对比这些模型在x3同级别算力平台的性能表现。不过用到了多少了算力只是个中间结果,建议最终还是看模型的FPS是否满足预期。
地瓜橙
7
你好, 咱们这边使用的场景中目前遇到了算力不达标的情况吗?我们可以结合场景一起分析下