使用多个推理芯片需要仔细规划
使用多个推理芯片需要仔细规划
Using multiple inference chips takes careful planning
在过去的两年里,推断芯片业务非常繁忙。有一段时间,似乎每隔一周又有一家公司推出了一种新的更好的解决方案。虽然所有这些创新都是伟大的,但问题是大多数公司不知道如何利用各种解决方案,因为无法分辨出哪种方案比另一种方案表现更好。在这个新的市场中,由于没有一套成熟的基准,要么必须非常迅速地在推理芯片上跟上速度,要么必须相信各个供应商提供的性能数据。
大多数供应商都提供了某种类型的性能数据,通常是任何让看起来不错的基准。一些供应商在谈到TOPS和TOPS/Watt时没有说明型号、批量大小或工艺/电压/温度条件。其人使用ResNet-50基准测试,这是一个比大多数人需要的简单得多的模型,因此在评估推理选项方面的价值是值得怀疑的。
已经从早期的日子走了很长的路。公司已经慢慢发现,衡量推理芯片性能真正重要的是1)高MAC利用率,2)低功耗,3)需要保持所有东西都很小。
知道如何衡量-下一步是什么?
既然对如何衡量一个推理芯片相对于另一个推理芯片的性能有了一个相当好的想法,公司现在正在问在同一个设计中同时使用多个推理芯片有什么优点(或缺点)。简单的答案是,使用多个推理芯片,当推理芯片设计正确时,可以实现性能的线性提高。当考虑使用多个推理芯片时,高速公路的类比并不遥远。公司想要单车道高速公路还是四车道高速公路?
显然,每个公司都希望有一条四车道高速公路,所以现在的问题变成了“如何在不造成交通和瓶颈的情况下提供这条四车道的高速公路?”?答案取决于选择正确的推断芯片。为了解释这个问题,来看看神经网络模型。
神经网络被分解成多个层次。像ResNet-50这样的层有50层,YOLOv3层有100多层,每层都从上一层获得激活。因此,在层N中,输出是进入层N+1的激活。等待该层进入,计算完成,输出是进入n+2层的激活。这会一直持续到层的长度,直到最终得到结果。请记住,此示例的初始输入是图像或模型正在处理的任何数据集。
当多个芯片发挥作用时
实际情况是,如果有一个具有一定性能水平的芯片,总有一个客户想要两倍或四倍的性能。如果分析神经网络模型,在某些情况下是有可能实现的。只需要看看如何在两个芯片或四个芯片之间分割模型。
多年来,这一直是并行处理的一个问题,因为很难找出如何划分正在进行的任何处理,并确保所有处理都累加起来,而不是在性能方面被减去。
与并行处理和通用计算不同,推理芯片的好处在于,客户通常提前知道是否想使用两个芯片,这样编译器就不必在运行时就可以知道了——这是在编译时完成的。有了神经网络模型,一切都是完全可预测的,所以可以分析和弄清楚如何分割模型,以及是否能在两个芯片上运行良好。
为了确保该模型可以在两个或更多的芯片上运行,必须逐层查看mac的激活大小和数量。通常情况下,最大的激活发生在最早的层。这意味着激活大小会随着层数的增加而缓慢下降。
查看mac的数量以及每个周期内完成的mac数量也很重要。在大多数模型中,每个周期内完成的mac的数量通常与激活大小相关。这一点很重要,因为如果有两个芯片,并且希望以最大频率运行,则需要为每个芯片提供相同的工作负载。如果一个芯片完成了模型的大部分,而另一个芯片只完成了模型的一小部分,那么将受到第一个芯片的吞吐量的限制。
如何在两个芯片之间分割模型也很重要。需要查看mac的数量,因为这决定了工作负载的分布。还得看看筹码之间传递的是什么。在某些情况下,需要将模型切片到传递的激活尽可能小的位置,以便所需的通信带宽量和传输延迟最小。如果在激活非常大的点上对模型进行切片,激活的传输可能成为限制双芯片解决方案性能的瓶颈。
下图显示了YOLOv3、Winograd、200万像素图像的激活输出大小和逐层累积的Mac操作(绘制了卷积层)。为了平衡两个芯片之间的工作负载,模型将减少大约50%的累计MAC操作-此时,从一个芯片到另一个芯片的激活是1MB或2MB。要在4个芯片之间分割,切割大约为25%、50%和75%;请注意,激活大小在开始时是最大的,因此25%的切割点有4个或8MB的激活要通过。
YOLOv3/Winograd/2Mpixel图像的激活输出大小(蓝条)和逐层累积MAC操作(红线),显示工作负载如何在多个芯片之间分配。
性能工具
幸运的是,现在可以使用性能工具来确保高吞吐量。事实上,模拟单个芯片性能的同一工具可以推广到两个芯片的性能模型。虽然任何给定层的性能都是完全相同的,但问题是数据传输如何影响性能。建模工具需要考虑到这一点,因为如果所需的带宽不够,那么带宽将限制吞吐量。
如果做四个芯片,需要更大的带宽,因为模型第一季度的激活往往比模型后期的激活更大。因此,在通信资源上的投资将允许使用更多的芯片,但这将是一个开销,所有的芯片都必须承担,即使是独立的芯片。
结论
使用多个推断芯片可以显著提高性能,但前提是神经网络的设计如上所述。如果回顾一下高速公路的类比,那么使用错误的芯片和错误的神经网络模型,会有很多机会让交通堵塞。如果从正确的芯片开始,就在正确的轨道上。请记住,最重要的是吞吐量,而不是TOPS或Res-Net50基准测试。一旦选择了正确的推理芯片,就可以设计一个同样强大的神经网络模型,为应用程序提供最大的性能。
使用多个推理芯片需要仔细规划相关推荐
- 面向汽车应用的硬件推理芯片
面向汽车应用的硬件推理芯片 Hardware inference chip targets automotive applications 总部位于匈牙利的AImotive是一家基于软件和硬件的自动驾 ...
- 推理芯片的性能建立在优化的存储子系统设计上
推理芯片的性能建立在优化的存储子系统设计上 Inference chip performance builds on optimized memory subsystem design 好的推断芯片可 ...
- 挑战 Intel 和英伟达,高通发布 Cloud AI 100 边缘推理芯片
雷锋网注:[ 图片来源:VB 所有者:Qualcomm ] 昨天,高通在旧金山召开了年度人工智能日(AI Day)大会.在本次会议上,该公司揭开了三款芯片的神秘面纱,而这三款芯片可以用于智能手机.平 ...
- MLPerf发布首个AI芯片推理测试排行榜:阿里平头哥含光800获得多项第一
晓查 发自 凹非寺 量子位 编译 | 公众号 QbitAI 今天MLPerf基准联盟公布了第一批AI芯片的推理测试结果,对来自19个公司机构的594种芯片在各种自然语言和计算机视觉任务中的表现进行了 ...
- 阿里平头哥首款AI芯片发布!46倍于英伟达P4,刷新全球推理性能最高纪录
李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI 阿里第一颗芯片诞生! 刚刚,云栖大会现场,阿里巴巴集团CTO.达摩院院长张建锋向全场展示了含光800--阿里第一款AI芯片. 为了这款芯片 ...
- 云知声今年要量产三款芯片,还公布了多模态AI芯片规划
安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI 推出首款面向物联网AI芯片半年后,AI创业公司云知声怎么样了? 昨天(1月2日)下午,云知声再次对外发声,公布了多模态AI芯片战略与规划,也 ...
- 从云到端,谷歌的AI芯片2.0
来源:脑极体 得芯片者得天下.我们可以把这句话再延伸一下说,得AI芯片者得未来的天下. 对于智能终端厂商来说,能够自研SoC芯片似乎才是顶级实力的象征.众所周知,盘踞全球智能手机前三甲的三星.华为. ...
- 人工智能芯片产业生态和竞争格局
国内人工智能芯片公司寒武纪科技(Cambricon)上市造富,让人工智能芯片走入了更多人的视野. 深度学习不仅在传统的语音识别.图像识别.搜索/推荐引擎.计算广告等领域证明了其划时代的价值,也引爆了整 ...
- 阿里云栖大会首日:成立芯片公司“平头哥”,发布城市大脑2.0
今天,一年一度的云计算峰会--云栖大会在杭州开幕.大会首日,阿里不仅发布了城市大脑2.0,更是宣布成立"平头哥半导体有限公司"开发AI芯片,引起众人关注. 在一年前的云栖大会上,阿 ...
最新文章
- 大佬算法校招经验总结(拼多多、小米、华为、百度等)
- fragments lifecycle
- 2021暑假每日一题 【week9 完结】
- struts2标签循环输出tr和td
- 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用
- 模型部署到移动端_谷歌开源 MobileNetV3:新思路 AutoML 改进计算机视觉模型移动端...
- 正睿2019省选附加赛 Day10 (这篇其实已经都咕咕了...)
- AngualrJS之服务器端通信
- fi sap 凭证冲销 稅_SAP 成本收集器与重复制造配置手册
- [UE4.4.x] 虚幻4 安卓打包
- redis学习-主从复制Master/slave
- 【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类
- vue-router 懒加载优化
- C++ 随机数函数rand()与srand()的思考
- 网络工程师干货:华为设备故障管理命令大全
- Java 网络编程之Socket详解
- xshell5 Xshell6 商业版的破解版
- 小米 线刷 android,小米10 Android 11 Beta 1线刷包已放出,安卓11/MIUI 12二选一
- 如何给电脑做磁盘分区
- 精打视频教程(10)菜鸟电子面单打印与发货
热门文章
- 前来推荐一本比较喜欢的读物——《浪潮之巅》
- Python 笔试面试合集
- debian10 apache2使用ssl
- 【VB】学生信息管理系统4——数据库的发展
- SSM框架整合(Spring+SpringMVC+MyBatis)
- CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
- Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
- LeetCode简单题之删除一个元素使数组严格递增
- LeetCode简单题之好对数的数目
- LeetCode简单题之二叉搜索树的范围和