既是技术问题,也是算力问题。
算力问题很容易理解,GPT4大概率还是用Transformer模型。Transformer如果经过各种Linear技术的优化(如Sparse),那么Scaling Law难以保证;如果保持原样,那么复杂度是二次的,序列一长,训练成本和推理成本都比较难顶。
技术问题则主要是Transformer的长度外推性并不好。如果你想处理1000长度的文本,那么预训练阶段就拿1000长度的文本去训,那自然没有问题,但如果你只拿500长度的文本去预训练,那么得到的模型通常无法很好地处理1000长度的文本,尤其是生成模型场景。
也就是说,短文本训练的模型,通常无法直接处理长文本,这就是长度外推问题,这个问题不只是Transformer有,RNN甚至CNN都会有。注意这里的长短是相对的,如果你想处理10000长度的文本,那么5000长度都算短文本了。
已经有一些工作试图解决这个问题,比如ALIBI、KERPLE、XPOS等,可以参考 Transformer升级之路:7、长度外推性与局部注意力 - 科学空间|Scientific Spaces ,但是这类工作都是基于局部化Attention思想强行赋予平移不变性,无法做到全局依赖,在LLM场景下意义不大。最近笔者也进行了一些尝试,初步看下述方案能保留全局依赖:
Transformer升级之路:9、一种全局长度外推的新思路 - 科学空间|Scientific Spaceskexue.fm/archives/9603
此外,还有一个名为Parallel Context Window的方法值得一提,它是一种事后修改方案,能够增强训练好的模型的处理长度,并且理论上能保持全局依赖:
至于Claude的100k token或者GPT4的32k token是怎么做的,这个没有任何技术细节披露,没法猜。个人感觉100k其实还在能想象的范围内,硬训也是也可能的。说到这里,顺便提一件事:OpenAI在2019年的论文 Generating Long Sequences with Sparse Transformers 就已经做到了一万多token的自回归生成,并且它的Sparsity Pattern跟Parallel Context Learning很相似。
也就是说,人家19年的自回归生成长度就能够突破10k(并且还预见了接近Parallel Context Learning的方案),现在32k就是“洒洒水”了