几个月前注意到graphcore这个公司,是因为他们的ipu处理器:intelligence processing unit。但除了看到他们一系列非常漂亮的dnn graph(比如上面这个对于resnet conv1的可视化处理)之外,一直没有更详细的信息。在最近的raais会议上,graphcore的cto,simon knowles做了一个介绍,让我们可以一窥ipu设计背后的一些思考。
“we’ve created a completely new processor that’s the first to be specifically designed for machine intelligence workloads – an intelligence processing unit (ipu) that will set a new pace of innovation. ” “the ipu has been optimized to work efficiently on the extremely complex high-dimensional models needed for machine intelligence workloads. it emphasizes massively parallel, low-precision floating-point compute and provides much higher compute density than other solutions.” - graphcore
从目前看到的信息,可以看到graphcore ipu的一些关键feature:
1. 同时支持training和inference,对于这一点,grophcore有自己的一些独特的看法。
2. 采用同构多核(many-core)架构,超过1000个独立的处理器。每个处理器核的处理能力和具体支持的操作还不清楚。支持all-to-all的核间通信,采用bulk synchronous parallel的同步计算模型(又是上个世纪80年代提出的)。
3. 采用大量片上memory,不直接连接dram。这可能是他们的架构中最激进的一个选择。
其它一些feature,比如
1. training or inference
graphcore’s machine intelligence processors support both training and inference. if you’re thinking about it in terms of training and inference, though, you’re probably thinking about hardware for machine learning in the wrong way.
可以看出,当被问及他们的ipu是用于training还是inference的(这是对各种pu最常见的一个问题)时候,graphcore试图从另一个角度去解答,即这种分类本身就是不对的(是目前某些厂商提出的不合适的说法)。总的来说,他们认为先做training然后做inference的机制,未来一定会被learning取代。也就是未来理想的机器智能应该能够在部署之后还能保持持续的学习和进化。对于这个问题,graphcore专门有一篇blog做了说明,大家可以参考我在知乎上给出的翻译(https://zhuanlan.zhihu.com/p/28053630)。
另一方面,他们认为,从计算上来说,inference和training也有类似的特征。因此,他们的模型是下图这样,其中并没有training的模块。
我的看法:
机器智能努力的方向之一就是continuous learning。如果在一个架构上能够同时很好的支持training和inference当然非常理想。不过从目前的实践来看,deep learning中的training和inference还是有较大的差异的,运算量的巨大差别,精度要求不同,算法差别,部署的constraints等等。graphcore最终推出的ipu能否很好的解决这些问题,还有待观察。
2. what shall we bet is fundamental to mi workload
ipu的设计的基础是graphcore对于机器智能的workload的理解。“在所有形式的机器智能计算中,我们试图从数据中推断知识模型,然后使用这些学习的模型从其他数据推断出新的结果。所以在很大程度上,工作量是由知识模型的性质来定义的”。“知识模型和对它们执行推理所需的算法最自然地表示为图形(graph)”。因此,他们用graph来作为机器智能的基础表示方法。这种表示既适用于神经网络,也适用于贝叶斯网络和马尔科夫场,包括未来可能出现的新的模型和算法。
这些graph的第一个特征,是它们规模很大,通常包括数千到数百万个顶点。这也意味着巨大的并行性。第二个特征是它们是稀疏的,大多数顶点只连接到其他一小部分顶点。因此,必须在架构上适应这种稀疏性,因为它对处理器之间的存储器访问模式和通信模式有重大影响。第三个基本特征是数据的统计近似值。从处理器设计的观点来看,这有利于低精度浮点运算。这可能是低精度数据的高性能计算的第一个主要应用,和传统的高性能计算(hpc)是非常不同的(或者说完全相反的?)。另一个特征是模型参数的重用性。简单来说,卷积是空间重用,而回归是时间重用。这种重用可以获取数据中的空间或时间不变性。同时,如果重用参数,则会将其作用于给更多的数据,从而更快地学习。最后一个基本特征是,图形结构可以被视为静态的 - 至少在很长一段时间内。这对于构建高效的并行计算至关重要,因为使得编译器可以在将程序映射到多核并行处理器时的三个np hard任务有可能实现:1)平衡跨处理器核的计算任务;2)分区和分配内存;3)处理器之间的消息调度。
对于稀疏性,还可以更进一步的说明一下。当我们把图模型存储到物理可实现的存储器中的时候,存储器访问的有效稀疏度进一步增加了。例如,一个图中的顶点可能连接到同样接近的100个相邻顶点。但是,如果我将该顶点的状态存储在具有线性地址的存储器中,则它只能有两个直接邻居。在低维存储器中存储高维graph的效果是使邻域分散在存储器中。这对于非常宽的向量机(如gpu)来说是一个潜在的问题。图处理有利于更细粒度的机器,从而有效地分散和收集(scatter and gather)数据。这就是为什么ipu拥有比gpu更多的处理器,每个处理器都设计用于处理较窄的向量。
基于上述对机器智能的workload的理解,graphcore提出了ipu的设计。
和cpu (scalar workload),gpu (low-dimensional workload)相比,ipu是为了high-dimensional graph workload而设计的。下面我们就看他们的一些比较有参考价值的设计上的考虑。
季丰电子仿真的主要应用
泰国将在今年9月征收外国互联网运营增值税
面粉水分测定仪的实验原理及注意事项
大联大品佳集团推出NXP整合式智能门锁解决方案,提供更便捷、更安全的智能生活体验
长虹空调2019年抢跑市场 率先实现开门红
关于Graphcore IPU设计背后的思考
PCB铜皮的面积和热阻是什么
消防应急灯具有哪些技术要求?
CSON使用实例:定义数据模型
基于SEPIC变换器的高功率因数LED照明电源设计
立式加工中心的精度由哪些因素决定呢?
物联网成运营商战略之重
匿名支付的最好的隐私代币是什么?
2023年SpaceX目标是每年发射火箭超70次
欧盟批准人工心脏投入商用 暂定售价 15 万欧元
恒压控制芯片激或升降压电源拓扑XP3358
Cheetah 3猎豹机器人,一款不靠视觉就能移动的机器人
区块链如何助力游戏化程序技术
为什么OLED不被看好
图形处理器是不是独立显卡