2. 冗余条件计算,可以多种实现形式,可以通过P(.)函数的实现如topk(k=n,…),n>=2来实现,也可以通过硬冗余模式,整个网络中支持输入的复制和多路计算实现。
条件计算的挑战1. 路由算法对模型质量的影响无论输入和路由权重作用的信息(X*W),是仅作为路由选择并作为后续网络单元的输入,还是直接作为后续网络单元的输入的一部分,路由算法决定了输入信息的处理流向,对模型的整体质量都有很大影响。2. 路由(routing)/门(gate)的稳定性随机初始化的路由/门的权重,权重自身在不断被训练调整;在前后层的网络持续训练变化,同一样本在训练的不同阶段会被分派到不同的后续网络单元中,这种动态变化过于剧烈,将严重影响整个网络训练过程的稳定性和收敛速度。3、路由的专家样本重要性和负载的平衡性
训练阶段,每专家和样本批次中样本的关联度重要性,和每批次中样本被均衡分派到不同专家的负载平衡性,这两个指标既相关又冲突。需要分别构建损失函数作为辅助损失,来优化这两个指标。在arxiv:1701.06538《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》做了相关讨论。
关于条件计算/动态神经网络关于条件计算/动态神经网络,更多的信息在《Dynamic Neural Networks: A Survey》arxiv:2102.04906 (arxiv.org/abs/2102.0490)一文中,作者对广义的动态神经网络,将各种动态网络相关的技术按照实例级、时间级、空间级做了分类。
1. Instance-wise Dynamic NN:逐实例动态,每样本独立激活不同的网络和参数(MoE为这个方向)。Dynamic Architecture:Dynamic Depth、Dynamic Width、Dynamic Routing/MoE;Dynamic Parameter:Parameter Adjustment、Parameter Prediction、Dynamic Feature(s)
2. Spatial-wise Dynamic NN:空间级动态:图像等不同空间位置激活后续不同网络和参数。(CNN等):Pixel Level、Region Level、Resolution Level
3. Temporal-wise Dynamic NN:时间级动态:时序数据按时序维切分激活后续不同网络和参数。(video-frames, text-sequence, time-series, stream, ...)Text-SequenceVideo-Frames
上述为该综述论文对Dynamic NN的总体分类。
从超大规模网络动态网络技术支撑角度,高表达能力,低计算代价为主的来考虑分类,从两个维度对动态网络技术分类:
1. 按照在前馈计算时是否部分激活:Hard-Dynamic:在前馈的时候,部分网络绝对不激活参与计算
Soft-Dynamic:在前馈的时候,部分网络经过softmax等gate/route后,通过张量元素置零等方式,失去表达能力,但会参与计算。
2. 按照动态激活判定算法的输入:逐样本级:(在输入层)按照每样本的实例来决定动态网络的后续激活。
亚样本级:(在输入层)样本内时间/空间级激活不同的后续网络单元。一般深度网络,不仅在输入层会被选择性激活执行,在中间层也类似。
其中,智能平台支持Hard-Dynamic逐样本级的动态神经网络,能比较自然的获得网络结构大颗粒的稀疏激活,在超大模型中能实现训练和推理的高能效。
动态神经网络相比与静态结构的神经网络,在相关研究中,从效能,表达,泛化、鲁棒,可解释等方面做了大量对比研究。从智能平台通过计算成本尽量低的支持超大规模网络来提升模型性能的角度看,Efficiency和Representation最为重要:
1、Efficiency:静态网络“牵一发而动全身”,每一个样本输入整个网络/所有参数都要响应,这对超大网络来取得领先效果的模型能耗挑战太大。
2、Representation: 参数量更大,表达容量更大;但MoE等结构在深度网络的各层特征的表达上,复用降低,每参数的表达效率更低。
实现策略实现各种模型的带有动态路由稀疏激活的超大规模参数版本,需要分模型研究和实现。
以Switch Transformer为例,其参数扩展到部分在Transformer的FFN部分。其MoE化扩展,如下图:
(图片来源:Switch Transformer论文)