为什么大模型普遍选用更宽而不是更高的模型架构

为什么大模型普遍选用更宽而不是更高的模型架构 Q:现在大模型为什么普遍选用矮胖(更宽)的模型架构而非瘦高(更高)的呢,能否从理论和工程角度做一个分析? 研究员1:直接能想到的有两点: 堆的太高很可能gradient计算会不稳定,尤其是mixed precision的情况下损失可能更大 有parallel的考虑,layer和layer之间的依赖的是sequential的,没法并行,堆的太高其实对训练速度拖慢太多了,不如每层多干点事,因为同一层内parallel容易的多。 memory方面可能也有concern,不过这个取决于具体实现方式(比如是否checkpointing,I/O offloading,等等)感觉现在的架构也是经过大量实验试出来的。 研究员2:有一个针对moe的说法,模型的知识受益于参数量,智力受益于计算量(该说法参考:https://www.youtube.com/watch?v=2pbvnxdaKaw )。所以moe架构在知识性的任务上表现很高,但是由于计算量本身增加很小所以智力不足。一个值得思考的问题是模型能否通过单纯的加大层数从而提升智力水平,或者说通过提升纵向(层间)计算次数提升智力。 研究员3:Skywork-13B采用瘦高而非矮胖架构的原因是,在控制参数量的情况下实验发现瘦高一些的模型架构泛化性能更好。从Infra的角度,理论FLOPs只取决于模型实际激活参数量,跟layer数量无关; 在目前的LLM中增加layer数量并不会增加并行难度。hidden state超过4096, micro batch size = 1, 在gemm上就能几乎打满GPU。从分布式并行收益来看,pipeline parallelism收益大于 tensor parallelism, 增加layer数量对pipeline更友好。只是这个瘦高、矮胖的收益趋势肯定不是单调的, 可能是一个二次曲线,所以存在一个最佳的区间范围。 如何实现知识更新 Q:真的很想知道openai是怎么实现知识更新的 研究员1:推荐一个实习的同组peer在CLIP上做了一个continual pretraining的工作:https://arxiv.org/abs/2310.16226 大体上发现如果想更新知识+不遗忘的话,在update knowledge的时候用memory replay(rehearsal)效果不错。一个重点是update的时候不要使用warmup。他文章里还有很多实验细节,但不确定有多少可以迁移到LLM continual pretrain。他这里还发现当训练规模比较大的时候(模型+数据),传统的很多lifelong learning tricks都没啥用了。他的推特对这篇文章有讲解:https://x.com/saurabh_garg67/status/1717571699720483023 。Skywork的stage-2 pretraing (STEM stage)也用了memory replay,有80%数据来自stage 1(自然语言);CodeLlama的两个finetuning阶段分别混了8%和5%的Llama2训练数据作为memory replay。 研究员2:naive的方法是,比如你原先数据停止在2021年,然后你把21-23年的数据拿出来,跟原先的数据混一混然后做continue pretrain,这应该就能成为一个比较好的baseline。但是这里有两个问题,一个是temporal knowledge update,比如23年的总统和24年总统不一定是同一个人,这个在continue pretrain之后,模型要信哪个;另一个就是unlearn,即使模型信了新的总统,那旧的它到底是直接忘掉了呢,还是其实心里还信着只是不说。 研究员3:locate triple-level (Biden, is president of, US) knowledge的weights then edit的文章被follow up work指出其实在multi-hop question还是会暴露出没有遗忘。比如edit之后who is the president of US, model会回答编辑之后的总统(假设奥巴马)。但是你要是问who is the wife of the president of US, model还是会回答Biden的夫人,而非奥巴马的夫人。而且明显能看出即使最优的编辑方法也不能达到批量的knowledge更新,一旦要更新上千个triple-level knowledge,成功率都会低于50%。 另外还有一个思路,是否真的一定需要通过改变model weights来更新knowledge? 面对相关的问题retrieve up-to-date的外部信息到context中,模型对于这些信息的接受度如何?假设model还是记得奥巴马是总统,直接在context里面说现在的总统是biden,模型能不能接受context中、和model本身知识冲突的外部信息并进行运用?...

November 12, 2023 · 2 min · 345 words · Me