Engram对比传统LLM,有什么区别?
通过将部分 Transformer 层替换为 Engram 模块,训练时将部分知识挂载在模型特定的embedding层,推理时可实现根据 input token 通过哈希映射获得相应的 embedding索引,并将对应注入到模型主干网络的 hidden state 中,其中哈希映射的逻辑没有LayerNorm和非线性激活函数,计算量非常少,意味者这部分可由cpu进行计算。传统LLM在推理时,由于知识可能分布在不同层的 FFN 中,因此每次推理都需要把所有层都计算一次。而 Engram 可能在每轮计算中,通过哈希映射已经找到了对应的知识,当这个向量注入到主干网络后,门控可以判断其能否作为输出的一部分,从而实现某种程度上的 early exit。
相比Cpu取代Gpu的叙事,更重要的是存算分离。
论文虽然提到了“20/80比例”,但同时证明了更大的知识层能使模型的loss下降依然遵循幂律,并且这是基于3B小模型上获得的实验结果。
目前MoE模型有着总参数大,但激活量小的特点。因为其在推理时只会激活 n 个专家,而激活量只相当于激活专家的总和。在推理时,却需要加载所有专家的权重。因此MoE会耗费非常多的显存,但计算却只需要相对于模型总参数量很小的一部分权重。
同时,由于MoE模型提前预测激活专家准确性较低,而且FFN非常厚重,通过远程内存阵列加载所有权重并流式读取在目前基本不可能,因为要低延迟其需要很高的传输带宽。目前大部分多卡分布式推理都是将模型分成多个切片在多张gpu上计算,这是极其浪费的。
而在Engram中,主干网络相对于embedding层来说,可能只需要保证拥有各领域基础的思维模式和基础知识,其余信息可通过哈希映射在embedding层中获取,这大大较少了模型计算的深度,提高了推理时的效率。
Engram 在前面几层就可以根据输入来获取哈希映射进而取出命中的“知识”,并且通过demo代码中 EngramConfig 可知,n_embed_per_ngram为512,n_head_per_ngram为8,在Fp16的情况下,只需要1kb的传输量。当然demo中hidden_size仅为1024,意味者这个demo对应的大概是1B左右的小模型。但即使生产部署的情况下,这个数值也不会很大,因为单个ngram的信息量只是一个词组。
由于其对比FFN而言,跨节点通讯所需的带宽大大减少。因此,用专门的内存阵列来存储low-rank知识层,单张gpu加载主干网络变得可行,并且不需要昂贵专用互联技术,进而提升目前硬件的计算效能。
同时,Engram 也使端侧算力有限的情况下,大模型能力提升提供了一条新的路径。
(独立撰稿 LoopDns)
通过将部分 Transformer 层替换为 Engram 模块,训练时将部分知识挂载在模型特定的embedding层,推理时可实现根据 input token 通过哈希映射获得相应的 embedding索引,并将对应注入到模型主干网络的 hidden state 中,其中哈希映射的逻辑没有LayerNorm和非线性激活函数,计算量非常少,意味者这部分可由cpu进行计算。传统LLM在推理时,由于知识可能分布在不同层的 FFN 中,因此每次推理都需要把所有层都计算一次。而 Engram 可能在每轮计算中,通过哈希映射已经找到了对应的知识,当这个向量注入到主干网络后,门控可以判断其能否作为输出的一部分,从而实现某种程度上的 early exit。
相比Cpu取代Gpu的叙事,更重要的是存算分离。
论文虽然提到了“20/80比例”,但同时证明了更大的知识层能使模型的loss下降依然遵循幂律,并且这是基于3B小模型上获得的实验结果。
目前MoE模型有着总参数大,但激活量小的特点。因为其在推理时只会激活 n 个专家,而激活量只相当于激活专家的总和。在推理时,却需要加载所有专家的权重。因此MoE会耗费非常多的显存,但计算却只需要相对于模型总参数量很小的一部分权重。
同时,由于MoE模型提前预测激活专家准确性较低,而且FFN非常厚重,通过远程内存阵列加载所有权重并流式读取在目前基本不可能,因为要低延迟其需要很高的传输带宽。目前大部分多卡分布式推理都是将模型分成多个切片在多张gpu上计算,这是极其浪费的。
而在Engram中,主干网络相对于embedding层来说,可能只需要保证拥有各领域基础的思维模式和基础知识,其余信息可通过哈希映射在embedding层中获取,这大大较少了模型计算的深度,提高了推理时的效率。
Engram 在前面几层就可以根据输入来获取哈希映射进而取出命中的“知识”,并且通过demo代码中 EngramConfig 可知,n_embed_per_ngram为512,n_head_per_ngram为8,在Fp16的情况下,只需要1kb的传输量。当然demo中hidden_size仅为1024,意味者这个demo对应的大概是1B左右的小模型。但即使生产部署的情况下,这个数值也不会很大,因为单个ngram的信息量只是一个词组。
由于其对比FFN而言,跨节点通讯所需的带宽大大减少。因此,用专门的内存阵列来存储low-rank知识层,单张gpu加载主干网络变得可行,并且不需要昂贵专用互联技术,进而提升目前硬件的计算效能。
同时,Engram 也使端侧算力有限的情况下,大模型能力提升提供了一条新的路径。
(独立撰稿 LoopDns)