本文工作是 Cambricon-F:一种具有分形冯·诺伊曼体系结构的机器学习计算机 的延续。

Cambricon-F通过分形执行实现了编程与系统规模无关的重要性质,缓解了机器学习计算机的编程难题。 但是,该计算机上的分形执行是由硬件控制器操控实现的,只支持少数常用基本算子(卷积、池化等), 其他功能需要通过这些基本算子串行拼搭来实现。 我们发现,用有限、固定的指令集支持复杂多变的实际应用负载时,会产生失效现象,影响机器的计算效率。

在支持传统的卷积神经网络等规整的算法时,该机能够达到最优效率。 但在复杂多变的应用场景下,即使应用本身符合分形运算的定义,也会产生失效现象。 失效现象定义为某些应用执行在分形计算机上时,计算或通信复杂度发生了改变。 本文还以TopK和3DConv两种并不十分复杂的算子举例说明了失效现象。

举一个直观的例子: 用户希望执行应用“贝叶斯网络”,该应用是符合分形运算定义的,本能够以分形方式高效执行; 但由于Cambricon-F中并不存在专门的“贝叶斯网络”指令,该应用只能分解为一系列基本运算后串行执行。 如果能够扩展指令集,增加一条BAYES分形指令,就可以在达到叶子节点前一直保持分形执行,显著提升计算效率了。

据此,我们改进了Cambricon-F的架构,提出具有分形可重配指令集结构的Cambricon-FR。 理论地看,Cambricon-F是一台分形计算机,而Cambricon-FR则可以称为一台通用分形计算机; Cambricon-F能够在某种特定应用负载上实现高效计算,Cambricon-FR则能够在复杂多变的应用负载上实现高效计算。

论文发表于《IEEE Transactions on Computers》。[DOI]