comli_cn
算法工程师,微信公众号:李歪理
展开
-
分布式训练之序列并行
总的来说,Colossal-AI 的序列并行是为了打破单设备上序列长度的限制。而 Megatron-LM 的序列并行是在显存上面下了功夫,可以用更少的设备去运行大模型。除此之外,从文章细节里面可以看到,部分的计算的冗余被消除了,且重叠了一部分的通信,使得设备可以花更多的时间用于计算上面。虽然,Colossal-AI 和 Megatron-LM 都有序列并行,但是两者解决的问题、方法都不一样。除此之外,在Pytorch中,也已经支持序列并行了。原创 2025-04-08 10:46:38 · 10 阅读 · 0 评论 -
DAPO算法详解
微信公众号:李歪理。原创 2025-03-27 21:18:33 · 35 阅读 · 0 评论 -
大模型显存如何估算?
一般会分成两种情况:推理和训练。推理时,我们主要考虑模型权重、KV 缓存和激活显存。而训练相比推理,还需要额外存储优化器状态和梯度,显存需求会更高。原创 2025-03-12 21:28:27 · 79 阅读 · 0 评论 -
大模型之数值精度
FP16 也叫做 float16,两种叫法是完全一样的,全称是 Half-precision floating-point(半精度浮点数),在 IEEE 754 标准中是叫做 binary16。简单来说是用 16 位二进制来表示的浮点数,来看一下是怎么表示的(以下图都来源于维基百科):其中:所以正常情况下计算公式就是:举一个例子来计算,这个是 FP16(float16) 能表示的最大的正数:同样,这个是 FP16(float16) 能表示的最大的负数:这就是 FP16(float16) 表示的范围原创 2025-03-10 21:19:10 · 38 阅读 · 0 评论 -
大模型推理之常见问题
具体来说,INT8在相同的内存空间下可以存储更多的数据,从而可以在相同的计算资源下进行更多的并行计算。需要注意的是,推理速度还受到模型大小、输入数据大小、计算操作的复杂度以及硬件设备的性能等因素的影响。一般情况下,GPU在进行深度学习推理任务时具有更高的计算性能,因此大语言模型在GPU上的推理速度通常会比在CPU上更快。综上所述,使用INT8和FP16数据类型可以在大语言模型的推理过程中提高推理速度,但需要根据具体场景和硬件设备的支持情况进行评估和选择。在大语言模型的推理速度上,使用。原创 2025-03-10 17:42:02 · 66 阅读 · 0 评论 -
大模型推理之vllm
vLLM是一个大模型推理服务框架,声称觉得有意思的东西其实主要是两个,continus batching和PagedAttention。原创 2025-03-10 10:07:52 · 144 阅读 · 0 评论 -
强化学习之GRPO
GRPO是PPO的优化版本,专门设计用于数学推理任务。关键创新:不使用价值模型,而是用群体奖励基线计算优势函数。优势:计算更高效、收敛更稳定、适用于数学和语言任务。在DeepSeekMath-RL上的成功应用:帮助模型取得了最先进的数学推理能力,超越所有开源对手。GRPO的成功表明,强化学习方法可以在数学推理中大幅提高模型表现,而不需要庞大的计算资源,这是LLM优化的重要突破。原创 2025-03-03 15:14:18 · 1077 阅读 · 0 评论 -
强化学习之KTO
在前景理论中,人类的效用函数由两个部分组成:价值函数(value function)和加权函数(weighting function)。论文关注的主要是价值函数,它描述了相对某一参考点的结果对人类的主观价值的影响。公式如下:zz0α0α1α≃0.88λλ1λ≃2.25看收益区域z≥z0时的函数:计算二阶导数:由于0α1,所以α−10,因此dz2d2v0,说明函数是凹的(concave)。zvz看损失区域zz0。原创 2025-02-25 13:42:04 · 597 阅读 · 0 评论 -
常见的蒸馏技术
其主要的想法是:学生模型通过模仿教师模型来获得和教师模型相当的精度,关键问题是如何将教师模型的知识迁移到学生模型。是教师模型的 logits 输出,在训练学生模型时,需对学生模型的输出应用与教师模型相同的温度调整,随后通过一个损失函数来评估学生模型输出与教师模型输出之间的差异。通过这种训练方式,学生模型不仅能够汲取教师模型的知识,还能保持良好的对真实标签的拟合能力,进而在实际应用中展现出优异的性能。通过最小化这个损失函数,学生模型可以逐渐学习到教师模型的概率分布,从而获得教师模型的知识。原创 2025-02-28 13:33:09 · 82 阅读 · 0 评论 -
大模型幻觉
在语言模型的背景下,幻觉指的是一本正经的胡说八道:看似流畅自然的表述,实则不符合事实或者是错误的。幻觉现象的存在严重影响LLM应用的可靠性,本文将探讨大型语言模型(LLMs)的幻觉问题,以及解决幻觉现象的一些常见方法。原创 2025-02-20 19:03:05 · 64 阅读 · 0 评论 -
强化学习之DPO
基于人类反馈的强化学习(RLHF) 是一个复杂且不稳定的过程,拟合一个反映人类偏好的奖励模型,然后使用强化学习对大语言模型进行微调,以最大限度地提高估计奖励,同时又不能偏离原始模型太远。这涉及训练多个 LM,并在训练循环中从 LM 采样,从而产生大量的计算成本。本文作者提出了直接偏好优化(DPO)算法,它稳定、高效且计算量轻,无需拟合奖励模型,也无需在微调期间从LM采样或执行显著的超参数调整。实验表明,DPO 可以微调 LMs,使其与人类偏好保持一致,与现有方法一样或更好。原创 2025-02-19 10:53:01 · 118 阅读 · 0 评论 -
强化学习之PPO原理与源码解读
智能体(Agent)与环境(Environment)状态空间S:S即为State,指环境中所有可能状态的集合动作空间A:A即为Action,指智能体所有可能动作的集合奖励R:R即为Reward,指智能体在环境的某一状态下所获得的奖励。在ttt时刻,环境的状态为StS_tSt,达到这一状态所获得的奖励为RtR_tRt智能体观测到StS_tSt与RtR_tRt,采取相应动作AtA_tAt智能体采取AtA_tAt后,环境状态变为St1。原创 2025-02-19 19:28:58 · 67 阅读 · 0 评论 -
强化学习之RLHF
强化学习(Reinforcement Learning,RL)研究的问题是智能体(Agent)与环境(Environment)交互的问题,其目标是使智能体在复杂且不确定的环境中最大化奖励(Reward)。强化学习基本框 架如图所示,主要由两部分组成:智能体和环境。在强化学习过程中,智能体与环境不断交互。智能体在环境中获取某个状态后,会根据该状态输出一个动作(Action),也称为决策(Decision)。动作会在环境中执行,环境会根据智能体采取的动作,给出下一个状态以及当前动作所带来的奖 励。原创 2025-02-14 13:36:18 · 35 阅读 · 0 评论 -
RAG的基本概念
在检索阶段,既可以从根节点向下进行遍历,也可以直接利用根节点的信息。原创 2025-02-14 09:52:34 · 38 阅读 · 0 评论 -
大模型参数高效微调之总结
增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体。选取一部分参数更新,如:BitFit。引入重参数化,如:LoRA、AdaLoRA、QLoRA。混合高效微调,如:MAM Adapter、UniPELT。并比较了不同的高效微调方法之间的差异;同时,还指出当前大多数高效微调方法存在的一些问题并给出了最佳实践。原创 2025-02-12 16:16:08 · 466 阅读 · 0 评论 -
大模型参数高效微调之lora
神经网络包含很多全连接层,其借助于矩阵乘法得以实现,然而,很多全连接层的权重矩阵都是满秩的。当针对特定任务进行微调后,(intrinsic rank),因此,论文的作者认为。原创 2025-02-12 15:50:59 · 245 阅读 · 0 评论 -
大模型参数高效微调之Adapter Tuning及其变体
首先,作者通过对Prefix Tuning变换,发现Prefix Tuning和Adapters的公式高度相似。然后,分析不同微调方法的内部结构和结构插入形式的相似之处。下图展示了高效微调方法Adapter、Prefix Tuning、LoRA以及新变体(通过更换一些元素,设计了前人的工作里没有的变体) Parallel Adapter、 Scaled PA的结构。原创 2025-02-11 12:47:55 · 32 阅读 · 0 评论 -
大模型参数高效微调之增量预训练
所以要想大模型有领域知识,得增量预训练(靠指令微调记知识不靠谱,不是几十w条数据能做到的)。原创 2025-02-11 12:47:32 · 68 阅读 · 0 评论 -
大模型参数高效微调之prompting
并且不需要加入 MLP 进行调整来解决难训练的问题。通过实验发现,随着预训练模型参数量的增加,Prompt Tuning的方法会逼近全参数微调的结果。同时,Prompt Tuning 还提出了 Prompt Ensembling,也就是。原创 2025-02-10 16:09:09 · 27 阅读 · 0 评论 -
大模型参数高效微调之实操指南
需要注意的是,微调需要在预训练模型的基础上进行,因此你需要首先选择适合你任务的预训练模型,如BERT、GPT等,然后使用特定领域的数据进行微调。微调过程中,可以根据任务需求和数据情况,调整微调的超参数,如学习率、微调步数等。,预训练的模型通过在特定任务上使用带标注的数据进行微调,以适应具体任务的要求。在微调过程中,模型通过接触任务特定的数据和标签,进一步调整和优化模型的参数,使其更好地适应任务的特定特征和要求。通过合适的方法和技术,可以减少灾难性遗忘的发生,保留之前学习到的知识,提高模型的整体性能。原创 2025-02-10 10:16:17 · 376 阅读 · 0 评论 -
大模型参数高效微调之基本概念
这样,模型就可以适应新的任务,计算开销更少,标记的例子也更少。尽管PEFT是一个相对较新的概念,但自从引入迁移学习以来,更新最后一层模型已经在计算机视觉领域得到了实践。即使在NLP中,静态和非静态词嵌入的实验也很早就进行了。参数高效微调旨在提高预训练模型(如BERT和RoBERTa)在各种下游任务上的性能,包括情感分析、命名实体识别和问答。它在数据和计算资源有限的低资源设置中实现了这一点。它只修改模型参数的一小部分,并且不容易过度拟合。参数高效的微调。原创 2025-02-08 17:00:19 · 139 阅读 · 0 评论 -
分布式训练之常见考题
点对点通信(Peer-to-Peer Communication)是一种网络通信模式,其中两个或多个计算机或设备之间直接进行通信,而不需要通过中央服务器或集中式系统。在点对点通信中,每个参与者都可以充当客户端和服务器,能够直接与其他节点通信、交换信息或共享资源。这种通信模式与传统的客户端-服务器模型不同,后者在网络中有一个中心服务器负责处理和转发所有请求和数据。而点对点通信模式中,参与者之间能够直接建立连接,相互传输信息或资源,使得网络更为分散和去中心化。原创 2025-02-08 15:14:07 · 52 阅读 · 0 评论 -
分布式训练之张量并行
本文主要针对 Megatron-LM 和 Colossal-AI 的张量并行方案进行了讲解。其中,Megatron-LM 提出了一种高效的一维(1D)张量并行化实现。这种方法虽然将参数划分到多个处理器上,但每个处理器仍需要存储整个中间激活,在处理大模型时会消耗大量的显存空间。此外,由于仅采用1维矩阵划分,在每次计算中,每个处理器都需要与其他所有处理器进行通信;因此,通信成本会随并行度增高而激增。显然,1维张量并行已无法满足当前超大AI模型的需求。原创 2025-01-26 10:05:58 · 60 阅读 · 0 评论 -
分布式训练之流水线并行
所谓流水线并行,就是由于模型太大,无法将整个模型放置到单张GPU卡中;因此,将模型的不同层放置到不同的计算设备,降低单个计算设备的显存消耗,从而实现超大规模模型训练。如下图所示,模型共包含四个模型层(如:Transformer层),被切分为三个部分,分别放置到三个不同的计算设备。即第 1 层放置到设备 0,第 2 层和第 3 层放置到设备 1,第 4 层放置到设备 2。相邻设备间通过通信链路传输数据。原创 2025-01-26 10:05:06 · 61 阅读 · 0 评论 -
分布式训练之数据并行
本文主要讲解了大模型分布式训练并行技术的数据并行,并以Pytorch为主线讲解了DP、DDP、FSDP三种不同的数据并行方案。单进程多线程模式,由于锁的机制导致线程间同步存在瓶颈。使用普通的All-Reduce机制,所有的卡需要将梯度同步给0号节点,并由0号节点平均梯度后反向传播,再分发给所有其他节点,意味着0号节点负载很重。由于第二点的原因,导致0号GPU通讯成本是随着GPU数量的上升而线性上升的。不支持多机多卡。目前,由于性能问题,DP基本不用了。原创 2025-01-24 10:28:30 · 48 阅读 · 0 评论 -
分布式训练概述
数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将被全部减少,以便在不同设备上的模型参数能够保持同步。典型的数据并行实现:PyTorch DDP。原创 2025-01-24 10:08:33 · 294 阅读 · 0 评论 -
分布式训练之显存问题
大模型也分为不同的规格,一般模型的规格会体现在模型的名称上,例如 LLaMA2-13b,13b 就是其模型参数量的大小,意思是 130亿的参数量。一般来说推理模型需要的显存约等于模型文件大小,全参训练需要的显存约为推理所需显存的三倍到四倍,正常来说,在不量化的情况下4张 v100 显卡推理 65b 的模型都会有一些吃力,无法进行训练,需要通过 LoRA 或者QLoRA 采用低秩分解的方式才可以训练。用于近似 FP32 精度下任务的专有格式,实际上约等于 FP19 也就是19位。原创 2025-01-22 20:55:34 · 53 阅读 · 0 评论 -
大模型训练 && 微调数据格式
在这个示例中,(1代表正例,0代表负例)。每一行代表一个样本,第一列是输入数据,第二列是对应的标签。需要注意的是,具体的数据集格式可能会因任务类型、数据来源和使用的深度学习框架而有所不同。因此,在进行SFT训练时,建议根据具体任务和框架的要求来定义和处理数据集格式。原创 2025-01-22 19:27:10 · 317 阅读 · 0 评论 -
解码策略(Top-k & Top-p & Temperature)
在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。一般给模型传入的解码参数如下所示。在自然语言任务中,通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。原创 2025-01-22 17:06:07 · 277 阅读 · 0 评论 -
llama 3 笔记
llama 3 是在 15 万亿个 Token 上预训练的语言模型,具有 8B 和 70B 两种参数规模,可以支持广泛的用户场景,在各种行业基准上取得了最先进的性能,并提供了一些新功能,包括改进的推理能力。原创 2025-01-20 21:36:47 · 260 阅读 · 0 评论 -
llama 2代码详解
因为ChatGPT3.5/4没有开源,所以本文选择MetaAI半开源的LLM模型Llama2,该模型也是HuggingFaceopen_llm_leaderboard的榜首模型。所谓半开源即只有inference过程没有train过程。原创 2025-01-20 13:46:30 · 806 阅读 · 0 评论 -
BERT详解
当输入信息的维度 d 比较高,点积模型的值通常有比较大的方差,从而导致 softmax函数的梯度会比较小。因此,缩放点积模型可以较好地解决这一问题。常用的Attention机制为加性模型和点积模型,理论上加性模型和点积模型的复杂度差不多,但是点积模型在实现上可以更好地利用矩阵乘积,从而计算效率更高(实际上,随着维度d的增大,加性模型会明显好于点积模型)。参考:详解加性注意力和缩放点积注意力。原创 2025-01-17 12:57:55 · 378 阅读 · 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 · 50 阅读 · 0 评论 -
token及模型参数
根据前面的实验我们知道,如果在tokens数量一定的数据集上做多epochs的模型训练,会影响模型的性能,降低模型的效果。这在预训练和下游任务都会产生影响。但是,随着模型的发展,高质量数据集的tokens数将很快用完。而采用正则技术虽然会影响模型训练效率,但是会降低这种影响。原创 2025-01-15 14:38:36 · 103 阅读 · 0 评论 -
tokenize分词
在使用GPT,BERT等模型输入词语常常会先进行tokenize ,tokenize的目标是把输入的文本流,切分成一个个子串,每个子串相对有完整的语义,便于学习embedding表达和后续模型的使用。tokenize有三种粒度:word/subword/char。原创 2025-01-14 20:29:13 · 53 阅读 · 0 评论 -
旋转位置编码
YTXFAX)),其中A是 attention 变换,只进行了矩阵变换,跟位置无关,F是前馈网络变换,也跟位置无关。高阶语义向量不仅仅是由周围 token 的语义向量组合表达而成,还需要加上每个 token 所处的位置。比如我们在句子前面加上cls来学习整个句子的语义向量,如果没有位置编码的话下面两个句子clstoken 得到的语义向量是完全一样的。像是 RNN 和 CNN 结构天然就有序列的位置信息。原创 2024-11-03 16:23:39 · 164 阅读 · 0 评论 -
Transformer的位置编码
简单来说位置编码就是给一个句子中的每个token一个位置信息,通过位置编码可以明确token的前后顺序关系。对任何语言来说,句子中词汇的顺序和位置都是非常重要的。它们定义了语法,从而定义了句子的实际语义。RNN结构本身就涵盖了单词的顺序,RNN按顺序逐字分析句子,这就直接在处理的时候整合了文本的顺序信息。但Transformer架构抛弃了循环机制,仅采用多头自注意机制。避免了RNN较大的时间成本。并且从理论上讲,它可以捕捉句子中较长的依赖关系。原创 2023-05-06 15:19:54 · 5614 阅读 · 1 评论 -
位置编码综述
绝对位置编码最原始的正余弦位置编码(即sinusoidal位置编码)是一种绝对位置编码,但从其原理中的正余弦的和差化积公式来看,引入的其实也是相对位置编码。优势: 实现简单,可预先计算好,不用参与训练,速度快。劣势:没有外推性,即如果预训练最大长度为512的话,那么最多就只能处理长度为512的句子,再长就处理不了了。当然,也可以将超过512的位置向量随机初始化,然后继续微调。相对位置编码优势: 直接地体现了相对位置信号,效果更好。具有外推性,处理长文本能力更强。RoPE。原创 2025-01-13 15:05:19 · 184 阅读 · 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 · 61 阅读 · 0 评论 -
各种normalization
RMS具有线性特征,所以提出可以用部分数据的RMSNorm来代替全部的计算,pRMSNorm表示使用前p%的数据计算RMS值。k=n*p表示用于RMS计算的元素个数。实测中,使用6.25%的数据量可以收敛RMS‾a1k∑i1kai2RMSak1i1∑kai2。原创 2025-01-04 23:07:17 · 34 阅读 · 0 评论