comli_cn
算法工程师,知乎号,微信公众号同名:李歪理
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大模型强化学习算法概览
问题:训练不稳定和样本效率低举例:REINFORCE关键挑战:步长(step size)的选择解释:步长太小会导致学习缓慢,步长太大则可能导致策略更新过大,破坏已学到的知识,使训练发散。目的:解决传统的策略梯度方法训练不稳定的问题举例:信任区域策略优化(TRPO)TRPO通过在每次更新时求解一个受约束的优化问题,确保新策略与旧策略之间的KL散度(Kullback-Leibler Divergence)不超过一个预设阈值,保证了更新的稳健性。maxθE^t[πθ(at∣st)πθold(at∣st)A^t]原创 2025-11-15 09:26:19 · 63 阅读 · 0 评论 -
softmax函数的上溢出(overflow)和下溢出(underflow)
溢出即数值超过了二进制的精度,上溢出值为inf,下溢出值为0。实数在计算机内用二进制表示,所以不是一个精确值,当数值过小的时候, 被四舍五入为0,这就是下溢出。此时如果对这个数再做某些运算(例如除以它)就会出问题。反之,当数值过大的时候,情况就变成了上溢出。原创 2025-10-29 12:25:29 · 198 阅读 · 0 评论 -
主流开源模型体系
图中灰色部分是互相不可见的,下面的两种大语言模型体系也一样。原创 2025-10-10 13:23:57 · 80 阅读 · 0 评论 -
Transformer的位置编码
简单来说位置编码就是给一个句子中的每个token一个位置信息,通过位置编码可以明确token的前后顺序关系。对任何语言来说,句子中词汇的顺序和位置都是非常重要的。它们定义了语法,从而定义了句子的实际语义。RNN结构本身就涵盖了单词的顺序,RNN按顺序逐字分析句子,这就直接在处理的时候整合了文本的顺序信息。但Transformer架构抛弃了循环机制,仅采用多头自注意机制。避免了RNN较大的时间成本。并且从理论上讲,它可以捕捉句子中较长的依赖关系。原创 2023-05-06 15:19:54 · 6445 阅读 · 1 评论 -
细究Transformer
以上图为例,目标是将中文的 “我很好” 翻译成英文的 “I am fine”。编码器的输入应该是 “我很好”,解码器的输入应该是 “ I am fine”,而目标是 “I am fine ”。原创 2024-07-19 16:54:21 · 660 阅读 · 3 评论 -
大模型相关知识点
可以看到因为 Causal Mask 矩阵的存在,在计算。的时候就已经算出来了,所以只需要记录一下直接用在计算。上即可,这就是 KV-Cache 的核心思想。,而这些矩阵在前面计算。原创 2024-10-10 13:10:08 · 283 阅读 · 0 评论 -
旋转位置编码
YTXFAX)),其中A是 attention 变换,只进行了矩阵变换,跟位置无关,F是前馈网络变换,也跟位置无关。高阶语义向量不仅仅是由周围 token 的语义向量组合表达而成,还需要加上每个 token 所处的位置。比如我们在句子前面加上cls来学习整个句子的语义向量,如果没有位置编码的话下面两个句子clstoken 得到的语义向量是完全一样的。像是 RNN 和 CNN 结构天然就有序列的位置信息。原创 2024-11-03 16:23:39 · 296 阅读 · 0 评论 -
MHA & MQA & GQA & MLA
引入多头注意力机制是为了让每个注意力机制去优化每个词汇的不同特征部分,从而均衡同一种注意力机制可能产生的偏差,从而增强模型的表达能力。因为Transformer的encoder和decoder两个部分结构不同,在计算多头注意力时也会有些许不同。原创 2024-12-20 15:12:32 · 1177 阅读 · 0 评论 -
Flash Attention
不同硬件模块之间的带宽和存储空间有明显差异,例如下图中左边的三角图,最顶端的是GPU中的SRAM(片上存储),它的容量非常小但是带宽非常大,以A100 GPU为例,它有108个流式多核处理器,每个处理器上的片上SRAM大小只有192KB,因此A100总共的SRAM大小是。下图给出了标准的注意力机制的实现流程,可以看到因为HBM的大小更大,我们平时写pytorch代码的时候最常用到的就是HBM,所以对于HBM的读写操作非常频繁,而SRAM利用率反而不高。对分块 softmax 的情况,假设输入被分为两个块。原创 2024-12-21 11:56:02 · 950 阅读 · 0 评论 -
大模型面试快问快答
因为self-attention是位置无关的,无论句子的顺序是什么样的,通过self-attention计算的token的hidden embedding都是一样的,这显然不符合人类的思维。那么至于为什么需要用维度开根号,假设向量q,k满足各分量独立同分布,均值为0,方差为1,那么qk点积均值为0,方差为dk,从统计学计算,若果让qk点积的方差控制在1,需要将其除以dk的平方根,是的softmax更加平滑。在效果上来说,从实验分析,两者的效果和dk相关,dk越大,加法的效果越显著。原创 2024-12-22 12:11:17 · 201 阅读 · 0 评论 -
MoE经典论文简述
以上总结了一下笔者在阅读 MoE 相关文献时印象较深的几篇文章,上述所阅读的文献主要与NLP相关的,其实 MoE 在各个领域中的应用已经十分广泛。比如Google提出的多模态MoE模型——LIMoE:另外,跟 MoE 的理念相关的还有很多有趣的工作,比如:MoE 的思想,其实十分符合 Google 提出的 Pathways 愿景,也更加符合通用人工智能的设计理念。虽然目前 MoE 的工作,多数都是开发“超级模型”,但是上面列举的一些工作也表明 MoE 的用途还有很多,可以启发很多方向上方法的改进。原创 2024-12-27 14:52:23 · 619 阅读 · 0 评论 -
各种normalization
RMS具有线性特征,所以提出可以用部分数据的RMSNorm来代替全部的计算,pRMSNorm表示使用前p%的数据计算RMS值。k=n*p表示用于RMS计算的元素个数。实测中,使用6.25%的数据量可以收敛RMS‾a1k∑i1kai2RMSak1i1∑kai2。原创 2025-01-04 23:07:17 · 85 阅读 · 0 评论 -
大模型面试之手写RMSNorm
RMSNorm 是 LayerNorm 的轻量级替代方案,只基于平方均值进行归一化,不减去均值。它计算更快、内存更省,在现代大语言模型中被广泛采用。实现上只需计算xEx2ϵE[(x2)]ϵx,再乘以可学习的 gamma。是理解现代 Transformer 架构优化的重要组件之一。原创 2025-10-26 10:58:11 · 80 阅读 · 0 评论 -
LLM MoE :Switch Transformers
GPT-4远不止1万亿,甚至,还是8个2200亿参数组成的混合专家模型(MoE)。2023年6月,美国知名骇客George Hotz在接受采访时透露,GPT-4由8个220B模型组成。这么算来,8 x 220B = 1.76万亿。就连PyTorch的创建者Soumith Chintala对此也深信不疑。MoE 应用于大模型,GPT-4并不是第一个。原创 2025-01-09 21:38:28 · 168 阅读 · 0 评论 -
位置编码综述
绝对位置编码最原始的正余弦位置编码(即sinusoidal位置编码)是一种绝对位置编码,但从其原理中的正余弦的和差化积公式来看,引入的其实也是相对位置编码。优势: 实现简单,可预先计算好,不用参与训练,速度快。劣势:没有外推性,即如果预训练最大长度为512的话,那么最多就只能处理长度为512的句子,再长就处理不了了。当然,也可以将超过512的位置向量随机初始化,然后继续微调。相对位置编码优势: 直接地体现了相对位置信号,效果更好。具有外推性,处理长文本能力更强。RoPE。原创 2025-01-13 15:05:19 · 309 阅读 · 0 评论 -
tokenize分词
在使用GPT,BERT等模型输入词语常常会先进行tokenize ,tokenize的目标是把输入的文本流,切分成一个个子串,每个子串相对有完整的语义,便于学习embedding表达和后续模型的使用。tokenize有三种粒度:word/subword/char。原创 2025-01-14 20:29:13 · 125 阅读 · 0 评论 -
token及模型参数
根据前面的实验我们知道,如果在tokens数量一定的数据集上做多epochs的模型训练,会影响模型的性能,降低模型的效果。这在预训练和下游任务都会产生影响。但是,随着模型的发展,高质量数据集的tokens数将很快用完。而采用正则技术虽然会影响模型训练效率,但是会降低这种影响。原创 2025-01-15 14:38:36 · 284 阅读 · 0 评论 -
大模型常用激活函数
GeLU(Gaussian Error Linear Unit)是一种激活函数,常用于神经网络中的非线性变换。它在Transformer模型中广泛应用于FFN(Feed-Forward Network)块。下面是 GeLU 的计算公式。假设输入是一个标量xxxGeLUx0.5×x×1tanh2π×x0.044715×x3GeLUx0.5×x×1tanhπ2×x0.044715×x3)))原创 2025-01-15 15:21:42 · 172 阅读 · 0 评论 -
BERT详解
当输入信息的维度 d 比较高,点积模型的值通常有比较大的方差,从而导致 softmax函数的梯度会比较小。因此,缩放点积模型可以较好地解决这一问题。常用的Attention机制为加性模型和点积模型,理论上加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高(实际上,随着维度d的增大,加性模型会明显好于点积模型)。参考:详解加性注意力和缩放点积注意力。原创 2025-01-17 12:57:55 · 476 阅读 · 0 评论 -
llama 2代码详解
因为ChatGPT3.5/4没有开源,所以本文选择MetaAI半开源的LLM模型Llama2,该模型也是HuggingFaceopen_llm_leaderboard的榜首模型。所谓半开源即只有inference过程没有train过程。原创 2025-01-20 13:46:30 · 990 阅读 · 0 评论 -
llama 3 笔记
llama 3 是在 15 万亿个 Token 上预训练的语言模型,具有 8B 和 70B 两种参数规模,可以支持广泛的用户场景,在各种行业基准上取得了最先进的性能,并提供了一些新功能,包括改进的推理能力。原创 2025-01-20 21:36:47 · 346 阅读 · 0 评论 -
解码策略(Top-k & Top-p & Temperature)
在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。一般给模型传入的解码参数如下所示。在自然语言任务中,通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。原创 2025-01-22 17:06:07 · 351 阅读 · 0 评论 -
大模型训练 && 微调数据格式
在这个示例中,(1代表正例,0代表负例)。每一行代表一个样本,第一列是输入数据,第二列是对应的标签。需要注意的是,具体的数据集格式可能会因任务类型、数据来源和使用的深度学习框架而有所不同。因此,在进行SFT训练时,建议根据具体任务和框架的要求来定义和处理数据集格式。原创 2025-01-22 19:27:10 · 817 阅读 · 0 评论 -
分布式训练之显存问题
大模型也分为不同的规格,一般模型的规格会体现在模型的名称上,例如 LLaMA2-13b,13b 就是其模型参数量的大小,意思是 130亿的参数量。一般来说推理模型需要的显存约等于模型文件大小,全参训练需要的显存约为推理所需显存的三倍到四倍,正常来说,在不量化的情况下4张 v100 显卡推理 65b 的模型都会有一些吃力,无法进行训练,需要通过 LoRA 或者QLoRA 采用低秩分解的方式才可以训练。用于近似 FP32 精度下任务的专有格式,实际上约等于 FP19 也就是19位。原创 2025-01-22 20:55:34 · 245 阅读 · 0 评论 -
分布式训练概述
数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将被全部减少,以便在不同设备上的模型参数能够保持同步。典型的数据并行实现:PyTorch DDP。原创 2025-01-24 10:08:33 · 342 阅读 · 0 评论 -
分布式训练之数据并行
本文主要讲解了大模型分布式训练并行技术的数据并行,并以Pytorch为主线讲解了DP、DDP、FSDP三种不同的数据并行方案。单进程多线程模式,由于锁的机制导致线程间同步存在瓶颈。使用普通的All-Reduce机制,所有的卡需要将梯度同步给0号节点,并由0号节点平均梯度后反向传播,再分发给所有其他节点,意味着0号节点负载很重。由于第二点的原因,导致0号GPU通讯成本是随着GPU数量的上升而线性上升的。不支持多机多卡。目前,由于性能问题,DP基本不用了。原创 2025-01-24 10:28:30 · 118 阅读 · 0 评论 -
分布式训练之流水线并行
所谓流水线并行,就是由于模型太大,无法将整个模型放置到单张GPU卡中;因此,将模型的不同层放置到不同的计算设备,降低单个计算设备的显存消耗,从而实现超大规模模型训练。如下图所示,模型共包含四个模型层(如:Transformer层),被切分为三个部分,分别放置到三个不同的计算设备。即第 1 层放置到设备 0,第 2 层和第 3 层放置到设备 1,第 4 层放置到设备 2。相邻设备间通过通信链路传输数据。原创 2025-01-26 10:05:06 · 218 阅读 · 0 评论 -
分布式训练之张量并行
本文主要针对 Megatron-LM 和 Colossal-AI 的张量并行方案进行了讲解。其中,Megatron-LM 提出了一种高效的一维(1D)张量并行化实现。这种方法虽然将参数划分到多个处理器上,但每个处理器仍需要存储整个中间激活,在处理大模型时会消耗大量的显存空间。此外,由于仅采用1维矩阵划分,在每次计算中,每个处理器都需要与其他所有处理器进行通信;因此,通信成本会随并行度增高而激增。显然,1维张量并行已无法满足当前超大AI模型的需求。原创 2025-01-26 10:05:58 · 277 阅读 · 0 评论 -
分布式训练之常见考题
点对点通信(Peer-to-Peer Communication)是一种网络通信模式,其中两个或多个计算机或设备之间直接进行通信,而不需要通过中央服务器或集中式系统。在点对点通信中,每个参与者都可以充当客户端和服务器,能够直接与其他节点通信、交换信息或共享资源。这种通信模式与传统的客户端-服务器模型不同,后者在网络中有一个中心服务器负责处理和转发所有请求和数据。而点对点通信模式中,参与者之间能够直接建立连接,相互传输信息或资源,使得网络更为分散和去中心化。原创 2025-02-08 15:14:07 · 119 阅读 · 0 评论 -
大模型参数高效微调之基本概念
这样,模型就可以适应新的任务,计算开销更少,标记的例子也更少。尽管PEFT是一个相对较新的概念,但自从引入迁移学习以来,更新最后一层模型已经在计算机视觉领域得到了实践。即使在NLP中,静态和非静态词嵌入的实验也很早就进行了。参数高效微调旨在提高预训练模型(如BERT和RoBERTa)在各种下游任务上的性能,包括情感分析、命名实体识别和问答。它在数据和计算资源有限的低资源设置中实现了这一点。它只修改模型参数的一小部分,并且不容易过度拟合。参数高效的微调。原创 2025-02-08 17:00:19 · 259 阅读 · 0 评论 -
大模型参数高效微调之实操指南
需要注意的是,微调需要在预训练模型的基础上进行,因此你需要首先选择适合你任务的预训练模型,如BERT、GPT等,然后使用特定领域的数据进行微调。微调过程中,可以根据任务需求和数据情况,调整微调的超参数,如学习率、微调步数等。,预训练的模型通过在特定任务上使用带标注的数据进行微调,以适应具体任务的要求。在微调过程中,模型通过接触任务特定的数据和标签,进一步调整和优化模型的参数,使其更好地适应任务的特定特征和要求。通过合适的方法和技术,可以减少灾难性遗忘的发生,保留之前学习到的知识,提高模型的整体性能。原创 2025-02-10 10:16:17 · 516 阅读 · 0 评论 -
大模型参数高效微调之prompting
并且不需要加入 MLP 进行调整来解决难训练的问题。通过实验发现,随着预训练模型参数量的增加,Prompt Tuning的方法会逼近全参数微调的结果。同时,Prompt Tuning 还提出了 Prompt Ensembling,也就是。原创 2025-02-10 16:09:09 · 91 阅读 · 0 评论 -
大模型参数高效微调之增量预训练
所以要想大模型有领域知识,得增量预训练(靠指令微调记知识不靠谱,不是几十w条数据能做到的)。原创 2025-02-11 12:47:32 · 242 阅读 · 0 评论 -
大模型参数高效微调之Adapter Tuning及其变体
首先,作者通过对Prefix Tuning变换,发现Prefix Tuning和Adapters的公式高度相似。然后,分析不同微调方法的内部结构和结构插入形式的相似之处。下图展示了高效微调方法Adapter、Prefix Tuning、LoRA以及新变体(通过更换一些元素,设计了前人的工作里没有的变体) Parallel Adapter、 Scaled PA的结构。原创 2025-02-11 12:47:55 · 204 阅读 · 0 评论 -
大模型参数高效微调之lora
神经网络包含很多全连接层,其借助于矩阵乘法得以实现,然而,很多全连接层的权重矩阵都是满秩的。当针对特定任务进行微调后,(intrinsic rank),因此,论文的作者认为。原创 2025-02-12 15:50:59 · 350 阅读 · 0 评论 -
大模型参数高效微调之总结
增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体。选取一部分参数更新,如:BitFit。引入重参数化,如:LoRA、AdaLoRA、QLoRA。混合高效微调,如:MAM Adapter、UniPELT。并比较了不同的高效微调方法之间的差异;同时,还指出当前大多数高效微调方法存在的一些问题并给出了最佳实践。原创 2025-02-12 16:16:08 · 604 阅读 · 0 评论 -
大模型幻觉
在语言模型的背景下,幻觉指的是一本正经的胡说八道:看似流畅自然的表述,实则不符合事实或者是错误的。幻觉现象的存在严重影响LLM应用的可靠性,本文将探讨大型语言模型(LLMs)的幻觉问题,以及解决幻觉现象的一些常见方法。原创 2025-02-20 19:03:05 · 262 阅读 · 0 评论 -
RAG的基本概念
在检索阶段,既可以从根节点向下进行遍历,也可以直接利用根节点的信息。原创 2025-02-14 09:52:34 · 103 阅读 · 0 评论 -
PPO论文阅读
我们提出了一类新的强化学习策略梯度方法,该方法在与环境交互采样数据与使用随机梯度上升法优化一个“代理(surrogate)目标函数”之间交替进行。传统的策略梯度方法通常对每个采样的数据样本仅执行一次梯度更新,而我们提出了一种新的目标函数,使得算法能够对同一批数据进行多轮(多 epoch)小批量(minibatch)更新。这种新方法被称为 近端策略优化(Proximal Policy Optimization,PPO)。原创 2025-10-15 19:53:35 · 123 阅读 · 0 评论 -
GAE 广义优势函数
论文链接GAE主要借鉴了 λ\lambdaλ-return 的思想,将其运用到了优势函数的估计中。策略梯度的表达形式有很多,如下:g=E[∑t=0∞Ψt∇θlogπθ(at∣st)]g = \mathbb{E} \left[ \sum_{t=0}^{\infty} \Psi_t \nabla_{\theta} \log \pi_{\theta}(a_t \mid s_t) \right]g=E[t=0∑∞Ψt∇θlogπθ(at∣st)]其中,Ψt\Psi_tΨt 有六种表现形式:其中原创 2025-10-15 13:07:50 · 159 阅读 · 0 评论
分享