自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 The Advisors Alliance Network of Mixture of Experts

专家混合模型(MoE)[1]是一种知名的方法,它结合了多个“专家”模型,每个模型专门处理输入空间的不同部分。除了专家混合(MoE)方法,还有一些其他的AI模型组合策略,如bagging和boosting,这些方法涉及训练多个模型并组合他们的预测以减少过拟合和提高鲁棒性。这个Transformer模型,被称为Transformer As Gate(TAG),源自与其他专家模型相同的基础模型,但是专门微调并优化其识别但不回答各种专业知识的能力。与MoE不同,任务处理后,结果直接返回,不进行选举或汇总。

2023-10-10 00:35:04 368

原创 一步一步理解大模型:模型调优之P-Tuning

P-Tuning就是提示调优(Prompt Tuning),主要思想是固定预训练模型的参数,然后在模型的输入端添加可学习的"prompt"(提示)进行调整。这种方法的优点是计算成本低,因为只需要更新少量的参数。它不改变模型,而是通过对提示的优化,让模型输出最佳的结果,相关论文可参考【1】。从原理上讲,是在已训练的模型L的外面再套上一个可训练的模型P,在不改变L的情况下通过优化P,让P(L)最优。因为L的输入实际上就是提示,所以叫提示调优。提示调优可以通过手动实现(不推荐)也可以通过自动训练实现。

2023-10-09 23:00:09 1696

原创 一步一步理解大模型:模型组合简介

常见的算法有AdaBoosting和Gradient Boosting等,AdaBoost侧重于在每一轮迭代中增加那些被前一轮弱学习器错误分类的样本的权重,而Gradient Boosting则是通过拟合前一轮的残差来生成新的弱学习器。因为模型的总类不一样,它们的差别是比较大的,所以在输出的时候,会先将各个子模型的输出连接起来做一个线性组合得到最终输出。模型组合比如Boosting,Bagging和stacking等等的基本思想是将多个较弱的模型合成比较强的一个模型,但它们采用的方法不同。

2023-07-31 02:56:48 329 1

原创 一步一步理解大模型:混合专家模型(MoE)简介

混合专家模型,英文叫Mixture of Experts (MoE) 是一种模型设计策略,它通过将多个模型(称为"专家")的预测结果结合在一起,以获得更好的预测性能。

2023-07-25 04:57:13 30253

原创 一步一步理解大模型:模型量化技术3 - GPTQ

之前的后训练方法只能在8位时保持准确,而之前的基于训练的技术只处理了比这小一个到两个数量级的模型。GPTQ可以在大约四个GPU小时内量化具有1750亿参数的GPT模型,将位宽减少到每个权重的3或4位,与未压缩的基线相比,准确性降低可以忽略不计。该方法的压缩增益是以前提出的一次性量化方法的两倍多,保持了准确性,使我们首次能够在单个GPU内执行1750亿参数的模型进行生成推断。GPTQ遵循最先进的后训练量化方法的结构,通过逐层进行量化,为每一层解决相应的重建问题。这一步是为了将量化后的值恢复到原始的值范围。

2023-07-23 06:55:03 4263

原创 一步一步理解大模型:模型量化技术2-源代码

在模型的训练阶段,我们通常会寻求优质的硬件条件和更高的计算精度,以便训练出性能更优秀的模型,从而获得更高的评估分数。在这个函数中,通过加上一个特定的浮点数(12582912.f,这是2的23次方),可以将浮点数的小数部分移到尾数的位置。在模型量化技术(1)中,我们提到一个重要的步骤是找到权重附近的“落脚点”,在实际运算过程中,我们是找到浮点数附近的整数,就是做四舍五入运算来间接处理。这段代码实现了一个产品化的,高性能的,精准的将浮点数四舍五入到最接近的整数的函数。的值会增加1,实现了四舍五入的效果。

2023-07-22 06:54:39 417 1

原创 一步一步理解大模型:模型量化技术1-简介

简单的说,激活的意思就是如果这个靠近的某个落脚点,就把它算成某个落脚点的值. 在训练模型的时候,机器会调整这些权重,这些权重会用某个落脚点的值来表示。总的来看,模型量化的精度损失取决于多种因素,包括所使用的量化策略、模型的特性,以及实际应用中的需求等。现在,我们把这个0到1之间的范围称为一个权重,看成一片连续的水面,上面表中的值看成一个一个的“落脚点”。依此类推,你有2的n次方种方法来表示这个范围,这里的n就是比特的位数。就是说,你仅用少量的精度损失的代价节省了大量的存储空间,是非常划算的。

2023-07-21 21:07:41 4378 3

原创 一步一步理解大模型:管道并行优化技术

这就需要一个同步点,也就是"栅栏",在此点上,所有线程都会等待,直到所有线程都到达这个点,然后再一起继续执行。由于数据需要在设备之间复制,因此代码应用了一种名为"栅栏同步"的技术,用来确保数据在被复制到下一个设备之前已经被计算出来。另外批量的训练数据也划分成更小的批量,称为微批次(micro-batches),在当前设备处理完毕微批次后,把输出传送到下一个设备,同时自身接受下一个微批次,从而实现并行处理。这是为了将一个大模型分割成小的部分,然后每一部分放在不同的设备(如GPU)上进行并行计算。

2023-07-21 10:02:36 704 1

原创 一步一步理解大模型:零冗余优化器技术

这使得我们可以在相同的硬件上训练更大的模型,或者在更小的硬件上训练相同的模型。ZeRO-1:优化器状态分区(Optimizer State Partitioning) 在传统的数据并行训练中,每个设备都会保存一份完整的模型参数和优化器状态,这会导致内存的大量浪费。ZeRO的目标是通过减少冗余,提高模型训练的内存效率,从而使得更大的模型可以在有限的硬件资源上进行训练。ZeRO主要包括三个级别的优化:ZeRO-1,ZeRO-2和ZeRO-3,每个级别都在前一个级别的基础上进行了进一步的优化。

2023-07-20 20:58:11 1766

原创 一步一步理解大模型:激活检查点技术

方法中,它首先恢复在前向传播过程中保存的RNG状态,然后运行前向传播函数以重新计算激活状态,并使用保存的梯度进行反向传播。在深度学习模型的训练过程中,前向传播会计算并存储每一层的激活值,这些激活值在后向传播时被用来计算梯度。然而,对于深度很大的模型,这种方式可能会导致内存溢出,因为需要存储大量的激活值。激活检查点(Activation Checkpointing)是一种用于优化深度学习模型训练的技术,它可以在内存使用和计算效率之间进行权衡,以在有限的硬件资源下训练更大的模型。具体实现的关键是一个名为。

2023-07-20 10:51:19 2340

原创 一步一步理解大模型:模型卸载(Offload Model)技术

此时,我们可以利用模型卸载技术,将最多6GB的参数加载到8GB的显存上,然后将剩余的参数保存在32GB的RAM中,使模型能够正常运行。最后,新计算的激活保留在 GPU 上,准备进行下一个分片的计算。总的来说,OffloadFunction 类提供了一种机制,使得模型的一个分片可以在 CPU 和 GPU 之间进行动态的加载和卸载,从而支持大模型的训练。模型卸载的步骤通常包括将模型分割成多个部分,每个部分可以单独加载到GPU的显存中进行计算,而其他部分则保留在其他设备上,需要时再从其他存储设备上加载。

2023-07-20 10:22:15 2294 1

原创 逐行对比LLaMA2和LLaMA模型源代码

这是因为键和值的数量直接影响了注意力矩阵和值矩阵的大小,如果序列长度非常大,这些矩阵的存储和计算可能会变得非常昂贵。在这种情况下,需要在计算注意力权重前,将键和值的头数通过复制的方式扩展到与查询头数一样多,才能进行查询和键的点积操作。这个函数主要作用是当键(key)和值(value)的头数小于查询(query)的头数时,将键和值的头数复制至与查询头数相同。1. 可能模型在并行训练的时候,遇到硬件问题,比如在多板卡之间比如NVLink之间做矩阵变换的时候出错,临时做的修改。

2023-07-19 05:43:28 4844

原创 开源大模型成功的背后离不开中国研究人员的贡献

2023年3月30日,LLaMA的微调版本Vicuna已经达到ChatGPT 90%的质量(1). 由于LLaMA和GPT2都是开源模型,而GPT3,ChatGPT3.5和ChatGPT4都是闭源模型,笔者详细对比了LLaMA和GPT2的在模型层面的区别,以便从模型本身发现GPT的进步要素。由于GPT3以后OpenAI选择了闭源,隐藏了模型关键细节。1. 在OpenAI的ChatGPT3.5发表前,中国籍的研究人员,特别是苏剑林,已经发表了不逊于ChatGPT的关键研究成果,且在两年后得到了验证。

2023-05-30 11:49:53 520

原创 一步一步理解大模型:复数形式的旋转位置编码

在传统的 Transformer 模型中,位置信息是通过加入到词向量中的固定位置编码来提供的。这种方法在处理较短的序列时工作得相当好,但在处理长序列时,位置编码可能会被淹没在词向量中,导致位置信息的丢失。在传统的 Transformer 模型中,位置信息是通过加入到词向量中的固定位置编码来提供的。这种方法在处理较短的序列时工作得相当好,但在处理长序列时,位置编码可能会被淹没在词向量中,导致位置信息的丢失。这样,位置信息就被直接编码到了词向量的方向上,而不仅仅是它的大小。

2023-05-29 20:57:54 869

原创 一步一步理解大模型:位置编码

位置编码的目的是向模型提供每个词在句子中的相对位置信息,因为Transformer的自注意力机制(Self-Attention Mechanism)并不关心词的顺序。这些正弦和余弦函数具有不同的频率,从而产生一个独特的编码向量,用于捕捉序列中每个位置的信息。在将输入序列嵌入到模型中时,对应的位置编码向量与输入词嵌入向量相加,以便模型能够同时学习词的语义信息和在序列中的位置信息。使用正弦和余弦函数的位置编码方法使得模型能够更好地学习和利用序列中的位置信息,从而提高整体性能。这有助于区分序列中的不同位置。

2023-04-20 10:17:45 2344

原创 一步一步理解大模型:位置逐元素前馈

位置逐元素前馈(position-wise feed-forward)在Transformer架构中被广泛使用,可以放在自注意力(self-attention)层之后,它的主要目的是在每个序列的位置单独应用一个全连接前馈网络。例如,在GPT(基于Transformer的解码器)中,每个解码器层都包含一个因果自注意力子层和一个位置逐元素前馈子层。第一个线性层扩展每个位置的表示,为学习更复杂的特征提供可能性,激活函数帮助模型学习更复杂的非线性特征,然后用第二线性层将每个位置的表示压缩回原始维度。

2023-04-20 03:30:30 1227

原创 一步一步理解大模型:缩放点积注意力机制

具体来说,Multi-Head Attention将输入矩阵分别进行多个头的线性变换,然后对每个头的变换结果分别计算Scaled Dot-Product Attention,最后将每个头的Attention结果拼接在一起并通过一个线性变换输出。通过这种方式,Scaled Dot-Product Attention可以计算出Query和Key之间的相似度,同时考虑了Value矩阵对最终结果的影响,进而实现了注意力机制的作用。将scores除以d_k的平方根(np.sqrt(d_k)),这就是所谓的缩放,

2023-04-19 01:35:24 5756

原创 一步一步理解大模型:多头注意力机制的作用

初始权重随机分布,梯度下降优化过程推动每个头去适应其权重,以学习不同的特征,因为这有助于减少总体损失,训练数据本身是可解耦的,那么多头机制就可能碰上,Dropout,超参数,特殊设计。如果所有头都学习了相同的特征,则会冗余且效率低下,模型在其受训任务上的表现会不佳,那么这些训练结果会被放弃,留下的大概率就是学习到了更多特征的模型。:在工业化实用的模型上,对一些已知的、直觉体会到的、猜想到的特征,工程师会设计特殊的网络结构去捕捉,而这些经验性的网络结构有可能各种原因没有发表。所以,调参是非常重要的。

2023-04-19 01:20:43 6084

原创 一步一步理解大模型:因果掩码

为了防止这种情况,我们使用了一个注意力子序列屏蔽(attention subsequence mask),将所有未来的令牌设置为零,有效地从注意力机制中屏蔽了它们。具体实现中,这种输入不是串行输入的,而且提前准备的,蒙住从第二个到结尾的所有词,蒙住从第三个到结尾的所有词。在Transformer模型中,自注意力(self-attention)是在整个令牌(token)序列上计算的,包括当前令牌之后的令牌。这使得模型在进行预测时只能关注过去和当前的令牌,并确保它仅基于每个时间步骤可用的信息进行预测。

2023-04-18 23:21:17 4187 1

原创 一步一步理解大模型:查询序列和键序列

因此,点积操作可以用于衡量两个序列之间的相似度,而在self-attention计算中,它被用于计算每个查询序列与每个键序列的相似度,以便根据这些相似度权重对值序列进行加权平均。总的来说,在self-attention计算中,通过计算查询序列与键序列的相似度,可以在保留序列之间交互信息的前提下,对序列中的每个元素进行加权处理,进而获取更准确的特征表示。方法中,我们首先将输入进行查询、键和值的线性变换,然后将每个头对应的矩阵进行转置,接着计算相似度,并对相似度进行归一化,最后将值进行加权求和,得到最终输出。

2023-04-18 22:24:38 282

原创 一步一步理解大模型:注意力填充掩码的作用

因此,在Attention Pad Mask的作用下,模型只会关注输入序列中实际的token,而忽略填充token。在计算注意力分数时,对于第一个序列中的第4和第5个位置,以及第二个序列中的最后三个位置,由于其对应的填充token为0,因此Attention Pad Mask中的值为True,会将其对应的分数设置为负无穷大。例如,假设我们有一个batch size为2的输入序列,长度分别为5和7,其中填充token的值为0。分别代表查询序列和键序列。

2023-04-18 21:39:19 988

原创 用一个简单的例子学习Self Attention实现指代替换

然后读100篇关于街道相关文章,找出“宽”这个词的和“宽”的近义词出现在“猫”或者“街道”附近的次数;,第一张表中,这个数字为1,将行为”街道“,列为”宽“的数字提出来,第一张表中,这个数字为8,因为8 > 1, 所以,第一句话中,它=街道;同理,第二张表中,"猫“和”胖“的关系 5 大于 ”街道“和”胖“的关系,所以,第二句话中,它=猫。,发现“它”是代词,猫是名词,街道是名词。至于为什么可以这样处理,是因为我们有其他不同的“人”,去处理”过不了“,”因为”,“太”,“了”那些词。

2023-04-03 08:10:07 259 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除