这些聪明表现的背后,得益于大语言模型(LLM)的两个关键训练阶段:预训练(Pretraining)和后训练(Post-training)。 预训练阶段通过海量文本数据(通常达到 TB 级别)的自我监督学习,使模型··掌握基本的语言规律和世界知识。但仅有预训练的LLM,就好像刚学会六脉神剑的段誉,一身内功,但不会施展。 这类方法通常冻结预训练模型的大部分参数,只训练少量额外的参数。 2.2.1 LoRA 系列技术 低秩适配(LoRA) 的核心思想是冻结原始参数,通过低秩分解引入可训练参数。 · 利用预训练知识:通过优化提示,引导模型利用预训练知识,从而减少对标注数据的依赖。 2)数学原理: 公式: 描述了可学习的提示向量。 强化学习:从对齐到推理 3.1 LLM推理技术全景图 3.2 奖励建模 奖励建模(Reward Modeling) 是很多 RL 方法的关键步骤之一。
LLM高性能并行训练技术### 研究背景与意义- **深度学习的重要性**:人工智能成为国际竞争焦点,深度学习是其核心技术,在众多领域取得突破,推动社会向智能化跃升。 单个 GPU 难以满足大规模模型训练需求,分布式训练面临通信和内存瓶颈。 相关技术与研究现状- **分布式训练 - **数据并行**:每个计算节点持有模型完整副本,处理小批量训练样本子集,通过 All - Reduce 或参数服务器架构实现全局梯度通信。 - **低精度训练**:用**低精度格式表示训练数据,降低内存占用提升性能**,但需引入误差补偿技术维持准确率。 混合并行训练策略 - **成本模型构建**:深入分析模型训练中层内(数据并行和模型并行)和层间(流水线并行)并行性,分别构**建前向计算与反向计算的成本模型**。
0、引言 大语言模型(Large Language Model, LLM)的训练是人工智能领域最复杂、最资源密集的任务之一。 • 能力的源泉:模型的所有能力都来自于训练过程中对数据的学习和参数的优化 • 性能的决定因素:训练质量直接决定了模型在各种任务上的表现 • 成本的主要构成:训练成本占据了LLM开发总成本的70%以上 • 技术的核心壁垒:高效的训练技术是各大AI公司的核心竞争力 本文将从技术原理、实践方法、挑战难点等多个维度,全面解析LLM模型训练的核心技术。 1、LLM 训练基本流程 整体训练管道 阶段一:预训练(Pre-training) 核心目标 技术特点 1、学习通用语言表示2、掌握基础语言模式3、建立世界知识基础4、形成语言生成能力 1、自监督学习方式 训练 高(2倍参数量) AdamW Adam + 权重衰减解耦 主流LLM优化器 高 Lion 符号操作,内存友好 资源受限场景 中等 LOMO 低内存优化 消费级硬件训练 很低 数据处理技术 3、模型训练方案分析
随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调等方法也在不断更新。下面笔者根据资料整理一些关于大模型训练常见概念解释。 2 Post-training(后训练) 后训练是指在预训练模型的基础上,针对特定的任务或数据集进行额外的训练。 3 Continue Training(持续训练) 持续训练是指在模型已经进行了预训练和可能的后训练之后,继续在新数据上进行训练,以不断更新和改进模型的性能。 可能在模型部署后的任何阶段进行。 持续训练是指在模型已经进行了预训练和可能的后训练之后,继续在新数据上进行训练,以不断更新和改进模型的性能。 8 PT、SFT 在大模型领域,PT和SFT分别代表预训练(Pre-training)和监督微调(Supervised Fine-tuning)。
训练命令如下: ! (PreTrainedModel),以便进行 低比特(k-bit)量化训练 或其他特定情况下的训练。 这是低比特量化训练常见的步骤,用于只训练部分特定参数。 非量化模型处理: 如果模型未被量化,所有的非 INT8 参数(比如 FP16 或 BF16)都会被强制转换为 FP32。 这是为了确保数值稳定性,特别是在低精度下训练时。 使用场景: 这个函数特别适用于以下情境: 使用低比特(如 8-bit 或 4-bit)的模型进行训练。 微调大模型时希望通过梯度检查点功能减少显存消耗。
3、语言模型训练数据 数据质量对模型影响非常大。 典型数据处理:质量过滤、冗余去除、隐私消除、词元切分等。 训练数据的构建时间、噪音或有害信息情况、数据重复率等因素都对模型性能有较大影响。 检查点是模型在训练或生成过程中的某个时间点的保存状态,通常包括模型的权重参数和其他相关信息,以便稍后能够重新加载模型并继续训练或进行推理。 通常,few-shot learning 指的是模型在少于常规训练所需数量的样本上进行训练。这可以包括几个样本(通常小于10个)或更多,但总体上比传统的大规模训练数据要少。 思维树(Tree of Thoughts, ToT):ToT提示是一种允许复杂的、多步骤问题通过LLM来解决的方法。 人类反馈训练:人类反馈的强化学习(RLHF)
准备完模型和训练数据后,我们可以开始计算损失函数,并开始训练。
FP32; DeepSpeed分布式训练 :ZeRO-1、ZeRO-2、ZeRO-3; Torch FSDP + CPU Offloading ; 3D并行 ; INT8模型量化 :对称/非对称量化 关于3D并行的方法可参考文献:一文捋顺千亿模型训练技术:流水线并行、张量并行和3D并行[7] 六、INT8量化 深度学习模型量化是一个面向模型参数的显存优化技术,其与FP16比较类似,都是为了损失一些精度来降低空间 将一个FP32(单精度4字节)的float类型数据转换为INT8。由于INT8只有-127~127,因此可以通过对FP32值乘以一个量化因子,将浮点数转换为整型数。 量化感知训练(Quantization-aware Training) 上述讲到的是模型推理过程中使用INT8量化,可以加速推理速度。INT8依然也可以用在训练过程中。 相关文献: 量化 | 深度学习Int8的部署推理原理和经验验证[8] Int8量化-介绍(一)[9] 其他常用的量化方法: PACT:https://arxiv.org/abs/1805.06085v2
其核心优势在于并行计算和长距离依赖捕捉,成为大语言模型(LLM)的基石。而注意力机制是基石的基石。核心组件包括查询(Query)、键(Key)、值(Value)三个权重矩阵。 # In practice, this is not a problem since the LLM (chapters 4-7) ensures that inputs # In practice, this is not a problem since the LLM (chapters 4-7) ensures that inputs
训练完后的模型如何给业务用呢?需要把模型的参数保存下来,给业务用,下次加载出来就可以了。 训练完模型后,我们使用训练好的模型来进行一次文本推理 inference_device = torch.device("cpu") model.to(inference_device) model.eval
655006628 后台留言『交流』,加入 NewBee算法讨论组 最近国产大模型一群神仙打架,各个榜刷的分越来越高了,聊一下基于1.3b的模型的一些实验结论,抛个砖希望对开源社区有帮助 一、LLama llama训练了 1T的token(更大的尺寸模型训练了1.4T),除此之外还需要模型结构和超参数配合才能继续训练这么长时间。 在一开始训练的时候,大部分的token对模型来说都是未知的,所以参数能快速的更新,但是训练的时间越久,每个batch都需要包含对模型来说陌生的多样化数据,所以batch size很大。 二、AliBi position encoding 最早的Transformer使用绝对位置编码,这意味着2048个位置都有自己的可训练向量。 之前尝试过使用别的方式代替可训练参数,效果也很好,说明这里可能确实不需要可训练参数。
前面我们介绍了构建LLM的完整流程,现在我们将所有流程串接起来,并开始训练整个模型。 # In practice, this is not a problem since the LLM (chapters 4-7) ensures that inputs
然后正则化,对模型输出的最终特征进行归一化处理,通过调整输入分布(均值为0,方差为1)加速收敛,提升模型训练稳定性。 max_new_tokens): # Crop current context if it exceeds the supported context size # E.g., if LLM 但是其中有一个问题还没有解决,那就是如何训练模型,得到模型参数。我们下一章进行分解。
一,分类模型的训练 ? ? ? ? ? ? ? ? ? 二,回归模型的训练 ? ? ? ? ? ? ? ? 三,聚类模型的训练 KMeans算法的基本思想如下: 随机选择K个点作为初始质心 While 簇发生变化或小于最大迭代次数: 将每个点指派到最近的质心,形成K个簇 重新计算每个簇的质心 ? 四,降维模型的训练 PCA主成分分析(Principal Components Analysis)是最常使用的降维算法,其基本思想如下: 将原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合 五,管道Pipeline的训练 使用管道可以减少训练步骤 有时候,我们可以用管道Pipeline把多个估计器estimater串联起来一次性训练数据。
训练耗时:训练阶段的文本长度会显著影响训练速度, 因此2048一般是当前预训练常见的最大长度。 图片 位置编码的外推性: 这里的外推性是指推理长度超过训练长度。 包括推理会出现没训练过的位置编码,以及注意力机制需要处理比训练更长的输入。 《NBCE:使用朴素贝叶斯扩展LLM的Context处理长度 》Blog post. Retrieved from https://spaces.ac.cn/archives/9617 苏剑林. 我在论文,书籍,和新闻上进行摘要,实体抽取和QA问答后发现,INT8量化的模型效果似乎要略优于FP16, 显著优于INT4。 INT8量化下,10K左右的输入,显存占用基本可以限制在单卡A100(40g),大家可以自行尝试下~ @torch.inference_mode() def generate(max_tokens):
(3)词表中的低频词/稀疏词在模型训练过程中无法得到充分训练,进而模型不能充分理解这些词的语义。 '9', '*', '8', '6', '7', '$'] 3.5 HuggingFace Tokenizers HuggingFace的Tokenizers也实现了分词算法,具体使用可以参考如下 LLM分词器 SentencePiece的核心参数如下: """ sentencepiece 参数 trainer_spec { input: data/corpus.txt input_format /usr/bin/env python # -*- coding:utf-8 _*- """ @author:quincy qiang @license: Apache Licence @file: step4 词表大小,词表大小应该是和语料大小去匹配的,具体设置我们可以参考下ChatGLM、和一些Chinese-LLaMA模型,像ChatGLM词表大小有13万,其他Chinese-LLaMA模型基本上在5万-8万左右
大规模语言模型的后训练一直是个让人头疼的事情——要么资源不够,要么效率太低。SAPO提出了一种去中心化的异步RL方案,让各个计算节点之间可以互相分享rollouts,避开了传统并行化训练的各种瓶颈。 训练流程看起来是这样的:每轮训练中,节点先采样一批任务,生成对应的rollouts,然后把其中一部分(连同元数据和标准答案)分享给整个网络。 训练集构建完成后,用本地的奖励模型计算分数,再用PPO或GRPO这类策略梯度方法更新模型。整个过程循环往复。 实验中设定了九个不同的专业方向,每个智能体每轮在每个方向上都会拿到一道题,然后生成8个候选答案。 策略更新用的是GRPO,没有加KL惩罚项。 比如Qwen2.5(0.5B参数),在175轮训练后的表现明显超过单机训练。但对于Qwen3(0.6B参数)这样的大模型,改善就不太明显了。
【GiantPandaCV导读】本文聊了两篇做INT8量化训练的文章,量化训练说的与quantization-aware Training有区别,量化训练指的是在模型训练的前向传播和后向传播都有INT8 两篇文章都是基于对梯度构建分析方程求解得到解决量化训练会引起的训练崩溃和精度损失严重的情况。 而量化训练则是在前向传播和后向传播都加入量化,而且做完矩阵运算再把运算的结果反量化回去浮点数。 Pytorch实现卷积神经网络训练量化(QAT) 一、Distribution Adaptive INT8 ? 知乎链接: (量化 | INT8量化训练)https://zhuanlan.zhihu.com/p/364782854
【导读】本文聊了两篇做INT8量化训练的文章,量化训练说的与quantization-aware Training有区别,量化训练指的是在模型训练的前向传播和后向传播都有INT8量化。 两篇文章都是基于对梯度构建分析方程求解得到解决量化训练会引起的训练崩溃和精度损失严重的情况。 而量化训练则是在前向传播和后向传播都加入量化,而且做完矩阵运算再把运算的结果反量化回去浮点数。 Pytorch实现卷积神经网络训练量化(QAT) 一、Distribution Adaptive INT8 文章的核心idea是:Unified INT8发现梯度的分布不遵从一个分布即不能像权重一样归于高斯分布 整个pipeline: SpeedUp: 这里有个重要的cuda层的优化: 实验: 知乎链接: 量化 | INT8量化训练 首发于GaintPandaCV,未经允许,不许转载
基于LLM的agent可以利用LLM对问题进行推理,制定解决问题的计划,然后利用各种工具执行复杂的任务。 但是种方法可能不适合为训练代理生成高质量的注释。 所以LUMOS将llm被用作“风格转移”工具,将现有基准中的真值推理步骤转换为LUMOS公式中的预期格式。 有了这些参考,llm可以根据给定的动作接口总结高级子目标并合成相应的动作。为llm提供了如何从推理步骤中提取高级子目标并将其映射为相应行动的示例。最后将注释组织成响应输出。 在数学任务上,如GSM8K[3]和SVAMP[4],比2 - 4倍大的语言代理实现更好的性能 在A-OKVQA[5]和ScienceQA(IMG)[6]上的准确率优于基于GPT的代理和开源代理。 在StrategyQA[7]和HotpotQA[8]数据集上,基于gpt -4/3.5的代理在复杂QA上的表现优于基于gpt -4/3.5的代理。