既然聊到大模型,我们就追根溯源,从大模型的第一步开始,就是这篇论文谷歌的Attention Is All You Need。这篇论文提出来的时候还没有什么大模型,主要是解决了当时翻译不准的问题,所以它这里提出了一个Encoder架构和一个Decoder架构。Encoder架构是做语义理解,现在的Bert模型也是用Encoder架构做语义理解。Decoder模型是做文本生成,逐渐扩展到回答各种各样的问题。在Decoder方案上,OpenAI进行了扩展,提出了GPT-1、GPT-2、GPT-3,逐渐到现在看到的GPT-3的1750亿参数的规模。仔细看GPT-3模型,其实它还是在Transformer Decoder框架里进行扩展的,无非是深度更深一些,模型更宽一些、更大一些。接下来看一下1750亿参数的来源。首先就是Embedding的操作,Embedding操作就是一个lookup table的过程,找矩阵lookup的过程。这个事情很简单,没有太多的计算。Attention的部分也没有什么变化,有4个全连接的层,每一层都有12288的维度,它就是一个很大维度的矩阵层,它有4个。Feed Forward又是一个矩阵层,是一个12288×4×12288的很大矩阵层,Feed Forward连接层是有2层。这个模块是重复了96次,一叠加就得到了一个接近1750亿参数的大模型。我们看到1750亿参数大模型主要的数据都是权重,而且权重已经是获得的,在我们做推理的时候。如果能把权重用更低的bit来表示,我们就能获得一个比较好的、比较高效的存储,实现我们大模型在端侧、在边缘进行计算的方案。说到量化,上面先给大家举了一个例子,量化的技术就是把本来的浮点映射到需要的定点的个数。这里的定点是4bit,假设它是0~15,就可以把这样的浮点直接映射到0~15的数字范围内。做量化技术最大的挑战,就是如何在保证大模型准确率的前提下尽量量化。因为这样的问题提出了两个方向:第一个方向,用更细颗粒度的量化技术。在AI部署的过程中看到在量化技术上,从每一层per-layer的量化技术整个权重是一个min max,是一个scale parameter量化的参数,变成是以per-channel矩阵每一列是一个量化参数。直到现在,变成的是基于组的量化参数,颗粒度更小,因为量化带来的误差就会更小。第二个技术方向,看的是层间多精度量化。可以看到右边的图,这个图的表达意思是说在大模型,一个96层多层间的模型结构之间,不是每一个层都是同样重要的。在不同的层之间,还是可以做一些取舍的。这里举例,有些层可以用2bit做,有些层可以用4bit做,有些层如果为了保持精度的极限一点也不丢失是可以用8bit来做的。在不同层间,做了一个精度混合,通过这种方式来保证精度没有丢失。我们公司做了一个实验验证,在ChatGLM2-6B清华开源的大模型上,用88%的INT4和12%的INT12,可以达到跟ChatGLM2-6B FP16相当的一个推理水平。这个推理水平也不是我说得,是用ChatGPT打分打到的。 03.创新立方脉动架构,以此开发X-Edge三款芯片