程序员必看!大模型面试刷题攻略:500 + 题刷透,面试稳了》
程序员必看!大模型面试刷题攻略:500 + 题刷透,面试稳了》
一、大模型基础概念
简单介绍一下大模型
大模型通常指参数过亿的模型,标准持续升级,现已有万亿参数模型。大语言模型(LLM)是专注于语言处理的大模型。
大模型后面跟的 如5B、7B、31B 等指什么
参数数量以B(Billion)为单位,例如5B、7B、31B分别代表50亿、70亿和310亿参数。
大模型具有什么优点?
生成式AI通过预训练与微调降低标注成本,利用生成能力创造新颖内容,并借助涌现能力完成复杂推理任务,提升智能水平和应用体验。
大模型具有什么缺点?
大模型面临资源消耗高昂、数据质量与安全风险,以及可解释性、可靠性与可持续性等多重挑战。这些问题涉及经济、环境、伦理和技术层面,需多方协作以确保其健康发展。
大模型产生复读机的原因和解决方法是什么?
大型语言模型在生成过程中可能出现注意力机制跳过部分信息,导致重复预测的现象。原因包括数据偏差、训练目标限制、数据多样性不足及模型结构问题。解决方法分为训练策略(如引入重复惩罚损失)和解码策略(如集束搜索、随机采样和温度调节),以提升生成多样性和减少重复。
大模型 LLM 的训练目标是什么?
Prefix Decoder训练效率高于Causal Decoder,因其仅对输出计算损失。去噪自编码器通过恢复被替换文本段进行训练,目标函数为最大似然,实现难度较高,如GLM-130B和T5采用此方法。
说下LLM的关键参数是哪些?
LLM性能受关键参数影响:架构(如Transformer)、模型大小(决定复杂性和资源需求)、训练数据(质量与数量影响输出准确性)及超参数(指导学习过程)。理解这些参数对开发、训练和优化LLM至关重要。
LLM是如何工作的?
LLM利用词嵌入技术,通过Transformer模型中的编码器理解上下文,再由解码器根据提示生成类似人类的文本。
LLM通常是通过什么方式训练的?
LLM是一种基于Transformer架构的神经网络,拥有数十亿参数,通过大规模文本和代码数据进行训练。它通过预测序列中的下一个词来学习语言模式,并调整参数以优化预测。训练完成后,模型可针对特定任务进行微调。
简单介绍Transformer网络?
Transformer 是现代 LLM 的核心架构,由编码器和解码器组成,通过自注意力机制捕捉长距离依赖关系。输入经嵌入转换为向量,解码后生成文本输出。模型依赖大量参数学习复杂模式,但计算资源需求高。
什么是幻觉,以及如何通过提示工程加以控制?
幻觉指模型生成错误或荒谬的输出。通过提示工程可减少幻觉,方法包括:设定回答场景、明确回答类型(如事实或创意),以及提供格式引导(如多项选择)来保持回答的正确性。
涌现能力是啥原因?
任务评价指标不够平滑,复杂任务由多个子任务构成。子任务指标随模型增长平滑提升(如40%到60%),但宏观任务指标却呈现非平滑的涌现现象(如1.1%到7%),说明整体效果非子效果的简单叠加。
假设我有一个LLM模型如何根据我的需求使用数据对其进行定制?
定制大型语言模型(LLM)的四种主要架构模式包括提示工程、RAG、微调和预训练,它们互补且可结合使用。提示工程适合数据有限和资源不足的情况;RAG适用于需要更全面回答且有相关数据;微调适合高准确性需求和大数据集;预训练则适用于高度专业化场景,需大量领域数据和计算资源。
如何估算微调 LLM 的基础设施需求?
准确估算微调LLM所需基础设施需考虑模型大小、训练速度及预算。大型模型需更多GPU/TPU资源,多单元配置可加速训练。量化技术可减少计算需求,降低成本。云方案提供扩展灵活性。
使用少样本提示时需要注意哪些方面?
少样本提示通过高质量示例、明确任务定义和上下文关联,有效引导模型输出。示例需准确反映期望格式,并均衡覆盖各类别,避免偏差,确保模型专注目标。
嵌入短内容和长内容有什么区别?
短内容因信息有限,导致嵌入模型难以捕捉语义细节,易使相似性判断失真。长内容提供更丰富的上下文,有助于生成更准确的嵌入,但可能因信息过量而丢失部分细节。
在 LLM 应用中如何使用嵌入模型?
嵌入模型在LLM应用中通过将文本转换为数值表示(嵌入),帮助检索与用户查询最相关的信息。结合检索增强生成(RAG),它从知识库中提取语义相似的内容,为LLM提供上下文,从而生成更准确和丰富的回答。
如何在 LLM 中使用停止序列?
停止序列是一个特定的文本字符串,用于指示LLM在遇到它时停止生成文本,从而为输出定义明确的终点,实现更专注和受控的结果。
如何写出高质量的提示?
提供明确指令和背景,使用有力动词引导,保持简洁以避免信息过载。
如何在不同层面控制 LLM 的幻觉?
控制LLM幻觉可从三方面入手:优化训练数据质量与来源;通过提示工程和参数调整改进生成过程;利用一致性检查和自一致性技术对输出进行后处理验证。
如何提高 LLM 的准确性和可靠性,并使其回答可验证?
提升LLM准确性和可靠性的方法包括:利用LLM辅助检索生成回答并验证支持文档;通过提示工程优化提问方式;集成事实核查API与现实数据对比;采用验证-更新循环迭代优化结果;调整模型参数和控制机制以控制生成过程。这些方法共同增强输出的可验证性和可信度。
如何写出高质量的提示?
提供具体指令和背景,使用强动词引导,保持简洁以避免模型过载。
如何在不同层面控制 LLM 的幻觉?
控制LLM幻觉可从三方面入手:改进训练数据质量与采用少样本学习;生成过程中运用提示工程与参数调整以增强逻辑性;生成后通过一致性检查及自一致性投票技术筛选最可靠答案。
如何提高 LLM 的准确性和可靠性,并使其回答可验证?
提升LLM准确性和可靠性的方法包括:利用LLM辅助检索生成回答并验证文档;通过提示工程优化提问方式;集成事实核查API与现实数据对比;采用验证-更新循环迭代优化结果;以及调整模型参数和控制机制以控制生成过程。这些方法共同增强输出的可验证性和可信度。
如何缓解 LLM 中的灾难性遗忘?
灾难性遗忘指LLM学习新任务时遗忘旧知识。解决方法包括复习旧数据、弹性权重巩固(EWC)及引入独立模块(如ProgNet和OFELs),以扩展知识而不覆盖原有连接。
OpenAI 函数和 LangChain 函数有什么区别?
OpenAI函数提供手动控制,但开发工作量较大;LangChain函数更易用但受限于工具包和代理类型。两者在自定义程度和开发效率上各有侧重。
如何在控制成本的同时获得 LLM 系统的最佳性能和功能?
优化LLM系统成本的关键策略包括:精简提示、批量处理请求、压缩输入输出、限制对话历史长度,以及选择适合任务的模型。这些方法能在保持性能的同时显著降低成本。
如何处理 LLM 中的过拟合?
过拟合可能导致LLM输出荒谬或过度模仿训练数据。借鉴其他机器学习技术,可通过数据增强和正则化(如Dropout)来应对。数据增强扩展训练数据变体,迫使模型学习底层模式而非记忆细节;Dropout随机停用神经元,防止过度依赖单一特征,提升泛化能力。这些方法有助于训练出在新数据上表现良好的模型。
如何处理语言模型中的长期依赖关系?
语言模型中的长期依赖关系指捕捉序列中远距离单词间的关系。常用技术包括:循环神经网络(RNN)通过内部循环存储信息;长短期记忆网络(LSTM)利用门控机制缓解梯度消失;Transformer-XL通过保留历史状态扩展上下文;注意力机制则聚焦相关部分以处理远距离依赖。
如果CoT提示失败了,你怎么改进 LLM 的推理能力?
当初始CoT提示失败时,可细化提示以解决模糊或缺失步骤,并尝试其他技巧如提供背景知识、假设或多角度分析。结合人类反馈优化推理过程,并确保训练数据包含多样化的推理示例,以提升LLM能力。
如何处理大型语言模型中的偏见?
大型语言模型(LLM)容易从训练数据中继承偏见。应对方法包括:确保训练数据的高质量和多样性,开发训练过程中的偏见缓解技术,以及构建工具来识别和标记输出中的潜在偏见,帮助用户做出明智判断。
解释LLM文本生成中的温度概念
温度是控制语言模型输出随机性的参数。低温(<1)使输出更确定和专注,优先选择高概率标记;高温(>1)增加变异性,使概率分布更均匀,适用于创造性输出。
什么是掩码语言建模(MLM)?
MLM通过随机掩码输入文本中的标记,并利用双向上下文预测被掩码内容,从而学习语言中的双向依赖关系。例如,输入“The [MASK] is blue.”,模型预测“The sky is blue.”。该方法由BERT推广。
什么是序列到序列模型?
序列到序列模型将输入转换为输出序列,常用于机器翻译、文本摘要和问答。它由编码器(处理输入)和解码器(生成输出)组成,例如基于Transformer的T5和带注意力机制的RNN模型。
自回归模型和掩码模型有何不同
自回归模型(如GPT)逐个生成文本,适合文本生成;掩码模型(如BERT)利用双向上下文预测掩码标记,适合理解任务如分类或问答。
嵌入在LLM中扮演什么角色?
嵌入是标记的向量表示,编码语义和语法信息,将离散标记转换为连续数值以便模型处理。类型包括单词嵌入和子词嵌入。常见示例有Word2Vec、GloVe和Transformer中的嵌入。
什么是下一句预测(NSP)?
NSP是一种预训练目标,用于判断句子B是否自然接在句子A之后。例如,输入“I love books.”和“They expand my knowledge.”,模型输出True。
如何评估 LLM 的性能?
评估 LLM 性能需平衡成本、用户体验和负责任 AI。传统基准有限,需通过真实用户流量衡量人类化能力与安全性。关键指标包括 GPU 利用率、负责任 AI、延迟和实用性。A/B 测试(暗模式、影子实验等)对优化功能至关重要。
提示工程如何影响LLM输出?
提示工程通过设计清晰、具体的输入提示,引导大型语言模型(LLM)高效执行任务。它适用于零样本和少样本学习场景,强调提供上下文、结构化指令和逻辑推理策略,以提升输出精确性和模型性能。
如何减轻LLM中的灾难性遗忘?
灾难性遗忘指LLM训练新任务时丢失旧知识。缓解策略包括:复习方法(新旧数据结合再训练)、弹性权重固化(限制重要参数变化)和模块化方法(添加适配器保留核心知识)。这些技术确保模型适应新任务的同时维持原有知识。
什么是模型蒸馏,它如何应用于LLM?
模型蒸馏将大型教师模型的知识转移到更小的学生模型,通过模仿软预测和中间表示。在LLM中,它降低了计算成本,同时保持准确性,例如GPT-3的蒸馏版本可实现更快的推理。
LLM如何处理词汇表外(OOV)单词?
LLM通过子词分词技术(如BPE、WordPiece和单词语言模型)将OOV单词分解为已知子词单元(如前缀、后缀或字符对),从而确保未见过的单词也能表示为已知子词的组合。
Transformer架构如何克服Seq2Seq模型的挑战?
Transformer架构通过自注意力和位置编码替代递归机制,实现了并行处理、全局依赖捕获和长序列扩展性。它更高效,尤其适合长序列的上下文感知任务。
什么是过拟合,如何防止它?
过拟合指模型过度记忆训练数据而泛化能力下降。预防措施包括正则化、dropout、数据增强、提前停止和使用更简单模型。
什么是生成模型和判别模型?
生成模型学习数据分布以生成新样本(如GPT生成文本),而判别模型直接建模条件概率以进行分类(如BERT情感分析)。前者用于生成任务,后者用于分类任务。
GPT-4与GPT-3有何不同?
GPT-4具备多模态输入能力,可同时处理文本与图像,适用于视觉问答等任务。它拥有更大的上下文窗口,提升了处理长文本的连贯性。同时,其准确性在多方面得到增强,包括语言理解、逻辑推理和事实正确性。此外,GPT-4的多语言能力显著改善,提高了全球可访问性。
各厂家开源的Base,Chat,Instruction之间有什么区别?
Base模型通过预训练获得通用语言能力;Chat模型在Base基础上经SFT和RLHF训练,具备对话与对齐能力;Instruction模型通过指令微调专注于特定任务的高质量响应。三者分别对应通用基础、交互对话和指令执行场景。
目前主流的开源模型体系有哪些?
主流开源模型体系分为三种:Prefix Decoder(如ChatGLM,输入双向、输出单向注意力)、Causal Decoder(如LLaMA,纯单向注意力)和Encoder-Decoder(如T5,输入双向、输出单向注意力)。
prefix Decoder、causal Decoder 和 Encoder-Decoder 的区别是什么?
Prefix Decoder、Causal Decoder 和 Encoder-Decoder 的主要区别在于注意力掩码机制不同。Encoder-Decoder 采用输入双向、输出单向注意力,适用于理解型任务;Causal Decoder 是严格自回归模型,适合生成任务且训练效率高;Prefix Decoder 是前两者的折中,但训练效率较低。
LLama1, LLama2和LLama3的区别有哪些?
Llama3相比前代有显著升级:参数量最高达4000亿(训练中),词汇表扩大至128K,训练数据增至15万亿tokens,上下文长度达8K(可扩展)。采用GQA加速,训练成本大幅增长,但综合能力(MMLU、GSM8K、HumanEval)提升远超Llama2。
知识蒸馏是什么,它在 LLM 中如何使用?
知识蒸馏将大型教师模型的知识转移到小型学生模型,使其以较少资源模仿教师行为,提升部署效率。
链式思考(CoT)提示如何提高 LLM 的推理能力?
CoT提示通过引导LLM生成中间推理步骤,模拟人类思维过程,从而提升其在逻辑推理任务中的效果,尤其适用于解决复杂问题。
缩放定律分析如何帮助优化 LLM 的设计?
缩放定律揭示了模型性能随参数、数据和计算资源变化的规律,帮助开发者在模型大小、计算效率和性能之间取得最优平衡,从而开发出高效且高性能的大语言模型。
模型剪枝如何在不牺牲性能的情况下提高 LLM 的效率?
模型剪枝通过移除冗余或不重要的参数(如权重或神经元)来减小模型规模,提升计算效率,降低资源消耗,同时尽可能保持原有性能。
零样本学习是什么,它如何应用于 LLM?
零样本学习使大型语言模型(LLM)无需特定任务训练,仅通过提示中的上下文和指令,即可执行新任务,如文本分类、翻译或总结。它利用模型的广泛知识实现任务间的泛化,适应多样应用场景。
LLM 中特定任务的微调与零样本学习有何不同?
微调通过任务特定数据训练LLM,提高任务准确性和专业化,但可能降低泛化能力;而零样本学习依赖预训练知识,通用性强但精确性较低。
梯度检查点如何减少大型 LLM 训练中的内存使用?
梯度检查点是一种通过选择性重计算激活值来节省内存的技术,它用额外计算换取内存占用的显著减少,从而支持在有限硬件上训练更深、更大的模型,尤其适用于大规模LLM的训练。
多任务学习如何使 LLM 受益?
多任务学习通过同时训练多个任务提升LLM的泛化能力、参数共享和效率。共享参数避免过拟合,提高鲁棒性,同时减少单独训练需求,使模型更高效、通用。
课程学习如何帮助 LLM 学习复杂任务?
课程学习是一种训练策略,模型从简单任务逐步过渡到复杂任务,模仿人类学习方式。其优势包括:提升收敛速度、增强泛化能力、减少过拟合,并确保训练稳定性,最终帮助LLM在复杂推理任务上取得更好性能。
超参数调整如何影响 LLM 的性能?
超参数调整对优化LLM性能至关重要,它影响模型收敛速度、防止过拟合或欠拟合,并显著提升特定任务(如生成或翻译)的准确性。正确调整学习率、批量大小和dropout等参数是确保模型高效学习和泛化的关键步骤。
对比学习如何改进 LLM 的表示?
对比学习是一种自监督技术,通过区分相似和不相似的示例来训练模型。对于LLM,它能有效提升语义表示、噪声鲁棒性和泛化能力,常用于句子嵌入、文档聚类和检索等任务。
知识图谱整合如何增强 LLM?
将知识图谱与LLM整合,结合结构化知识提升事实准确性、推理能力和上下文理解。该整合有效减少模型幻觉,增强复杂查询处理,适用于问答、实体识别和推荐系统等场景。
什么是上下文窗口大小,它如何影响 LLM 的性能?
上下文窗口大小指模型一次能处理的最大token数,影响性能:更大的窗口能提升长文本理解与任务表现,但计算成本随长度二次增长,需权衡效率与效果。
参数共享是什么,它如何提高 LLM 的效率?
参数共享通过让模型不同层共用相同参数集,减少总参数量,提升内存效率、泛化能力和训练推理速度。常用于BERT和GPT等模型,增强可扩展性而不显著增加参数。
什么是多模态学习,它如何扩展 LLM 的能力?
多模态学习使LLM能够整合文本、图像、音频等多种数据,实现更全面的理解、跨模态推理和更广泛的应用,从而扩展AI系统的功能,超越纯文本处理。
在合成数据上进行预训练如何使 LLM 受益?
合成数据预训练通过生成人工数据扩展和多样化数据集,提升模型泛化能力与鲁棒性,尤其适用于罕见场景覆盖,同时降低成本,在医疗或自动驾驶等数据稀缺领域尤为有效。
上下文嵌入在 LLM 中的作用是什么,它与静态嵌入有何不同?
上下文嵌入(如BERT、GPT生成)是动态词表示,能根据上下文变化,有效捕捉多义词的不同含义,提升情感分析、机器翻译等任务性能。相比静态嵌入(如Word2Vec),它更灵活,能更好地理解词汇间细微关系,支撑大语言模型实现先进NLP表现。
简单说下PPL指标的计算逻辑?
困惑度(PPL)是衡量语言模型预测准确度的指标,值越低表示性能越好。其计算基于模型对测试集中每个 token 预测概率的对数平均值取指数。PPL 与交叉熵密切相关,适用于模型训练监控和对比评估,但无法全面衡量生成内容的事实性或逻辑性。通常需结合 BLEU 等指标进行综合评估。
对于二分类任务的few-shot,in-content learning和supervised learning的区别是啥?
ICL在推理时通过示例提示进行即时适应,无需训练,灵活但依赖示例质量;SFT通过微调参数优化任务性能,更稳定但需额外训练资源。选择取决于任务需求与资源条件。
SFT packing是什么?
SFT Packing是一种在监督微调阶段高效利用计算资源的技术,通过将多个短文本样本直接拼接成一个连续序列(可添加分隔符),避免传统填充带来的计算浪费。该方法对所有token计算损失,实现零浪费计算,同时模拟预训练过程的一致性。尽管可能引入样本间的虚假关联,但由于注意力机制弱化远程依赖,实际影响较小。
MCP和functional calling的区别是什么?
MCP是Anthropic提出的统一协议,旨在打通数据孤岛,实现大模型与外部工具的无缝集成。Function Calling则是厂商专属的功能接口,通过预定义函数让模型快速调用工具。两者分别侧重生态统一与快速调用。
解释下minimax中lighting attention的由来
Lightning Attention-2通过分块处理(块内传统注意力+块间线性注意力)结合缓存机制,首次实现因果模型的线性复杂度注意力(O(nd²))。它在保持单向性的同时支持高效并行,适用于超长序列训练,解决了传统注意力O(n²)复杂度的瓶颈问题。
二、LangChain和Agent
什么是 LangChain,为什么它很有用?
LangChain 是一个框架,用于简化基于大型语言模型(LLMs)的应用程序开发。它集成了内存、工具、代理和链,帮助高效构建 AI 驱动的应用。
解释 LangChain 的关键组件。
LangChain 是一个集成多种组件(如 LLMs、链、内存、代理和工具)的框架,用于构建基于语言模型的应用程序,支持模型调用、流程编排、历史存储、动态决策及外部服务交互。
LangChain 支持哪些功能?
LangChain 提供提示词管理、工具集成链、数据增强生成、多类型代理接口、状态维护内存及模型评估功能。
LangChain 如何与 LLMs(大型语言模型)交互?
LangChain 提供统一 API,支持与 OpenAI、Hugging Face 等 LLM 交互,并通过结构化提示、动态输入及检索增强生成(RAG)优化 AI 响应。
LangChain 中的链是什么,它们是如何工作的?
链是由一系列相互连接的动作组成,其中每个步骤的输出作为下一个步骤的输入。例如,对话链通过存储历史对话来维持上下文连贯性。
LangChain 中的代理是什么?它们与链有何不同?
代理根据输入动态选择工具(如搜索引擎、API或数据库),而链则遵循固定的流程执行任务。
如何使用 LangChain 提示 LLM?
使用 PromptTemplate
类可以高效构建提示模板。通过 from_template
方法定义模板,并使用 format
方法填充变量,实现动态生成提示。
什么是内存模块,它在 LangChain 中如何发挥作用?
内存存储对话历史,使LLMs在多轮交互中保持上下文。常见类型包括:对话缓冲内存、对话摘要内存和向量存储检索内存。
LangChain 如何支持检索增强型生成(RAG)?
LangChain 利用知识库(如 ChromaDB、Pinecone、FAISS)检索相关文档,并将其输入大型语言模型(LLMs),以生成基于上下文的响应,从而实现 RAG。
LangChain 中有哪些不同类型的链?
LLMChain 用于结构化输入的简单 LLM 调用;SequentialChain 按顺序执行多个 LLM 调用;RouterChain 根据用户输入将查询路由到不同模型。
解释 LangChain 中嵌入(embeddings)的用途。
嵌入将文本转换为数值向量,用于语义搜索和相似性匹配。LangChain 集成了 Pinecone、Chroma 和 FAISS 等向量数据库。
如何将外部 API 集成到langchain中来?
使用 RequestsWrapper
工具,LangChain 代理可以轻松调用 API。通过实例化并传入 URL,即可获取 API 响应。
LangChain 中的文档加载器是什么,它们如何使用?
文档加载器用于从PDF、CSV等文件中提取文本。以PyPDFLoader为例,通过加载PDF文件并调用load()方法即可获取文档内容。
解释向量数据库及其在语义搜索中的作用。
向量数据库存储嵌入,用于快速语义搜索,如AI简历分析。常见示例包括FAISS、Pinecone和Weaviate。
如何优化提示模板以获得更好的模型响应?
使用 FewShotPromptTemplate
可以借助示例提升输出质量,使模型更准确地理解任务需求并生成更优结果。
LangChain 中常用的记忆类型有哪些?
BufferMemory存储原始消息,SummaryMemory生成历史交互摘要,VectorMemory保存嵌入数据用于检索。
解释 LangChain 代理中的工具使用概念。
工具赋予代理执行外部任务的能力,例如搜索、查询数据库或动态调用API。
如何在 LangChain 中处理多步推理?
ReAct代理通过推理-行动循环进行决策,结合逻辑推理与行动执行,提升任务处理的准确性和效率。
LangChain 中的回调是什么,如何用于日志记录?
回调功能可用于在LangChain流水线中记录事件,便于调试与监控。
如何优化 LLM 调用以降低成本和延迟?
通过结合提示优化、缓存和检索技术,配合LLM策略,有效减少API调用,提升效率并降低成本。
什么是LangSmith,作用是啥?
LangSmith 是 LangChain 应用的调试与监控工具,用于分析性能和执行流程,提升开发效率。
如何在 LangChain 中构建自定义链?
通过继承 LLMChain
或 Chain
类,并实现自定义的 run
方法,可以扩展链的功能。
解释 LangChain 表达式语言(LCEL)及其用例。
LCEL 允许用户以声明性方式定义复杂工作流,无需手动编写自定义链,简化开发并提升效率。
如何在 AWS 上部署 LangChain 应用程序?
使用 AWS Lambda 运行 LangChain 服务,S3 存储相关文件,API Gateway 提供 RESTful 接口,实现高效、可扩展的托管方案。
在 LangChain 中可以使用哪些策略来增强 LLM 响应?
结合RAG增强知识检索,利用提示工程优化输入指令,集成外部API扩展功能,并通过微调提升模型在特定任务上的表现,实现高效、精准的AI应用构建。
如何使用 LangChain 实现检索增强型生成(RAG)?
结合嵌入与FAISS等向量数据库,可高效检索相关上下文,提升语义搜索的准确性和速度。
解释 LangChain 中 ReAct 代理的作用。
ReAct 代理通过交替进行推理和行动步骤处理复杂问题,而非直接回答查询。推理步骤分析当前信息,行动步骤与环境交互获取新数据,逐步推进直至问题解决。
如何使用 LangChain 高效处理长文档?
使用文档分块和向量搜索技术,先检索相关文本片段,再将其输入大型语言模型进行进一步处理。
如何将 LangChain 与实时数据源集成?
LangChain 代理通过集成 API 调用、数据库查询和网络爬虫等工具,实现高效的信息获取与自动化任务处理,提升智能化应用的执行能力。
如何调试和基准测试 LangChain 应用程序?
使用LangSmith进行模型追踪与调试,结合日志工具记录运行状态,并通过分析内存使用情况优化性能与资源管理。
LangChain 在金融、医疗或制造业中的实际应用有哪些?
AI在金融领域用于欺诈检测和财务报告生成,在医疗领域辅助诊断和患者咨询,在制造业则用于预测性维护分析。
当 LangChain 没有从 LLM 返回预期输出时,如何调试问题?
调试提示:检查模板格式与变量完整性,启用LangChain详细模式追踪执行步骤,记录API调用以分析输入输出,并单独测试LLM(如通过OpenAI API)以隔离问题。
如果文档检索器返回了不相关的结果,你会怎么做?
优化检索性能的关键步骤包括:验证嵌入模型选择、测试向量搜索匹配度、调整文本分块参数,以及必要时启用结果重排序。
如何调试 LangChain 中的内存相关问题?
检查存储的消息,尝试不同内存类型(如缓冲、摘要或令牌缓冲),确保符合令牌限制(如GPT-4-turbo的4096)。必要时使用memory.clear()
清除陈旧数据。
如何在 LangChain 中处理速率限制或 API 失败?
优化API调用:采用指数退避重试、异步并发执行、监控状态码并缓存结果,以提升效率并减少负载。
set_debug(True)
是如何工作的?
启用 set_debug(True)
后,LangChain 会记录 LLM API 调用、链执行步骤、输入/输出转换以及错误和异常的详细信息。只需在脚本开头导入并调用该函数,即可启用所有组件的详细日志输出。
什么是Agent?
LLM Agent 是一种以大型语言模型为核心的人工智能系统,不仅能生成文本,还能进行对话、推理和任务执行,并具备一定自主性。其自主程度可从被动到高度主动,能够在人工监督下独立管理包括分析、规划、执行和迭代在内的完整工作流程。
Agent 如何获取上下文对话信息?
为兼顾对话历史完整性与效率,系统采用多策略融合:通过滑动窗口获取近期对话,结合向量检索回溯关键信息;利用知识图谱提取实体关系,并生成阶段性摘要,确保既关注最新交互又保留早期重要上下文。
LLM Agent 中模型自我反省是什么?
自我反省是模型对输出或行为的评估与调整过程,包括性能评估、错误分析、领域适应和用户反馈处理,以提升任务表现和适应性。
LLM Agent中的模型自我反省的方法有哪些?
ReAct结合了推理与行动,通过扩展动作空间(包括任务特定动作和语言操作),使LLM能够与环境交互(如调用API)并利用提示词生成自然语言推理过程。
LLM Agent 有什么关键能力?
Agent利用LLM理解指令与上下文,通过工具(如计算器、API)自主或半自主执行任务,包括逻辑推理、文本定制(如邮件、报告)及多模态系统对接(如图像生成)。它能灵活响应用户需求,超越纯语言处理范畴。
怎样构建基于 LLM 的 Agents?
Agent 是结合了 LLM、提示配方、工具、知识库和记忆的智能系统。提示配方定义了输出内容、受众、语气等要求;工具通过 API 扩展功能;知识提供通用和专业知识;记忆则存储用户或任务相关的短期与长期上下文,实现个性化交互和任务一致性。Agent 的表现高度依赖提示质量。
LLM Agents 有哪些类型?
LLM Agents分为会话型和任务型两类。会话型专注于模拟人类对话,强调个性化交互和上下文理解;任务型则聚焦目标实现,通过分析、规划和工具调用完成具体任务。两者在目标、行为及Prompt方法上存在显著差异。
到底什么让Agent有了自治的能力?
自主系统通常由生成和监督两类agent构成:生成agent负责根据提示生成回复,监督agent则负责审查、调整提示并提供反馈。通过持续提示,系统逐步培养出推理、效能和自主决策能力。
什么是 LangChain model?
LangChain 模型分为三类:大型语言模型(LLM),处理文本输入并返回文本输出;聊天模型,以结构化方式管理对话消息;文本嵌入模型,将文本转换为浮点列表,用于检索和相似性分析。
三、模型和算法
为什么大模型都是Decoder-only结构?
Decoder-only架构因因果注意力的满秩性、预训练任务难度高、上下文学习能力强、推理效率高(支持KV-Cache复用)以及优越的zero-shot性能,成为当前LLM的主流选择。它在表达能力、泛化能力和工程实现上均具优势,尤其在生成任务中表现突出。
什么是多头注意力?
多头注意力通过多个注意力头同时关注输入序列的不同方面,每个头学习不同的表示。这使模型能捕获语法、语义等多样化关系,从而增强对复杂依赖的理解能力。
MQA如何提高 LLM 中 Transformer 的效率?
多查询注意力是自注意力的变体,通过共享键-查询对降低内存占用和计算复杂性,同时保持模型关注能力。这种优化特别适用于处理长序列或大型数据集的大语言模型。
大模型中有加入dropout的吗?
Llama3的注意力机制未实现dropout,而Qwen虽然配置了dropout参数,但实际设置为0.0,因此两者在推理时均不执行注意力丢弃操作。
大模型中不用dropout的主要原因?
Dropout在大模型中因引入噪声加剧训练不稳定性,增加计算开销,且效果有限。大模型通过结构优化(如MQA、残差)和多领域数据预训练已具备良好泛化性,实验表明dropout对小模型有效,但对大模型效果不显著甚至负面,因此现代LLM普遍弃用。
Prefix LM和Causal LM的区别是啥?
Prefix LM与Causal LM的主要区别在于attention mask不同。Prefix LM在输入前添加任务相关前缀,并允许前缀关注整个序列;Causal LM仅基于历史信息自回归生成,无法访问未来内容。
prefix LM 和 causal LM、encoder-decoder 区别及各自有什么优缺点?
Prefix LM:解码器可访问整个输入序列,利用完整上下文生成文本,适用于文本补全等任务。
Causal LM:自回归模型,仅依赖已生成文本,使用掩码确保单向注意力,适用于文本生成任务。
Encoder-Decoder:编码器双向注意力,解码器单向注意力,处理输入输出序列长度不同的任务,如机器翻译。
LLAMA中的FFN层作用是什么?
Transformer中的前馈网络(FFN)具有三个关键作用:增强模型的非线性表达能力,防止纯注意力机制导致的表征秩坍缩,以及作为键值记忆存储知识。FFN通过引入非线性激活函数和参数扩展,提升了模型的复杂函数拟合能力和信息保留能力。
LLAMA中的FFN层有哪些魔改的做法?
FFN的改进主要有两种形式:一是LLaMA采用的SwiGLU激活函数,通过Swish激活和门控机制增强表达能力,需训练三个权重矩阵;二是MoE(混合专家)结构,使用多个专家网络并行计算,通过门控选择激活部分专家,提升模型容量和效率。
Encoder-only结构能适合于生成式任务吗?
Encoder-only结构虽主要用于编码,但也可通过mask最后一个token进行生成式任务。然而,该方法存在两个问题:一是训练与推理阶段mask策略不一致,影响泛化能力;二是双向注意力机制导致无法复用kv-cache,限制了自回归解码效率。
为何理论上Post-Norm比用Pre-Norm好?
Pre-Norm 倾向于退化,使深层模型更像“浅而宽”,训练容易但上限较低。Post-Norm 突出残差分支,层数更有效,训练难但上限更高,效果好。DeepNorm 通过系数平衡两者,支持超深层训练。
大模型中哪些模型用到的pre-norm和post-norm技术的?
Llama和Qwen采用Pre-Norm结构,先进行层归一化再计算注意力或MLP,最后与残差相加。而Bert采用Post-Norm结构,先计算注意力或MLP并与残差相加,最后进行层归一化。
Transformer中为什么要用多个头?
多头注意力机制通过并行处理多个表示子空间,增强了模型的非线性表达能力,同时缓解了秩坍缩问题。从信息熵角度分析,每个头的维度存在理论上限,避免冗余。此外,多头设计还提高了计算效率,通过并行化和参数优化减少计算量。
计算softmax为什么要除以根号d?
通过缩放QK乘积,使attention score保持均值为0、方差为1的分布,避免softmax输出趋向极值,从而稳定梯度传播,便于优化。
说一下GQA的原理?
Grouped Query Attention(GQA)是一种多头注意力(MHA)的变体,通过将查询头分组并共享键值头,在保持模型质量的同时显著提升计算效率。它在多头注意力(MHA)和多查询注意力(MQA)之间提供了性能与效率的平衡,适用于高负载推理场景。
请手撕一个GQA的代码实现?
GQA通过将查询头分组并与共享的键值头计算注意力,从而减少计算量。在实现中,当键值头少于查询头时,通过重复键值头来匹配数量(如Llama3中的repeat_kv操作),最终实现高效的多头注意力计算。
当Batch Size增大时,学习率该如何随之变化?
从方差角度分析,Batch Size增大x倍时,学习率应增大√x倍或x倍。从损失角度分析,学习率随Batch Size增加而单调递增但有上界,遵循公式η* ≈ η_max/(1+B_noise/B)。实际应用中,大Batch Size配合大学习率与小Batch Size配合小学习率效果相当,但数据量小时应减小Batch Size以增加训练步数。
为什么 Bert 的三个 Embedding 可以进行相加?
BERT的三个表征(Token、Segment、Position Embedding)相加的解释主要有三种视角:
- 信号处理:叠加的信号可在神经网络中被解耦;
- One-hot编码:等价于拼接后过MLP;
- 信息融合:三个空间向量线性映射到统一特征空间进行融合。
目前仍缺乏定量理论分析。
Layer Norm 的计算公式写一下?
这张图片展示了一个简洁的界面,包含一个输入框和发送按钮,用于用户输入和提交文本信息。
RMS Norm 的计算公式写一下?
这是一张截图,展示了用户与AI助手的对话界面。用户发送了一张图片,而AI助手识别出图片内容为对话界面,并进行了简要描述。
RMS Norm 相比于 Layer Norm 有什么优点呢?
RMS Norm 简化了 Layer Norm,去除了均值平移部分,计算速度更快,效果相当甚至略有提升。
Deep Norm 思路是什么?
Deep Norm在Layer Norm前通过alpha>1放大残差连接,并在初始化阶段用beta<1缩小模型参数,从而提升大模型训练的稳定性。
能写一下Deep Norm 代码吗?
这张图片展示了一个简单的几何图形,由三个不同大小的圆形和一个矩形组成。圆形排列在矩形的上方,整体呈现对称布局。
Deep Norm 有什么优点?
DeepNorm通过LayerNorm前对残差链接进行up-scale,并在初始化阶段down-scale模型参数,兼具Pre-LN的训练稳定性和Post-LN的性能优势。
主流的大模型分别用了哪种Layer normalization?
这张图片展示了一个简洁的白色界面,顶部有“总结”标题和“复制”按钮。主体内容是一个灰色文本框,内部包含三行示例文本,每行以项目符号开头,呈现了总结内容的样式。整体设计现代且用户友好。
FFN的计算公式是什么样的?
传统Transformer的FFN通过W1将输入x从d维升至4d,再通过W2降回d维。其中函数f通常为恒等映射,即无额外变换。
介绍一下 GeLU 计算公式?
GELU是一种平滑且非线性的激活函数,通过标准正态分布的累积分布函数计算,输入值越大通过概率越高。在Transformer等深度学习中表现优异,广泛应用于自然语言处理和计算机视觉任务。
介绍一下 Swish 计算公式?
Swish 是一个平滑且非单调的激活函数,具有可学习的参数 β,能够自适应调整。当 β→∞ 时近似 ReLU,β=0 时变为线性函数,有助于提高模型的稳定性和表达能力。
使用 GLU 线性门控单元的 FFN 块 计算公式是什么样的?
该题的计算公式采用门控线性单元(Glu(x))实现FFN_glu结构,与传统FFN的两个参数矩阵([d,4d]和[4d,d])不同,此处使用三个参数矩阵:W1、V和W2。
介绍一下 使用 GeLU 的 GLU 块 计算公式?
GLU是一种门控模块,通过选择性信息传递增强模型表达能力;GELU是一种激活函数,基于正态分布CDF平滑处理输入。两者功能不同,GLU用于结构控制,GELU用于非线性变换。
使用 Swish 的 GLU 块 计算公式是什么样的?
Swish函数是2017年提出的激活函数,旨在改进ReLU的不足。其公式为 f(x) = x * sigmoid(βx),其中β为可学习参数。该函数平滑且非单调,在深层网络中表现优异。
各LLMs 都使用哪种激活函数?
模型激活函数总结:ReLU、Sigmoid、Tanh、Leaky ReLU、ELU、Swish、GELU、Mish、SiLU、Softplus,各有不同特性,适用于不同场景。
传统 Attention 存在哪些问题?
传统注意力机制的计算复杂度为 ( O(L^2) ),导致处理长序列时计算和内存开销急剧增加,限制了序列长度和模型规模,并影响训练与推理速度。此外,长序列中注意力权重可能稀疏或退化,削弱了捕捉远距离依赖的能力。
传统 Attention 相关问题的解决方案
为解决传统注意力机制计算复杂度过高的问题,研究者提出了多种改进方法,包括稀疏注意力、分块注意力、线性注意力和多尺度注意力。这些方法有效降低了计算和内存开销,同时保持了模型性能。
Attention 优化方向主要有哪些?
为降低Transformer的计算复杂度,可采用稀疏注意力、分块注意力、线性注意力和多尺度注意力等方法,分别从注意力范围、序列分块、线性近似和多尺度建模入手,有效减少计算和内存开销。
Attention 变体有哪些?
高效注意力机制优化方法包括:稀疏注意力降低复杂度,线性化注意力实现线性计算,原型与内存压缩减少矩阵大小,低阶自注意力捕捉低阶属性,先验注意力补充标准分布,以及改进多头机制探索替代方案。
Multi-head Attention 存在什么问题?
训练过程影响小,速度稳定但可能轻微降低性能;推理过程需频繁加载大容量 KV 缓存,内存开销大且性能受限。
介绍一下 Multi-Query Attention?
Multi-Query Attention 通过在所有注意力头上共享 key 和 value,有效减少了计算和存储开销,同时保持了模型的表达能力。
对比一下 Multi-head Attention 和 Multi-Query Attention?
Multi-Query Attention(MQA)在多个注意力头之间共享 key 和 value 参数,以减少计算和内存开销。不同模型在实现 MQA 时存在细微差异:Falcon 通过增大隐藏维度分配额外参数给注意力和 FFN 模块,而 ChatGLM2 则仅增大 FFN 中间维度以增强 FFN 模块。
Multi-Query Attention 这样做的好处是什么?
通过减少KV缓存大小,降低显存占用并提升推理速度。
有哪些模型使用了 Multi-Query Attention?
代表模型包括PaLM、ChatGLM2和Falcon等。
什么是 Grouped-query Attention?
Grouped-query Attention 是一种介于 Multi-head 和 Multi-query 之间的注意力机制,它使用多个 key 和 value 头,但共享查询组,在计算效率和表达能力之间取得了平衡。
有哪些大模型使用了 Grouped-query Attention?
ChatGLM2 和 LLaMA2-34B/70B 均采用了 Grouped-query Attention 技术。
请解释一下 KL 散度是什么?
KL 散度用于衡量两个概率分布 P 和 Q 的差异,反映从 Q 转换到 P 的信息损失程度。其计算公式如上所示。
为什么 KL 散度总是非负的?
KL 散度是一种非对称的差异度量,用于衡量两个概率分布 P 和 Q 之间的差异。它总是非负,并且不对称,即 KL(P||Q) ≠ KL(Q||P)。
散度能否衡量两个分布的相似性?
KL散度用于衡量两个概率分布的差异,数值越小表示分布越相似,因此可间接反映相似性,但本身不是相似性指标。
KL 散度是否适用于连续分布?
KL散度适用于连续分布,此时需用概率密度函数替代概率质量函数,并通过积分计算。但连续分布下的计算可能更为复杂。
KL 散度是否可以处理多元分布?
KL散度适用于多元分布,需在多维事件空间中分别计算各维度概率差异,再综合结果。
KL 散度是否可以处理不均匀分布?
KL 散度适用于不均匀分布,前提是事件空间一致。计算方式相同,但可能涉及概率密度函数等更复杂的方法。
交叉熵损失函数是什么?它的物理意义是什么?
交叉熵损失函数用于衡量真实标签分布与模型预测分布之间的差异。当两者一致时损失为0,差异越大损失越高,适用于分类任务。
KL 散度与交叉熵的区别是什么?
KL散度是非对称性分布差异指标,交叉熵是其特例。交叉熵主要用于分类任务,而KL散度更关注分布间的相对差异。
多任务学习中,如果各任务的损失差异过大,应该如何处理?
在多任务学习中,若各任务损失差异过大,可通过动态调整损失权重、使用任务特定损失函数、修改模型架构或引入正则化等方法,平衡各任务贡献,优化训练效果。
分类问题中,为什么使用交叉熵损失函数而不是均方误差(MSE)?
交叉熵损失适用于分类问题,能敏感捕捉概率差异,优化模型效果;而均方误差(MSE)更适合回归问题,衡量预测值与真实值的平方差。分类问题中使用 MSE 可能导致优化不佳。
什么是信息增益?
信息增益是决策树算法中用于选择最佳特征的指标,衡量已知特征后样本不确定性的减少程度。增益越大,特征对分类的贡献越大。
多分类问题中的分类损失函数(Softmax)是什么样的?
多分类问题中,Softmax 交叉熵损失函数通过归一化输出为概率分布,计算真实标签与预测概率之间的差异。公式为:
[ L = -\sum_{i=1}^{n} y_i \log(p_i) ]
其中 ( n ) 为类别数,( y_i ) 是真实标签,( p_i ) 是预测概率。
Softmax 和交叉熵损失如何计算?二值交叉熵呢?
Softmax将输出转化为概率分布,多分类交叉熵损失衡量预测与真实标签的差异,二分类交叉熵损失是其在两类情况下的特例。
如果 Softmax 的 ( e ) 次方超过浮点数范围怎么办?
通过将分子和分母同时除以输入向量 ( x ) 的最大值,可以避免数值溢出。公式如下:
请问温度为0一定可以得到确定的输出吗?
尽管温度设为0理论上应消除随机性,但实践中LLM输出仍可能因多种因素出现轻微变化,包括模型架构(如MoE路由竞争)、硬件级浮点精度误差和并行计算不确定性。为确保一致性,建议设置温度0、统一提示、请求单次输出,并了解服务限制或使用本地确定性设置。不同模型架构和硬件环境对确定性有显著影响。
Adam优化器下怎么调整batch size和lr
Adam优化器通过一阶矩(梯度均值)和二阶矩(梯度方差)自适应调整参数更新步长。当batch size扩大c倍时,为维持训练稳定性,需将学习率缩放为原值的√c倍,并将动量衰减率调整为β₁’ = β₁^(-1/c) 和 β₂’ = β₂^(-1/c)。
LM中数学上majority voting 为何有效
大语言模型在数学题解答中,单次采样的正确率为 §。通过多次独立采样并采用多数投票(即正确答案出现次数过半),整体正确率 (P(E)) 可显著提升,尤其当 (p > 0.5) 时,(P(E)) 随采样次数 (n) 单调递增且恒大于 §。该机制的效果取决于基础正确率 §、采样次数 (n) 的奇偶性及错误答案的分布情况。
为什么G4-turbo在topp=0.0的情况下,还不能保证预测稳定性?
采样机制受温度参数、浮点精度、并行计算及Transformer累积误差影响,无法完全避免随机性。为提高稳定性,建议采用极限低温、固定随机种子、启用确定性推理模式及多次采样取众数。需结合多方法逼近确定性行为。
将答案放在文章不同部位大模型生成答案的概率分析下
论文实验表明,输入文本长度增加会降低模型推理准确性,但关键信息位置显著影响结果:尾部(B)影响最大,头部(A)次之,中间(C)最小,随机分布(D)则规律性减弱,因模型注意力更集中于首尾部分。
如果将推理相关的关键段落分别藏在文章的不同位置(头部、尾部、中间或随机分布),大模型生成正确推理结果的概率如何排序呢?
论文实验表明,输入长度增加会降低模型推理精度,但关键信息位置对结果影响显著:尾部影响最大,头部次之,中间最小,随机分布时影响最弱。模型注意力集中于首尾,中间部分关注较低。
如果做二分类的few shot任务,In Context Learning和Supervised Fine-tuning主要的区别是什么?
上下文学习将少量样本嵌入提示中,使模型无需调整参数即可预测,对标签错误容忍度高。监督式微调则需用样本进一步训练模型,调整参数,因此要求标签必须准确无误。
同一个prompt复制5次进LLM为啥得到的输出都不一样?
贪婪解码理论上应保证相同prompt输出一致,但实际可能因随机性操作(如层归一化、dropout未关闭)和浮点数精度误差累积导致结果差异。此外,padding位置在softmax中被赋予极小值,理论上被忽略,但深层模型可能放大其影响,干扰预测结果。
SFT packing对SFT训练的影响是什么?
打包技术通过合并短样本提升训练效率,减少填充浪费,但可能引起样本间注意力交互问题,需确保分隔与掩码。该技术改变序列长度分布,可能削弱模型对长文本的处理能力,并分散梯度,降低短文本拟合效果。实验表明,小数据或复杂任务中打包可能损害泛化能力,而大规模数据下影响较小;非打包方式则可能影响模型续写能力及基准测试结果。
多模态处理多分辨率输入有哪些方法?
处理多模态多分辨率输入主要有两种策略:切片方法将图像分割为固定形状的子块,并保留全局信息,实现动态分辨率推理;组合方法则借鉴序列组合技术,在序列维度合并不同分辨率特征,并使用块对角掩码避免跨图像注意力计算,实现并行处理。
大模型真的有self-correct能力吗?
研究表明,大型模型在缺乏外部反馈时难以自我纠正。现有监督微调方法(如SFT)虽能减少将正确答案错误修改的情况,但提升有限(仅1.8%)。作者提出的SCoRe模型显著提高了自我纠正能力,Δ(t1,t2)增益达4.4%,并显著降低了错误修改比例。挑战在于如何保留正确答案、纠正错误答案,并确保训练中第一步答案的准确性。
请简要解释Pre-train、RL和Test Time三种 Scaling Law 的核心观点,在对应的阶段起到的作用
预训练阶段,性能随计算、数据和参数按幂律提升,但边际效益递减。强化学习阶段,性能随训练步数先升后降,需平衡对齐与安全。推理阶段,增加计算资源可提升输出质量,但同样面临效益递减。
解释下minimax中lighting attention的由来
Lightning Attention-2通过分块策略(块内使用掩码注意力,块间利用KV缓存右乘)实现线性复杂度O(nd²),解决了因果模型中的序列处理瓶颈。该方法支持高效并行计算和长序列训练,同时保持模型性能。
可以用Bert做生成式任务吗?
是的,BERT可用于生成任务,如文本填充和续写,但效果可能不如专门的大模型。它通过掩码语言模型预测缺失词汇,但缺乏连贯性生成能力,因此适用性有限。
Bert做生成式任务的效果为何不如现有的大模型?
BERT基于encoder-only结构,不适合生成任务。掩码训练方式使其生成长文本时连贯性差,且无法处理变长输入输出,效果不如decoder-only模型。
四、微调方面
大模型中常见的微调方法有哪些?
参数微调方法包括:Adapter(在模型层间插入可训练模块)、Prompt Tuning(添加任务特定提示并冻结模型)、Prefix-tuning(优化连续前缀向量)、P-tuning系列(通过优化提示嵌入提升效果)以及LoRA(使用低秩矩阵近似更新部分参数)。这些方法均旨在高效适配下游任务而无需大幅调整原始模型。
何时应该使用微调而不是 RAG?
微调适用于小众领域(如医学、法律),能定制领域词汇;适合少量数据任务,利用预训练知识提高效率;擅长精确输出(如情感分析、分类),可识别特定模式。
预训练和微调的区别是什么?
训练是从头构建模型,需要大量数据和资源,但定制性强;微调基于预训练模型,使用少量数据和较少资源,但定制性较弱,专注于优化已有知识。
P-tuning、Prompt-tuning和Prefix-tuning区别是什么?
Prefix-Tuning在每层添加可训练参数,通过MLP初始化,位置固定于开头;P-Tuning在输入层加入可训练参数,位置不固定,通过LSTM/MLP初始化;Prompt-Tuning是简化版,仅在输入层添加固定虚拟token,无需复杂初始化。三者均属参数高效微调方法。
为何LoRA初始化B=0而A为高斯分布初始化?
建议将A初始化为0,B正常初始化。这能保持模型初始输出与原模型一致,避免引入噪声。理论证明A为0时允许更大学习率,促进更有效的特征学习,而B为0会导致训练不足。实证结果也表明A初始化为0通常性能更优。
什么是LoRA和QLoRA?
LoRA是一种高效的微调方法,通过引入少量低秩参数来适应新任务,无需更新整个模型,节省内存和计算成本。其变体QLoRA进一步采用量化(如4位)压缩模型权重,降低资源需求,适合在受限硬件上运行大型模型。
全参数微调所需的显存怎么算?
全参数微调所需显存大小主要取决于模型规模、批量大小、数据维度及设备显存限制。模型参数越多、批量越大、数据维度越高,显存需求越大。需提前评估并确保设备显存足够,以避免训练失败或性能下降。
为什么SFT之后感觉LLM变“傻”了?
监督微调(SFT)后语言模型性能下降的原因包括数据偏差、标注错误、过拟合和数据缺乏多样性。解决方法包括增加数据多样性、检查标注准确性、使用正则化、数据增强以及调整模型架构或超参数,以提升模型表现。
微调大型模型时应该选择和优化哪些超参?
在调整大型模型时,超参数通常无需大幅改动。显存大小决定batch size,context length建议≥2048。学习率推荐cosine退火策略,梯度裁剪阈值约0.3,weight decay可选0.1或0。其他参数一般无需调整。可参考OPT或Deepseek Report的建议。
微调过程中loss异常升高如何解决?
预训练中loss异常升高需调整学习率或引入正则化;微调阶段loss异常升高可能因数据不足,建议采用成熟框架并调整学习率与梯度裁剪。
微调过程中及结束时应参考哪些评估指标?
在微调过程中,应根据业务目标(KPI)选择评估指标,客观指标推荐GSM8K、MMLU和BBH,主观效果可聘请标注员评估。训练集格式主要有“系统:人类:助手:”(当前流行)和“指令:输入:输出:”两种。
如何合理配置微调训练集?
在微调训练集配置中,应优先使用错误率低的数据,并增加专家生成数据,尤其是编程和数学领域的数据。避免使用网络爬虫数据。建议以Orca等数据集为基础,以保持模型的指令遵循能力。
轻量级微调(例如LoRA)的经验有哪些?
不建议采用轻量级微调方法(如LoRA),因其可能限制模型性能上限并引入新问题。更推荐租用更多计算资源进行全参数训练,以获得更优效果。
如何预防或减轻微调过程中的过拟合现象?
为预防或减轻过拟合,建议使用大型模型,并在数据去重后仅训练一个epoch。大型模型通常不易过拟合,若出现过拟合,可尝试调整数据格式或增加高质量数据。
如何迅速评估并提升大型模型数据集的质量?
通过人工抽样和与GPT4对比评估数据集质量。发现问题时,可回溯分析并清洗或增强数据。
微调后模型性能比预训练时还差的原因是什么?
若微调后模型性能下降,可能是实验方案不成熟,建议采用增量实验或在他人微调基础上继续优化。同时需持续监测结果,及早发现并解决问题。
微调过程中评测指标异常偏低的原因是什么?
评测指标若短暂异常后恢复,可能是评测集回答格式问题或loss异常升高。建议在微调过程中包含相关训练集,以解决格式问题。
如果调金融领域怎么尽可能全面地覆盖金融计算公式?
通过继续预训练学习金融计算公式,全面覆盖相关知识;微调主要用于激活模型已有知识,而非大量灌输新内容。
微调小型模型在哪些方面可能远不如大型模型?
大型模型在复杂任务中表现更优,尤其在数学与编程领域。
如何构建SFT的微调数据?
构建SFT数据集的关键步骤包括:收集相关原始数据并确保多样性,进行准确标注,划分训练、验证和测试集,执行数据预处理,转换为模型输入格式,进行微调训练,并最终评估模型性能。
领域模型Continue PreTrain的数据选取方法有哪些?
领域模型预训练的数据选取需注重领域相关性、质量与平衡性。常见方法包括收集领域数据、专家标注或伪标签生成,同时需平衡类别分布、质量控制及预处理。根据任务调整策略可提升模型性能。
如何缓解领域数据训练后模型遗忘通用能力?
为缓解领域训练导致的通用能力遗忘,可结合以下方法:保留部分通用数据、交替训练通用与领域数据、预训练后微调、引入强化奖励机制、应用领域适应技术,以及增加通用数据采样频率。这些策略有助于在提升领域性能的同时维持模型的通用能力。
为什么不用最佳生成答案进行监督微调?
尽管监督微调(SFT)直接模仿“最佳”答案看似简单,但存在多个局限:它限制了输出多样性并可能导致过拟合;难以处理序列级别的信用分配问题;无法直接优化不可微的人类反馈信号;且缺乏探索机制。相比之下,强化学习(RL)方法通过策略梯度和探索能力,能更有效地对齐人类偏好,适应语言生成的复杂性。
为何SFT 后进行 RL 能取得较好的效果?
SFT+RL两阶段训练是现代LLM开发的高效范式。SFT阶段通过高质量人类数据建立可靠的语言基础,减少输出方差。RL阶段通过奖励模型和策略优化(如KL惩罚)在安全范围内微调策略,提升模型对齐能力和推理性能。这种课程学习式的组合既保证了稳定性,又实现了对人类偏好的精细优化,最终达到更好的性能表现。
如何在领域模型Continue PreTrain过程中让模型学习更多知识?
在领域模型的持续预训练中,可通过多任务学习、多领域数据融合、大规模数据应用、数据增强及自监督学习等策略,提升模型的语言理解能力和领域任务表现。
进行SFT操作时,基座模型选用Chat还是Base?
选择基座模型应基于任务性质:对话任务优先ChatGPT,因其对话优化;单轮文本生成则选Base GPT,表现更佳。需根据具体需求权衡。
领域模型微调的指令和数据输入格式要求有哪些?
领域模型微调是将通用语言模型适配到特定领域任务的过程,包括明确任务类型、选择预训练模型、准备数据、预处理、划分数据集、微调训练、评估性能及实际应用。输入数据需按任务类型以文本、CSV或JSON格式提供,确保样本与标签分隔明确,并符合模型输入要求。
如何构建领域评测集?
构建领域评测集需经过数据收集、标注、划分数据集、设计评测指标、模型评测及结果分析等步骤。该过程需专业知识,建议与领域专家合作,并反复优化以达到理想结果。
领域模型词表扩增是否必要?
领域模型词表扩增的必要性取决于三个因素:领域特定词汇的覆盖需求、领域上下文的差异程度以及训练数据的稀缺性。但需注意,扩增会增加计算和存储成本,因此需权衡资源限制与性能提升之间的关系。
如何训练自己的大模型?
训练大模型包括数据收集与准备、模型设计与架构选择、数据划分与预处理、模型训练、调优与验证、评估与测试,以及部署与优化。整个过程依赖大规模数据集和大量计算资源,通常借助云计算或分布式训练加速。
训练中文大模型的经验有哪些呢?
训练中文大模型时,需注重数据预处理与增强,结合字词级别表示和预训练模型(如BERT)。针对中文特定任务使用专业工具,并合理利用计算资源与超参数调优,以适应中文语言特点。
指令微调的好处是什么?
指令微调可提升大模型在特定任务上的个性化适应能力、性能表现和控制性,同时提高数据和训练效率,节省资源。
预训练和微调哪个阶段注入知识?
知识注入主要发生在预训练阶段,通过大规模数据训练模型掌握语言规律和通用表示能力。微调阶段则在此基础上,针对特定任务进一步优化模型性能。
想让模型学习某个领域或行业的知识,应该预训练还是微调?
要让大语言模型学习特定领域知识,建议进行微调而非预训练。预训练提供通用语言能力,但对特定领域知识有限。微调则利用领域数据优化模型,使其更好地理解术语和语境,提升领域性能,从而适应目标需求。
如何微调模型用于多轮对话任务?
微调大语言模型用于多轮对话任务包括:准备对话数据集,选择预训练模型,添加任务特定层,进行微调并优化超参数,评估性能后部署。数据质量和多样性至关重要,可结合数据增强等技术提升效果。
微调后模型能力劣化,灾难性遗忘是怎么回事?
灾难性遗忘指模型在微调新任务时遗忘旧任务知识,导致性能下降。原因包括数据分布差异和参数更新冲突。解决方法有:重播缓冲区、弹性权重共享、增量学习、多任务学习、知识蒸馏、正则化技术、参数化记忆和动态权重调整。这些方法有助于保留旧知识,提升模型整体性能。
微调模型需要多大显存?
微调大语言模型所需显存取决于模型规模、批次大小、序列长度和优化算法。对于大型模型(如GPT系列),通常需要至少16GB显存。若显存不足,可减小批次大小或序列长度,或采用分布式训练、混合精度训练等方法缓解。
大模型LLM进行SFT操作时在学习什么?
有监督微调(SFT)使大语言模型(LLM)学习任务特定的标签预测、上下文理解、特征提取、任务优化及领域适应,从而提升任务性能。
预训练和SFT操作有什么不同?
大语言模型的预训练与有监督微调(SFT)是两个关键阶段。预训练通过无监督学习从大规模无标签文本中学习通用语言知识,为模型奠定基础;SFT则使用有监督的任务相关数据,针对特定任务优化模型性能。两者相辅相成,预训练提供通用能力,SFT实现任务适配。
样本量规模增大,训练出现OOM错如何处理?
当大语言模型训练出现内存不足时,可通过减少批量大小、分布式训练、内存优化(如混合精度和梯度累积)、模型规模缩减、硬件升级或优化数据加载来缓解。这些方法有助于确保训练顺利进行。
大模型LLM进行SFT时如何对样本进行优化?
在大语言模型有监督微调(SFT)中,优化样本的方法包括数据清洗与增强、标签平衡、样本选择与权重调整、组合与分割策略,以及基于置信度和难度的筛选。这些方法共同提升数据质量和多样性,增强模型性能与泛化能力。
模型参数迭代实验有哪些?
模型参数迭代实验需系统设计、执行和分析。首先明确目标与指标,选择超参数;然后训练基线模型,逐一调整参数并记录结果;接着分析最优组合,可视化关系;优化时使用早停或并行计算;最后总结最优参数并确保实验可复现。
预训练和SFT操作有什么不同?
大语言模型的预训练和微调是两个关键阶段。预训练通过无监督方式从大规模无标签文本中学习通用语言知识,为模型奠定基础。微调则使用有监督方式,在特定任务的标注数据上优化模型,提升任务性能。两者相辅相成,预训练提供通用能力,微调实现任务适配。
大模型LLM进行SFT时在学习什么?
在有监督微调(SFT)中,大语言模型(LLM)学习任务特定的标签预测、上下文理解与语言模式、特征提取与表示学习,以及适应特定领域或风格。通过优化算法调整参数,模型提升任务性能,从而更好地适应目标应用。
多轮对话任务如何微调模型?
微调大语言模型用于多轮对话任务的关键步骤包括:数据准备、模型选择、添加任务特定层、微调过程、超参数调整、评估调优以及部署。需注意数据多样性、上下文管理和性能优化,以提升模型泛化能力和回复质量。
如何避免在微调过程中出现过拟合?
微调模型时,过拟合会降低泛化能力。可通过正则化(如权重衰减、Dropout)、增加数据多样性(数据增强与扩充)、使用验证集早停、限制模型复杂度、采用正则化优化器(如AdamW)及引入噪声等方法有效避免,从而提升模型性能。
如何评估微调后的模型性能?
评估微调模型性能需通过测试集、选择合适的指标(如分类用F1,生成用BLEU)、对比分析、用户反馈和错误分析等方法,全面验证模型效果并指导优化。
如何选择合适的预训练模型进行微调?
选择预训练模型需考虑任务相关性、模型规模与资源、预训练数据质量、模型通用性、社区支持及实验验证。综合这些因素,为微调奠定基础。
如何在微调过程中引入外部知识?
在微调过程中,通过知识图谱注入、外部数据融合、提示学习、多任务学习、领域适应和知识蒸馏等方法引入外部知识,可提升模型对特定任务的理解能力、性能及泛化能力。
如何优化微调过程中的计算效率?
微调大语言模型时,计算效率是关键。优化方法包括:混合精度训练减少显存占用;分布式训练分散计算任务;梯度累积模拟大批次训练;优化数据加载避免I/O瓶颈;剪枝与量化提升推理速度;使用高效优化器加速训练;早停避免不必要计算。这些方法显著提高效率,减少资源消耗。
如何处理微调过程中的类别不平衡问题?
类别不平衡问题会导致模型偏向多数类,影响少数类性能。解决方法包括:重采样(欠采样/过采样)、调整类别权重、集成学习、改进损失函数(如Focal Loss)、数据增强及选用合适评估指标(如F1分数)。这些方法可提升少数类识别能力,改善模型整体表现。
如何在微调后保持模型的可解释性?
微调大语言模型时,模型复杂性增加可能降低可解释性。为保持可理解性,可采用特征重要性分析(如SHAP)、可视化技术(如注意力权重)、模型简化(如剪枝)、规则提取、对比分析和案例研究等方法,以帮助理解模型行为并优化性能。
如何在微调过程中处理数据的动态变化?
数据漂移指数据随时间或环境变化的现象。为应对数据动态变化,可采取持续监控数据分布、增量学习、在线学习、定期更新模型、数据增强与合成、多数据源融合等方法,以提升模型的适应性和鲁棒性。
如何在微调过程中处理多语言数据?
处理多语言数据需兼顾语言差异与共性。方法包括:使用多语言预训练模型(如mBERT);添加语言标记;语言特定微调与多任务学习;平衡数据量;跨语言迁移;语言对齐技术;以及多语言评估。这些策略共同提升模型在多语言任务中的表现。
如何在微调过程中处理多模态数据?
多模态数据融合需关注互补性与一致性。方法包括:采用多模态预训练模型(如CLIP)、确保模态对齐、使用模态特定特征提取器、跨模态融合(如注意力机制)、多任务学习、数据增强及模态特定损失函数。这些策略可提升模型在多模态任务中的性能。
微调大模型的一些实验设置?
该模型采用Causal Decoder + LM结构,具备优秀的zero-shot和few-shot能力。推荐使用Pre RMS Norm、GeGLU/SwiGLU激活函数、ROPE/ALiBi位置编码,并去除偏置项以提升稳定性。训练配置包括:动态增加batch size、warmup+余弦衰减学习率调度、梯度裁剪1.0、AdamW优化器(权重衰减0.1)、bfloat16混合精度训练,以及通过损失和梯度标准选择断点进行崩溃挽救。
微调大模型时,如果batch size设置太小会出现什么问题?
小batch size导致梯度更新方差大,易受噪声影响,个别更新可能无效;大batch size则更新更有效。
微调大模型时,如果batch size设置太大会出现什么问题?
当batch size过大时,梯度估计已接近真实梯度,继续增大batch size无法提升性能,反而显著增加计算资源消耗。研究表明,超过临界值后,batch size增大会导致性能下降。
微调大模型时,优化器如何选择?
Sophia优化器使用梯度曲率进行归一化,相比Adam和AdamW,可能提升训练效率和模型性能,值得关注和研究。
哪些因素会影响内存使用?
内存使用受模型大小、批量大小、LoRA参数及数据集特性影响。例如,缩短训练序列可节省内存。
进行领域大模型预训练应用哪些数据集比较好?
高质量数据如书籍、论文,因其领域相关性强、知识覆盖广,能有效提升模型在考试任务中的表现。网站内容和新闻也是重要补充来源。
用于大模型微调的数据集如何构建?
大模型微调时,数据质量比数量更重要。建议选取干净、有代表性的数据,构建多样化prompt提升鲁棒性,并在多任务训练中保持各任务数据量平衡。
如何在微调过程中处理模型的鲁棒性问题?
提高模型鲁棒性可增强实际应用的可靠性。方法包括:对抗训练、数据增强、正则化技术、鲁棒性评估、多任务学习、模型集成及鲁棒性优化算法。这些策略能有效应对噪声、异常值或数据分布变化,提升模型的稳定性和泛化能力。
如何在微调过程中处理模型的公平性问题?
为确保模型公平性,可采用多种方法:评估指标监控性能差异,数据去偏减少偏见,约束优化平衡性能与公平,对抗训练消除敏感特征影响,解释工具分析决策,后处理调整输出,以及设计阶段融入公平原则。这些措施共同提升模型对不同群体的公正性。
如何在微调过程中处理模型的隐私问题?
在微调过程中保护用户数据隐私,可采用数据匿名化、差分隐私、联邦学习等技术,结合隐私保护计算方法和数据最小化原则,并确保符合相关法规政策,以降低数据泄露风险并维护用户权益。
如何在微调过程中处理模型的可扩展性问题?
模型可扩展性通过模块化设计、动态架构调整及分布式训练与推理实现,提升模型对需求变化与数据规模增长的适应能力。
SFT阶段能学习到新的知识吗?
在SFT阶段,模型能够基于预训练知识学习新模式和特定领域内容,但受限于预训练参数,难以掌握完全未知或超出理解范围的概念。其学习能力是优化而非从零开始。
大模型使用几十条数据微调后为啥性能差的很多?
大模型的损失地形由多个“盆地”组成,预训练形成的基本能力盆地(Basic Capacity Basin)代表通用能力。微调(SFT)通常在该盆地内细化出子能力(如数学、代码),不会损害整体性能。但若优化方向偏离(如学习率过大、数据差异大),可能造成性能崩溃,尽管发生概率较低(仅0.1%的方向危险)。
好的,请提供您需要总结的具体内容。
五、位置编码
LLM中的位置编码是什么?
Transformer通过位置编码引入序列信息,以弥补并行处理导致的序列感缺失。位置编码使用数学函数为每个标记分配独特的位置标识,从而帮助模型区分词语顺序,确保准确理解句子含义。
目前大模型中的位置编码有哪些?
位置编码分为绝对与相对两类。主流方法包括:正弦编码(Transformer原版,简单高效但外推差)、旋转位置编码(RoPE,相对位置优但实现复杂)、ALiBi(Attention后加偏置,外推性好但长序列性能仍降)。三者分别作用于Attention前、中、后阶段,各具特点。
手写一下正弦编码和旋转位置编码的代码?
面试中通常只需写出位置编码的核心实现,无需完整代码。正弦位置编码通过交替使用sin/cos函数生成位置向量;旋转位置编码(RoPE)则通过复数域旋转变换将位置信息注入query和key中,具体包括预计算旋转角度矩阵和应用旋转变换两个关键步骤。两者均能有效为模型提供序列顺序信息。
ALIBI真的有长序列依赖建模的能力吗?
ALiBi通过线性偏置实现局部滑动注意力,依赖多层叠加扩展感知范围,但理论长度有限。它更像一种增强局域性的注意力后处理技巧,而非传统位置编码。RoPE也可通过类似局部掩码实现长度扩展。ALiBi贴合语言模型的局部特性,其偏置矩阵实质是局部注意力的平滑操作。
大模型推理中超出训练长度的外推方式有哪些?
长度外推旨在使模型在短序列上训练后能泛化到更长的序列。主要方法包括:
- ALiBi:在注意力分数中添加线性偏置,通过多层注意力捕捉远距离信息,但感知能力受层数限制。
- 位置内插(PI):缩放位置编码,将测试序列压缩到训练长度范围内,可能扰乱局部分辨率,但微调后有效。
- NTK-aware方法:调整RoPE编码的基数,实现高频外推和低频内插,后续发展出动态调整版本。
- Yarn方法:混合进制设计,不同维度采用不同缩放策略,结合温度调整注意力,在微调和非微调场景均表现优异。
这些方法通过调整位置编码或注意力机制来改善外推性能,但仍是Transformer待优化的问题。
六、MoE方面
什么是MoE?
MoE(混合专家模型)是一种神经网络架构,通过门控网络动态选择并稀疏激活多个专家子模型,针对输入特征进行计算,在降低计算成本的同时提升模型表现。
MoE的特点?
MoE具有稀疏性、高效性和扩展性三大特点。稀疏性体现在架构和数据处理上,仅激活相关专家;高效性通过门控机制减少计算开销,提升训练和推理速度;扩展性支持在不增加计算负担的情况下扩大模型容量和数据集规模,显著提升性能。
MoE是替代了原先大模型中的哪一层?
MoE在大模型中替代了传统Transformer的前馈网络(FFN)层,通过引入多个专家网络并行处理,提升模型容量和计算效率。
MoE和FFN相比的优势?
MoE通过门控网络动态选择专家进行计算,相比FFN的密集计算具有稀疏性,显著降低计算量。同时,MoE能针对不同输入适配多样化任务,而FFN主要负责固定特征变换。
Moe中如何解决负载均衡问题?
MoE模型通过多种策略实现负载均衡:辅助损失函数(如负载均衡损失和变异系数)确保专家处理数据均匀;动态调整专家选择概率(如KeepTopK或无辅助损失策略)打破偏好;专家容量限制防止过载;分布式训练通过冗余专家、分层和全局负载均衡优化分配;简化路由策略(如Top-1)减少计算和通信开销。
使用MoE的好处是什么?
MoE模型通过稀疏激活机制提升计算效率,具备良好的可扩展性和任务定制灵活性,适用于自然语言处理、图像识别等大规模复杂任务场景。
MoE在训练中主要有哪几种并行策略?
MoE训练并行策略包括数据并行(DP)、模型并行(TP)和专家并行(EP)。DP分割数据,复制模型到各单元,但受限于内存;TP分布模型部分,允许更多专家但增加通信;EP分配专家到不同单元,减少内存负担并支持扩展。实际中常混合使用,如EP+DP或EP+DP+TP,以优化资源利用和效率。
MoE和集成学习方法有什么异同?
MoE与集成学习均集成多个模型,但MoE通过路由网络稀疏激活部分专家处理子任务,而集成学习则通过Bagging或Boosting方法稠密融合多个基模型的预测结果。
MoE中的路由网络是怎么设计的?
路由网络通常是一个前馈神经网络,它通过学习输入数据与专家之间的相关性,为每个专家计算权重或重要性分数,以反映输入数据与各专家擅长领域的匹配程度。
稀疏与密集MoE的区别?
稀疏MoE:仅激活少数专家,适合大规模模型,计算成本低。
密集MoE:激活所有专家,但权重分配不同,参与程度各异。
Switch Transformer的路由策略是什么?
Switch Transformer采用Top-1路由策略,每次仅激活一个专家,显著降低计算和通信开销,并通过负载均衡损失确保专家利用率均衡。
路由网络加噪声的初衷是啥?
为防止专家选择不均,路由网络在输出logits上添加噪声(如高斯或均匀噪声),再应用Softmax,以增加决策随机性,促进负载均衡。
传统MoE和现在主流MoE是如何选择expert的?
传统MoE使用门控网络计算专家权重,通过softmax得到权重后稠密聚合专家输出。主流方法引入噪声并选取Top-K专家,仅对选中专家计算softmax权重后进行聚合,显著提升了计算效率。
如何解决MoE中训练不均衡现象?
MoE通过专家选择实现稀疏性,类似dropout的随机失活,提升泛化能力。软性约束方法包括Sparsely-gated MoE的important loss和load loss,Switch Transformer的Load Balance与Capacity Factor,以及ST-MoE的router-z loss与load balance loss加权组合。
MoE算法为何训练时候容易不稳定?
门控设计需防止模型坍塌至单一专家。稀疏输出方差高,对随机种子敏感,导致训练结果不稳定。混合精度训练中低精度格式易引发梯度不稳定。专家激活不均衡导致梯度更新频率差异,影响收敛稳定性。
MoE算法优缺点?
MoE优势包括提升预训练和推理速度、增强扩展性及多任务学习能力。但面临训练不稳定、负载不均衡、微调困难、推理效率下降、部署复杂以及对计算资源的高需求等挑战。
为什么MoE有效从原理上分析一下?
论文分析表明,MoE的成功依赖于底层问题的聚类结构和专家的非线性。实验显示,MoE通过路由网络识别聚类特征,将复杂问题分解为简单子问题,由各专家高效解决。此外,MoE可视为一种集成学习,多模型集成提升了泛化能力,优于单一模型。
七、tokenizer方面
什么是分词?
分词是将文本拆分为标记(如单词或子词)的过程,使语言模型能高效处理数字序列,处理罕见词并减少词汇表大小,适用于多语言任务。
大模型中输入的token embedding和输出的embedding是同一个吗?
不是。从Llama源码看,其Transformer结构包含输入/输出嵌入层、注意力掩码机制及多层前向传播,与标准Transformer类似,但具体实现细节存在差异。
大模型中的tokenize方法有哪些?
主要子词生成算法包括BPE(基于频率合并字节对)、WordPiece(基于语言模型概率合并)、Unigram(迭代删除词元)和SentencePiece(统一多语言Unicode编码)。不同模型采用不同方法,如BERT使用WordPiece,GPT-2使用BPE。
说下BPE算法的流程?
字节对编码(BPE)是一种压缩算法,将高频字节对替换为未使用的字节。在NLP中,BPE将常见单词表示为单个标记,而罕见单词分解为多个子词标记,实现高效词汇编码和解码。
八、RL相关
预训练阶段是否已经接近极限?
预训练数据扩展仍有提升空间,未来优化将转向后训练阶段,通过强化学习(RL)交互与策略优化,进一步挖掘模型潜力,突破数据增长的局限。
在预训练中文本数据还是多模态数据更容易达到极限?
纯语言模型依赖文本数据规模与质量,而多模态数据(如图片、视频)仍有巨大潜力,但需更复杂处理。理想的多模态模型应兼具数据理解与高质量生成能力。
强化学习之前的后训练阶段通常使用什么方法?
后训练阶段采用监督微调(SFT)和直接偏好优化(DPO)。SFT提升对话和指令遵循能力,DPO优化输出,但整体性能提升有限。
现在的强化学习与之前的RLHF有什么区别?
强化学习依赖客观奖励(如任务完成度),适合长时间训练;RLHF依赖人类偏好标注,更适合主观任务。
后训练阶段使用的强化学习是什么类型?
后训练阶段主要采用基于策略的无模型强化学习方法(如PPO),具备良好的扩展性与大规模训练能力,同时结合一定的off-policy特性以提高数据利用效率。
post-training通常有哪些算法?
当前主流后训练方法如SFT、RLHF、DPO、EI及其变体(如RLAIF、PPO、ORPO)在提升大语言模型性能的同时,也显著增加了部署前的流程复杂度。
不以RLHF这种方式进行post-traing对齐,还有啥方法?
可以使用Best-of-N策略,即生成N个响应并通过奖励模型选择最佳响应。该方法简单易行,仅需调整响应数量N,无需复杂微调,便于部署预训练或指令微调模型。
文本类回答问题也适合用强化学习进行后训练?
文本类回答的后训练常依赖RLHF以应对主观评估。若开发出复杂评估机制,直接优化生成亦可行。
强化学习是否提高了训练成本和对GPU的需求?
强化学习因需大量样本生成与验证(如数学题的答案rollout),不仅未显著降低训练成本,反而增加了GPU需求,导致计算成本上升。
什么是推理扩展定律?
推理扩展定律指出,延长模型推理时间可显著提升性能,通过更深入的思考与自我修正生成更准确答案,但需根据任务类型权衡其效益。
说一下Long-COT和Short-COT以及Long2Short?
Long-COT与Short-COT分别指模型推理中的长输出和短输出策略。Long2Short旨在通过压缩输出长度,在保持正确性的同时提升推理效率,减少冗余。
如何将模型从长推理优化为短推理?
实现Long2Short的方法包括:模型合并以生成中等长度输出;引入长度惩罚平衡推理长度与准确率;筛选最短正确推理路径作为训练数据;以及通过强化学习直接优化短推理过程。
通过强化学习提升推理能力是否比单纯增加模型参数更有效?
强化学习通过优化推理过程而非扩大模型规模来提升性能。小模型增加推理长度可接近大模型效果,表明推理优化是有效的替代方案。
解释长上下文扩展?
长上下文扩展通过扩大模型窗口(如128k)提升性能。采用部分展开和分段生成提高训练效率,避免高成本,并通过检测重复内容优化生成过程。
说一下你在训练RL中的一些有趣的现象
模型在生成答案时可能表现出类似人类思考的行为,如使用“等一下”或“让我再反思一下”等词汇,甚至展现出“信心十足”的状态,这暗示其推理过程可能模拟了人类的思维模式。
强化学习的基本概念解释一下?
强化学习是机器学习的一个子领域,通过智能体与环境的互动,以最大化累积奖励为目标,学习最优行为策略。其核心机制包括试错和反馈,通过价值函数或Q函数形式化描述最优决策过程。
LLM中的RL怎么理解?
强化学习与大语言模型结合的关键要素包括:状态(用户输入的prompt)、动作(模型生成的response)、奖励(由奖励模型根据prompt-response对给出的评分)。整体目标是调整模型策略,通过奖励信号学习生成符合人类偏好的内容。
通过 RL 探索LLM训练有哪些优势?
将强化学习整合到LLM训练中,通过探索输出空间、学习相对优势、增强泛化能力及鲁棒性,使模型超越单纯模仿人类示例,能够处理分布外场景并持续优化策略,从而提升整体性能和适应性。
强化学习包含哪些关键要素?
强化学习通常建模为马尔可夫决策过程(MDP),包含状态、动作、状态转移概率、奖励和折扣因子五个关键要素,用于描述智能体与环境之间的交互和决策优化。
强化学习的两个关键特征?
强化学习通过试错和延迟回报评估行为,依赖累积奖励优化策略;而监督学习则基于已知正确答案提供即时反馈,直接减少预测误差。两者在反馈机制和优化目标上存在本质差异。
马尔可夫过程有哪些性质?
马尔可夫性质指出,系统的未来状态仅由当前状态和行动决定,与历史无关。这简化了环境描述,仅需当前状态即可预测未来。
经典RL算法的分类说一下?
强化学习算法主要分类包括:基于模型和无模型(是否依赖环境模型)、基于价值和基于策略(学习价值函数或直接策略)、在线和离线策略(数据来源)、交叉熵方法(鼓励探索)以及赌博机和梯度赌博机方法(无状态决策和梯度优化)。
优势函数与值函数、动作值函数的关系是什么?
优势函数(A)是动作值函数(Q)与状态值函数(V)的差值,即 A = Q - V。V 衡量状态的整体价值,Q 衡量状态-动作组合的价值,而 A 则评估特定动作相对于平均策略的增益。
估计值函数的三种常见方法有哪些?
强化学习中,值函数估计的三种主要方法包括:蒙特卡洛(MC)通过完整轨迹估计,时间差分(TD)利用部分轨迹信息,而广义优势估计(GAE)结合两者优点,平衡偏差和方差以提高效率与稳定性。
从偏差角度总结下估计值函数的三种方法?
MC方法无偏但高方差,适合奖励密集且随机性小的场景;TD方法低方差但高偏差,适合快速更新和实时场景;GAE方法通过参数λ灵活权衡偏差与方差,适用于需要平衡两者的通用场景。
蒙特卡洛方法的优缺点是什么?
优点:无需模型假设,直接基于实际回报学习,长期无偏且期望准确。
缺点:方差较大,仅依赖回合最终回报导致估计波动大,奖励稀疏或变化频繁时方差进一步增大。
时间差分方法的优缺点是什么?
优点:方差小,适合在线学习,可实时更新。
缺点:偏差较大,依赖估计值更新,易受初始偏差影响。
广义优势估计(GAE)是什么?
广义优势估计(GAE)结合蒙特卡洛和时间差分方法的优点,通过超参数λ平衡偏差与方差。它利用加权平均的TD误差估计优势函数,减少偏差并控制方差。
广义优势估计(GAE)的优缺点是什么?
优点:通过调整λ参数灵活权衡方差与偏差,实现更好的平衡。
缺点:相比纯TD或MC方法,计算量更大,需在每一步计算加权TD误差。
强化学习中的on-policy和off-policy有什么区别?
On-policy 使用与学习策略相同的行为策略采样数据,而 off-policy 允许行为策略与目标策略不同,支持利用历史数据(如经验回放)进行学习。
为什么要区分on-policy和off-policy?
强化学习中,策略分布一致性要求使用重要性采样等技术处理数据分布差异;off-policy方法通过经验回放提高数据效率,并允许使用保守的行为策略收集数据以确保安全性,同时学习更激进的目标策略。
说一下on-policy和off-policy的代表性算法?
在线策略(On-Policy)的代表算法包括PPO和A2C/A3C,而离线策略(Off-Policy)的代表算法有Q-Learning、DQN、SAC和TD3。
说一下on-policy和off-policy的优缺点?
On-policy方法数据分布与策略一致,收敛性更可靠但样本效率低;Off-policy方法可重用数据、样本效率高,但存在分布偏移和收敛困难的问题。
强化学习中的online和offline有什么区别?
在线强化学习通过与环境实时交互获取数据并更新模型,而离线强化学习则依赖预先收集的静态数据集进行训练,不与环境交互。
on/off-policy和online/offline的区别是什么?
强化学习中,on/off-policy关注采样策略与目标策略的一致性,而online/offline关注能否持续交互收集新数据。离线强化学习通常是off-policy,在线强化学习则可能包含on-policy和off-policy方法。
重要性采样的基本原理是什么?
重要性采样是一种统计方法,用于通过调整权重,使从采样分布 ( q ) 中抽取的样本能够估计目标分布 ( p ) 的期望。
重要性采样的作用是什么?
重要性采样通过使用替代分布来提升采样效率,尤其在目标分布难以采样时。在强化学习中,它支持利用旧策略的经验数据优化新策略,无需重新采样环境数据。
REINFORCE和PPO的区别和联系是什么?
REINFORCE和PPO是强化学习中两种策略梯度方法。REINFORCE基于单次采样数据一次性更新,实现简单但方差高、效率低,适合教学。PPO可重复利用数据、限制更新幅度,稳定性强、收敛快,适用于实际复杂任务。选择方法需根据具体场景和需求。
介绍下DPO中的BT算法模型?
Bradley-Terry模型是一种分析成对比较数据的统计方法,用于评估多个项目的相对偏好概率。其核心公式为P(i>j) = exp(b_i)/(exp(b_i)+exp(b_j)),其中b_i和b_j代表实体的隐性评分,基于逻辑斯蒂分布假定。
BT模型的优缺点?
优点:简单直观,易于实现,适用于成对比较数据。
缺点:假设比较独立,实际中可能不成立;对能力相近的对象预测准确性有限。
Reward Hacking是什么意思?
奖励函数设置不当导致智能体过度优化累积奖励而非预期目标,称为Reward Hacking。
RLHF的整体流程是什么?
RLHF包括两个核心步骤:首先训练奖励模型以评估输出质量,然后使用PPO算法优化语言模型的生成策略,使其更符合人类偏好。
RLHF中有哪些数据集?
RLHF使用三种数据集:偏好数据集训练奖励模型,提示数据集用于PPO流程训练语言模型,评估数据集则用于效果评估。
PPO中的四个模型及其作用是什么?
PPO训练涉及四个模型:策略模型(训练目标,更新梯度)、奖励模型(评估质量,不更新)、评论模型(预测价值,更新梯度)和参考模型(防止激进更新,不更新梯度)。
为什么需要训练奖励模型?
在强化学习中,直接使用人类反馈进行微调效率低。因此,训练奖励模型(RM)来模拟人类评估,提供持续奖励信号,指导智能体从环境交互中学习并优化策略,以实现目标。
奖励模型是怎么训练的?
奖励模型(RM)的训练流程包括:收集人类标注的偏好数据,通过对比不同回答的评分进行对偶训练,在预训练模型基础上添加Reward Head输出标量分数,最终用于强化学习中为生成回答提供奖励信号。
PPO的流程是什么?
PPO实施流程分为三步:首先,策略模型生成输出并由奖励模型打分;其次,评论模型预测累积奖励,并通过GAE算法估计优势;最后,基于优势函数优化策略模型,同时借助参考模型确保更新稳定性。
Critic Model和Reward Model的区别是什么?
在RLHF中,Reward Model通过人类标注数据独立训练,提供外部奖励分数以反映人类偏好;Critic Model与策略模型同步更新,动态估算价值或优势,辅助内部学习预测长期回报。前者评估内容质量,后者优化策略。
Rollout是什么意思?
“Rollout”是强化学习中的术语,指从初始状态按策略生成完整行为序列(episode),用于评估序列表现(如奖励计算),为策略优化提供数据。在RLHF-PPO中,特指用当前策略生成输出并评估的过程。
解释下对齐税(Alignment Tax)?
RLHF微调虽提升LLM的指令遵循和分布外泛化能力,但显著降低输出多样性,导致对齐成本。需在泛化性能与文本多样性间权衡,以优化实际应用中的模型行为。
PPO的痛点是什么?
PPO在算法上存在调参困难、训练结果不稳定的痛点;工程实现上涉及多阶段数据加载、自回归生成过程及多模型并行推理与训练,复杂度较高。
介绍下DPO算法的原理?
DPO通过提升受青睐样本的对数似然并降低不受青睐样本的对数似然来优化人类偏好,采用动态加权策略避免性能下降。与传统RLHF不同,DPO直接优化分类目标,通过隐式奖励模型和闭式解获得最优策略,无需强化学习。
DPO和SFT有什么相同点和不同点?
DPO和SFT都通过调整模型参数和外部数据优化文本生成,以符合人类偏好。不同在于:DPO直接使用偏好对比数据,无需奖励模型,适合主观或复杂偏好场景;SFT依赖标注的输入-输出对,通过监督学习优化,适用于有明确答案的任务。选择取决于数据特性和任务需求。
DPO相比PPO有哪些改进?
DPO相比PPO在RLHF中具有以下优势:训练流程简化,超参数鲁棒性更强,计算效率与效果提升,应用范围扩展,模型解释性与偏好适应性增强,长期性能与稳定性改善。
写一下DPO算法的loss?
DPO损失函数通过比较偏好数据(被选回复y⁺与被拒回复y⁻)优化策略,无需显式奖励模型。其重参数化等价于隐式奖励优化,其中β为缩放系数,实现策略与人类偏好的直接对齐。
能写出DPO算法的主要代码吗?
该函数计算直接偏好优化(DPO)损失和奖励。通过比较策略模型和参考模型的对数概率,提取优选和非优选样本的差异,使用逻辑函数计算损失,并基于策略与参考模型的对数概率差乘以beta参数得到奖励值。
DPO有哪些改进算法?
谷歌DeepMind提出改进的IPO方法,通过正则化DPO损失函数防止过拟合,无需提前停止即可稳定收敛。KTO方法基于人类心理认知优化模型,仅需“优/劣”标签降低数据成本,但模拟人类认知并实际应用仍具挑战。
说下DPO算法的优缺点?
优点:直接利用人类偏好进行优化,无需复杂奖励模型,适用性广。
缺点:可能在小数据集上过拟合,计算成本较高,且依赖高质量偏好数据。
RL相比于SFT的好处有哪些?
强化学习(RL)在大型语言模型(RLM)微调中相比有监督微调(SFT)具有显著优势:RL能评估整个输出文本的整体质量,而非仅单个词元,从而提升表达的多样性和对细微变化的敏感性;通过奖励机制减少幻觉问题,鼓励模型在不确定时放弃回答;还能在多轮对话中累计奖励,提升整体连贯性。RL提供了更全面灵活的反馈,适用于复杂任务。
REINFORCE++的主要思想是什么?
REINFORCE++是REINFORCE的增强版本,融合了PPO的关键优化技术,同时移除了critic网络依赖。其核心目标是提升训练简洁性、稳定性,并降低计算开销。
简单说下GRPO算法?
GRPO是PPO的在线强化学习改进版,用采样平均值替代Critic模型,保留重要性采样和截断机制。仅策略模型需训练,参考模型和奖励模型固定不变。
GRPO算法的目标函数?
这张图片展示了一个简洁的界面,包含一个输入框和两个按钮,分别是“总结”和“清除”。界面设计简洁明了,功能直观。
离散KL散度的推导过程你说一下?
k1、k2、k3是KL散度的三种估计器。k1基于蒙特卡洛方法直接估计,无偏但高方差。k2利用二阶泰勒展开近似,低方差但有偏。k3结合控制变量法,引入期望为零的修正项,实现无偏且低方差。三者分别适用于不同精度与稳定性需求的场景。
近似KL散度的计算
本文讨论了KL散度的样本近似方法,包括前向和反向KL散度。由于解析解可能不存在或计算复杂,近似方法被用于提高效率。近似应满足低偏差和低方差的要求。前向KL散度的近似通过引入修正项确保正定性,最终形式为样本均值加上修正项。反向KL散度采用类似方法,最终近似形式与前向类似,但修正项符号相反。
离散token的KL散度在ppo中怎么计算
PPO算法中计算Actor与参考模型概率分布的KL散度时,OpenRLHF提供了三种近似方法:K1是无偏但高方差的蒙特卡洛估计;K2是低方差但有偏的二阶近似,适用于分布接近时;K3结合无偏性和低方差,通过控制变量优化,是平衡准确性与稳定性的推荐选择。具体方法根据分布差异和需求选用。
OPEN-RLHF中的PPO算法通过哪种方式计算KL散度的
在Open-RLHF中,KL散度通过k1近似计算,实现方式为:使用actor和reference模型的log概率分布,计算差值并乘以mask。代码简洁,仅需一行。
为何大模型普遍训练1-2个epoch
大模型通常只训练1-2个epoch,原因包括:数据规模大且冗余,多次遍历收益有限;计算成本高,需平衡资源与性能;追求泛化能力,避免过拟合;通过随机采样、多任务训练提升数据多样性;采用早停机制防止无效训练。预训练阶段1-2个epoch已足够学习通用模式,微调阶段可针对性调整。
为什么RLHF中,PPO需要Critic模型而不是直接使用RewardModel
模型包含两个预测模块:Reward模型预测即时奖励值,通过线性层转换后提取EOS位置的标量输出;Critic模型则评估长期价值,输出一个动作维度的向量,用于估计状态或状态动作对的累积奖励。Reward提供短期反馈,Critic提供长期价值导向,共同辅助策略优化。
为何大模型非RLHF不可
监督微调(SFT)通过模仿人类标注数据初步对齐模型意图,但存在泛化能力不足和偏好权衡问题。基于人类反馈的强化学习(RLHF)则通过人类偏好反馈进一步优化模型输出,提升质量、安全性和可控性。SFT是“模仿”,RLHF是“优化”,二者结合是大模型对齐人类意图的有效方法。
大模型开始训练初期的Loss大概是多少
在大模型初始化训练阶段,初始损失值通常接近理论上的“随机猜测”损失,具体取决于词表大小和损失函数类型。对于交叉熵损失,理论初始值为 ln(V),其中 V 为词表大小。例如,V=50,000 时,理论损失约为 10.82。实际中,由于参数初始化、数据分布等因素,初始损失可能略有差异,但通常接近该理论值。
PPO算法中的actor和critic学习率为啥不一样?
在RLHF中,Actor和Critic的学习率通常不同,以适配其角色差异。Actor负责策略输出,对参数变化敏感,需低学习率(如5e-7)防止策略震荡;Critic估计价值,需高学习率(如9e-6)以快速收敛并提供稳定梯度。两者梯度幅度不同,且经验上Critic学习率常比Actor高1-2个数量级,以确保训练稳定性与效率。
你想过为什么交叉熵log是以e为底而不是2为底
在LLM训练中,交叉熵损失函数默认使用自然对数(ln),因其数学性质(如梯度计算简洁)与主流框架实现一致。不同底数仅影响损失值的单位(纳特vs比特),不改变优化方向,实际训练中通常无需调整。
为什么计算重要性参数用log相减后再exp而不是直接除
在强化学习(如PPO)中,使用对数概率差取指数(exp(log_p - log_q)
)而非直接概率比值(p/q
)计算重要性权重,主要基于数值稳定性、计算效率和梯度友好性。直接计算概率比值易因极小值导致数值下溢或溢出,而对数操作避免了这些问题,且与深度学习框架优化及数学定义(如重要性采样要求比值)保持一致。减法(p - q
)则无概率意义。因此,使用对数概率是标准且可靠的做法。
model.generate如何强制让结果等长
model.generate()
默认自动填充输出至相同长度(使用 pad_token_id
),确保返回规整张量。实际内容长度可能因遇到 eos_token_id
而不同,可通过 attention_mask
区分有效内容与填充部分。需提供 pad_token_id
以支持填充,max_length
参数可统一控制输出长度。
PPO算法到底是on-policy还是off-policy
PPO本质上是on-policy算法,要求使用当前策略生成的新数据进行更新,但通过重要性采样实现了对同一批数据的有限次重用,并利用裁剪或KL惩罚约束更新幅度以避免策略偏离。这使得PPO在保持on-policy稳定性的同时,部分吸收了off-policy的数据效率优势,成为一种以on-policy为主、兼具部分off-policy特性的混合方法。
PPO算法中新旧策略的关系是什么?
PPO交替使用旧策略收集数据和新策略进行更新。通过重要性采样调整新旧策略差异,并用裁剪限制更新幅度,确保稳定性。更新后,新策略替换旧策略进行下一轮数据收集,实现了高效且稳定的策略优化。
PPO中完全重用旧数据会有哪些问题?理论分析下
在强化学习中,完全重用旧数据会导致训练不稳定,主要原因包括策略分布偏移和重要性权重方差爆炸。策略更新后,新旧策略的动作选择概率差异过大,导致数据分布不匹配。重要性权重可能因概率比值极端化而爆炸或消失,引发梯度更新不稳定和策略崩溃,如参数剧烈震荡或模型退化。
如何解决PPO算法中方差大和训练策略不稳定的现象?
PPO通过重要性权重裁剪和KL散度约束策略更新,防止分布偏移过大。裁剪限制权重范围,避免单一样本主导;KL散度强制新旧策略接近,确保训练稳定。两者结合平衡了数据重用效率与更新安全性,是PPO的核心机制。
解释一下PPO算法重要性采样的原理
PPO算法通过重要性采样利用旧策略数据估计新策略的期望回报,使用重要性权重修正分布差异。为避免训练不稳定,PPO引入截断或KL约束限制权重变化,从而实现高效且稳定的离线策略优化。这是PPO成为主流强化学习算法的重要原因。
从偏差角度总结下估计值函数的三种方法
MC方法无偏但高方差,适合奖励密集且随机性小的场景;TD方法低方差但高偏差,适合实时性要求高的场景;GAE方法通过λ参数灵活权衡偏差与方差,适用于需要平衡的场景。
解释下GRPO的基本原理?
GRPO通过组内归一化替代价值模型,降低计算成本。具体步骤包括:样本分组生成多个输出并计算奖励统计量;基于组内均值和标准差计算相对优势值;通过约束策略优化调整模型。相比PPO,其优势在于无需价值模型减少内存占用,且组内竞争机制更适合稀疏奖励场景。
DPO属于off-policy还是on-policy呢?
DPO是一种off-policy算法,可直接利用现有pair数据训练,无需采样和标注,节省成本,但效果难以保证。PPO是on-policy算法,通常整体效果优于DPO。
DPO算法第0步的loss是什么?
在DPO训练初始阶段,若策略模型与参考模型相同(πθ = πref),损失值约为0.693(即-log(0.5))。若两者不同,损失值会因初始化差异而波动,但通常接近该基准值。该值标志着训练起点,随优化过程逐渐下降。
PPO中使用reward存在哪些问题?
在PPO算法中使用奖励模型时,常见问题包括奖励模型偏差、奖励稀疏性、奖励欺骗、非平稳性、奖励尺度问题、多目标冲突以及训练-测试差异。这些问题可能导致策略优化不稳定或失效。优化方向包括正则化奖励模型、动态更新、多模型集成和人工干预,以提高鲁棒性和性能。
RL中on/off line以及on/off policy的区别和联系
强化学习中,Online/Offline 和 On-policy/Off-policy 是两组不同维度的概念。前者关注数据收集方式(是否实时交互),后者关注数据使用方式(是否依赖当前策略生成的数据)。它们可以交叉组合,例如 Online + Off-policy(如DQN)或 Offline + Off-policy(如BCQ)。常见误解包括混淆两组概念或认为 Off-policy 一定优于 On-policy,实际需结合具体场景分析。
如何看待一大堆算法号称性能超越PPO这一现象?
PPO在RLHF中存在训练不稳定、计算成本高等问题。替代算法如DPO、KTO、RRHF、SLIC和ORPO通过简化流程、引入新理论或优化目标,试图提升效率或稳定性。这些方法在理论上合理,实验中也显示出潜力,但大多基于小规模模型验证,实际应用仍需考虑数据质量、实现成熟度及泛化能力。
分析一下RLHF的替代算法的局限性
替代算法(如DPO、KTO、RRHF、SLIC)面临四大挑战:1)数据依赖性强,对标注质量和噪声敏感;2)任务适配性差,跨场景泛化能力弱;3)理论假设严格,普适性不足;4)生态支持不完善,缺乏标准化工具链。需通过数据增强、算法改造、理论验证和工程优化协同改进。
如何保证请解释下同一Prompt在LLM中多次计算得到一样的结果?
为确保生成结果的确定性,可采用以下方法:1)静态Padding:预处理时统一所有prompt长度,平衡效率与一致性,但可能浪费计算资源;2)分离推理:逐条处理prompt,保证绝对一致,但大幅降低吞吐量;3)确定性计算:启用框架级确定性设置,确保可复现性,但性能下降且部分操作不支持。根据任务需求选择:一般场景优先静态Padding,关键任务用分离推理,实验调试启用确定性计算。
请解释下同一Prompt在Batch Inference为什么会得到不一样的结果?
在LLM(如LLaMA2)的批量推理中,即使同一prompt被复制多次,输出也可能不一致。主要原因包括:动态padding导致同一prompt在不同batch中padding长度不同,影响输入内容;同时,Transformer模型对padding的极小数值误差(由softmax的浮点精度和深度残差连接累积)敏感,可能改变最终输出分布,尤其在采样策略下影响显著。
DPO训练过程中,training positive和 negative的概率同时下降的原因?
在DPO训练中,优选和劣选样本的概率可能同时下降,这源于两个核心原因:一是参考策略的KL约束迫使模型将概率分布向参考模型对齐,可能导致两者概率被压低;二是优化目标仅要求相对偏好(优选概率高于劣选),而非绝对提升,模型可能同时降低低质量样本的概率。这种现象反映了模型在偏好优化和分布约束间的权衡。
什么情况下DPO等于PPO?
当满足以下条件时,DPO与无KL约束的PPO奖励最大化目标数学等价:
- 奖励函数一致:DPO的隐式奖励模型 与PPO的显式奖励函数 相同;
- 无策略约束:PPO的KL正则化系数 (即移除约束),且初始策略分布 与DPO的参考策略相同。
此时,两者目标均简化为直接最大化期望奖励。
DPO的变体有哪些,主要解决DPO的什么问题?
RSO优化了DPO的采样机制,Iterative DPO改用on-policy采样,IPO限制reward gap以避免过拟合,DPOP则惩罚正例概率下降的pair以提升模型效果。
RL在训练中的Reward很高但在测试时很低的原因是什么?
训练奖励上升但人工评估下降时,可能由奖励劫持或泛化问题导致。若测试奖励增长但人工结果下降,多为奖励劫持;若测试奖励未增长或下降,则多为泛化问题。
BT model (DPO,RM的训练形式)的问题在哪?
Bradley-Terry 模型在 DPO/RM 训练中存在三个核心问题:偏好不可传递性、独立性假设局限性和评分尺度不足。其损失函数易导致模型坍缩(正负例概率极端化)、过拟合(偏好易学习样本)和无法处理循环偏好,从而降低鲁棒性和泛化能力。
Pair RM 相比于原 RM 形式有什么好处?
奖励模型(RM)用于评估生成文本质量并输出奖励值,以优化模型。传统RM通过回归模型对单个文本打分(point-wise),而Pair RM通过比较文本对的相对优劣(pair-wise)进行训练,其数据格式为(输入,正样本,负样本)。Pair RM具有标注效率高、抗噪声能力强、偏好对齐更直接等优势,广泛应用于RLHF方法(如ChatGPT),提升模型与人类偏好的一致性。
DPO训练后的模型为什么会输出越来越长?
DPO训练后模型输出长度的变化主要受训练数据中正负例长度分布的影响。若正例普遍较长,模型会学习降低终止概率(如``)并增加过渡词的使用,导致输出变长;反之则输出变短。这一现象源于DPO隐式优化token级概率,而非显式控制长度,反映了模型对数据表面统计特征的拟合。要调整长度,需从数据构造入手。
如何解决DPO中输出长度过长的问题?
论文指出DPO训练中模型常混淆长度与质量,导致偏好对齐偏差。其解决方案包括引入长度归一化损失以消除长度影响,并加入长度条件控制标记,使模型能独立学习质量并支持显式长度控制。实验证明该方法在固定长度下生成质量更高,长度控制更精准。其他改进方向包括数据平衡、推理阶段长度惩罚和训练正则化。
RL Scaling Law 中的“过优化”现象及其缓解方法是啥?
RLHF训练中,策略模型可能过度优化奖励模型,导致性能下降。缓解方法包括:提前停止训练、引入KL惩罚项限制模型偏离,以及提升奖励模型的泛化能力。
可以用 GRPO来训练非 reasoning任务不
GRPO的核心思想——通过组内策略的相对比较来优化策略——可扩展至非reasoning任务,如控制、生成和分类任务。其优势在于通过组内相对比较降低方差,提升训练稳定性,适用于奖励稀疏或需要多策略并行的场景。具体应用中需重新设计组划分和比较指标,但在已有高效优化方法的任务中可能提升有限。
如何避免在小模型上RL有效但大模型上RL效果很差?
在小模型中有效的强化学习策略在大模型中常失效,原因在于大模型输出在概念多样性上不足,而语法多样性较高。小模型因熵更高,能生成概念更多样的负样本,使反馈模型更关注语义差异;而大模型输出概念相似,反馈模型易学习虚假语法模式,导致强化学习策略失效。这解释了模型尺寸扩展时强化学习效果下降的现象。
九、工程方面
训练大语言模型存在那些问题?
训练大语言模型面临计算资源昂贵、数据处理复杂、收敛速度慢、优化调试困难,以及通信和同步效率问题。
什么是点对点通信?
点对点通信是分布式系统中设备间的直接数据传输方式,具有低延迟和高带宽的优点,但不适合大规模数据传输。
什么是集体通信?
集体通信是多节点间同时传输数据的方式,如AllReduce和Broadcast,常用于分布式训练中同步模型参数或梯度,高效处理大规模数据传输。
什么是数据并行?
数据并行是一种分布式训练方法,将训练数据分批次分配给多个设备,每个设备拥有完整模型副本,独立计算梯度后通过集体通信(如AllReduce)汇总并更新模型参数。
数据并行如何提升效率?
数据并行通过将数据集分散到多个设备并行处理,减轻单个设备负担并加速训练。优化通信机制(如AllReduce)可减少同步开销,提升效率。
什么是流水线并行?
流水线并行将模型分段分配到不同设备,数据以接力方式流动,实现大规模分布式训练。
什么是张量并行 (intra-layer)?
张量并行通过在单个层内将大型张量切分到多个设备并行计算,减少内存负担并加速处理,常用于Transformer的注意力机制。
对比下数据并行、张量并行和流水线并行?
数据并行通过复制模型分摊数据加速训练;张量并行切分张量降低内存需求;流水线并行拆分模型实现分布式训练。三者各有优劣,常结合使用以提升效率。
什么是3D并行?
3D并行是一种混合并行策略,结合数据、张量和流水线并行,通过多维度并行化高效利用计算资源,适用于大规模分布式训练。
只想用1张显卡训练LLM的要求是什么?
使用单张显卡训练LLM时,需具备足够显存(如16GB以上)以容纳模型参数与数据,同时依赖高计算能力(如CUDA核心数)确保训练效率。
如果有N张显存足够大的显卡怎么加速训练?
通过数据、张量或流水线并行策略,可将模型和数据分配到多个显卡上并行训练,显著加速训练过程。策略选择取决于模型规模和硬件配置。
如果显卡的显存不够装下一个完整的模型呢?
当显卡显存不足时,可采用模型并行(如张量或流水线并行)将模型拆分到多个设备训练,并结合显存优化技术(如ZeRO或激活重计算)减少显存占用。
使用PP推理时一个串行的过程如何提高效率?
流水线并行推理通常串行执行,但通过重叠计算与通信、引入微批次等方法,可减少空闲时间,提升整体效率。
3种并行方式可以叠加吗?
是的,混合并行策略(如3D并行)结合数据、张量和流水线并行,可充分利用计算资源并优化训练效率。
Colossal-AI 有1D/2D/2.5D/3D,是什么情况?
Colossal-AI 是一种分布式训练框架,支持多种并行策略:1D(数据并行)、2D(数据+张量并行)、2.5D(2D+优化)和3D(数据+张量+流水线并行),适用于不同规模的分布式训练需求。
除了3D并行有没有其他方式大规模训练?
大规模训练可通过3D并行、ZeRO系列优化、模型切分(如Megatron-LM)及混合精度训练等方法实现。
有了ZeRO系列为啥还需要3D并行?
ZeRO系列优化技术专注于显存优化,而3D并行结合多种策略提升计算资源利用率。两者结合可显著提升大规模分布式训练的效率与可扩展性。
普通用户适不适合玩3D并行?
3D 并行对普通用户门槛较高,需充足硬件和技术基础。若条件允许,可借助开源工具(如 Colossal-AI)进行小规模实验。
普通用户适不适合直接上多机多卡的ZeRO3?
对于普通用户,ZeRO3在多机多卡环境下存在硬件成本高、技术门槛大的问题,尤其在万兆网条件下。若预算充足且有分布式训练需求,建议从小规模实验入手逐步尝试。
分布式并行及显存优化技术并行技术有什么特点?
分布式并行技术通过多设备协作加速训练,包括数据、模型、流水线和混合并行。显存优化技术减少显存占用并提升单设备能力,涵盖ZeRO系列、激活重计算和混合精度训练。
显存优化技术有哪些以及特点?
显存优化技术包括:ZeRO(优化存储与通信)、激活重计算(反向传播时重算激活值)和混合精度训练(结合FP16/FP32),共同减少显存占用并提升训练效率。
说下提高PP推理效率的方法吗?
除了重叠计算,流水线并行推理效率还可通过以下方法提升:减少流水线气泡(如DualPipe算法)、优化通信(如RDMA)、微批次技术、并行解码、动态批处理、注意力机制优化(如FlashAttention)以及结构化管理。这些方法共同优化调度、通信和计算,显著提高设备利用率和推理速度。
减少流水线气泡策略有哪些?
减少流水线气泡的策略包括:采用双向流水线并行(DualPipe)和零气泡算法优化调度,利用微批次技术和计算通信重叠提高设备利用率,结合动态负载均衡和内存优化减少空闲时间。这些方法共同提升流水线并行效率。
micro-batch是什么?
Micro-batch是一种将数据分割为极小批次的数据处理策略,用于优化深度学习训练和推理。它通过提高设备利用率、优化内存使用、减少通信开销,适用于流水线并行、分布式训练和小显存设备场景,有效提升大规模模型的训练和推理效率。
为什么大模型推理时显存涨得那么多还一直占着?
大模型推理时显存占用高且持续的原因包括:模型参数权重占用大量显存,KV Cache随序列长度增长而增加,中间激活值占用少量显存,以及推理结束后显存释放可能因框架或驱动延迟而未能及时回收。
大模型推理时显存占用高,有没有解决办法?
大模型推理显存优化方法包括:禁用梯度计算、释放中间变量、输出移至CPU、KV Cache量化与管理、模型权重卸载、混合精度推理及模型压缩(量化/稀疏化),有效降低显存占用。
大模型在 GPU 和 CPU 上推理速度如何?
大模型在 GPU 上推理速度更快,适合并行计算,尤其通过量化(如 INT8)可显著提升性能。CPU 推理速度较慢,但可通过 SIMD 指令集(如 AVX2)加速,适用于资源受限环境。
如何具体实施 GPU-CPU 混合推理?
GPU-CPU混合推理通过异构负载分配、内存层级优化、软件栈优化和硬件配置提升性能。动态负载均衡可提升吞吐量2~3倍,数据预取可隐藏40~60%传输延迟,流水线并行提升吞吐量1.8倍,PCIe优化提升带宽利用率30%。
推理速度上,INT8 和 FP16 比起来怎么样?
INT8量化显著减少显存占用并提升推理速度,但精度较低;FP16在精度和显存占用之间取得平衡,适用于对精度要求较高的场景。
FP16 在哪些硬件上支持最好?
FP16 在 NVIDIA GPU(如 A100、H100、RTX 3090/4090)上支持较好,适合大规模和中等规模模型推理。Intel Xeon CPU 通过 AVX-512 支持 FP16,但需软件优化。边缘芯片如 Orin-X 适用于低功耗场景。建议根据任务需求和资源预算选择硬件,高精度场景优先 NVIDIA GPU,资源受限时可考虑 INT8 或边缘芯片。
大模型生成时的参数怎么设置?
大模型生成参数包括温度(控制随机性)、Top-k/p采样(限制词汇范围)、最大长度(限制文本长度)和KV Cache(优化计算效率)。
有哪些省内存的大语言模型训练/微调/推理方法?
通过量化技术(INT8/INT4、混合精度)、模型优化(LoRA、梯度检查点)、分布式训练(ZeRO、FSDP)及推理优化(KV Cache、微批次)显著减少显存占用,提升训练与推理效率。
常见的分布式训练框架有哪些以及特点?
常见的分布式训练框架包括:Pyytorch DDP(简单易用)、DeepSpeed(大规模训练)、Megatron-LM(专注大模型)、Colossal-AI(多并行策略)、Horovod(轻量高效)。
介绍下DeepSpeed这个库?
DeepSpeed是微软推出的开源深度学习优化库,专注于提升大规模模型训练和推理效率。通过创新技术显著减少训练时间和资源消耗,特别适用于分布式训练场景。
DeepSpeed 中的 Zero-1、Zero-2 和 Zero-3 分别起到什么作用?
Zero-1 分区优化器状态,Zero-2 进一步分区梯度,Zero-3 分区模型参数并支持 CPU/NVMe 内存卸载,实现更大内存节省。
DeepSpeed 中的 Selective Activation Recompute 策略是什么?
选择性激活重计算是一种内存优化技术,通过仅重新计算关键激活值而非全部存储,在减少显存占用的同时保持训练精度。
DeepSpeed 中的 Flash Attention2 是如何实现显存优化的?
Flash Attention2 是一种高效的注意力机制实现,通过分块计算和减少冗余操作优化显存访问,在保持性能的同时显著降低显存占用。
如何实现混合并行策略(如数据并行 + 模型并行)?
通过模型并行与数据并行的混合策略,将模型横向切分到多个GPU组,组内进行数据并行,并优化通信方式,仅同步梯度。使用DeepSpeed等框架配置并行层级,例如在8个GPU上分为2组模型并行,每组内4个GPU进行数据并行。
对比 DeepSpeed 与 Horovod 的分布式训练特性
DeepSpeed适用于千亿参数大模型训练,支持完善的模型并行与显存优化,但需修改代码集成。Horovod适合中小规模数据并行,仅需几行代码即可快速部署,但模型并行支持较弱。根据需求选择:极大模型选DeepSpeed,快速数据并行选Horovod。
量化技术在大模型中的作用是什么?
量化技术通过降低模型参数精度(如FP32转INT8),减少显存占用和计算量,从而提升推理速度并降低硬件需求。
训练后量化(PTQ)和量化感知训练(QAT)有什么区别?
PTQ在训练后量化,简单快速但精度较低;QAT在训练中量化,精度高但训练成本更高。
LLMs中,量化权重和量化激活的区别是什么?
量化权重通过减少模型参数的存储和计算开销;量化激活则针对推理阶段的中间值,以降低计算量。
AWQ量化的步骤是什么?
AWQ量化步骤包括:训练模型获得浮点权重,通过统计分析确定量化范围,并使用量化感知训练微调模型以适应量化。
INT8 量化对模型精度的影响大吗?
INT8量化通常导致模型精度下降3-5%,但能显著优化性能:显存占用降至FP16的一半,推理速度提升约3倍。特别适用于资源受限的边缘或移动设备,在可接受的精度损失下大幅提升效率和降低资源需求。
量化技术在哪些硬件上支持最好?
NVIDIA GPU 支持 INT8 和 FP16 推理,并配备高效的 Tensor Cores;Intel CPU 通过 AVX-512 指令集支持 BF16 和 INT8 推理。
如何选择量化精度(如 INT8 vs FP16)?
INT8适合边缘设备,速度快且省显存,但精度略低;FP16适用于高精度需求场景,显存和计算复杂度介于FP32和INT8之间。
量化技术在大模型推理中的优势是什么?
量化技术通过减少模型显存占用和计算复杂度,使其能在资源受限的硬件上高效运行,同时保持高推理速度。
量化技术在大模型训练中的应用有哪些?
量化技术在大模型训练中用于减少显存占用和加速训练,如通过量化感知训练(QAT)在训练阶段引入量化操作,使模型适应低精度格式。
量化技术在大模型中的未来发展方向是什么?
未来量化技术将优化精度和计算效率,软硬件协同优化成为关键趋势。
什么是混合精度训练?
混合精度训练结合FP16和FP32数据格式,旨在减少显存占用并加速训练,同时最小化精度损失。
混合精度训练的基本流程
混合精度训练流程:初始化FP32模型与优化器,将权重转为FP16进行前向传播和反向计算。损失计算使用FP32确保稳定性,梯度通过缩放因子转为FP32以避免下溢。最终用FP32梯度更新权重,并循环直至收敛。
混合精度训练的优点是什么?
通过减少显存占用和加速训练过程,使大模型能在有限硬件上高效训练,同时利用动态损失缩放保持模型精度。
混合精度训练的缺点是什么?
实现复杂度较高,需调整训练代码,且部分场景下需手动调整损失缩放参数。
混合精度训练对硬件的要求高吗?
混合精度训练需要支持FP16运算的现代GPU,如NVIDIA的Volta及后续架构(V100、A100等)。这些硬件具备专门的Tensor Cores,可显著提升FP16运算效率,是实现该训练方式的基础。
实现混合精度训练的难度大吗?
深度学习框架原生支持混合精度训练,大幅降低了实现难度,用户通过简单配置即可启用。但对于复杂或特殊需求模型,仍需理解原理并进行调整优化。
混合精度训练是否会影响模型的收敛速度?
混合精度训练通过提高计算效率加速每轮迭代,但总体收敛时间可能与FP32相似或略有提升。通过损失缩放和FP32主副本维护,它在保持稳定性的同时实现总训练时间加速。
混合精度训练中溢出问题的原因?
混合精度训练中FP16数值范围有限,易出现上溢和下溢。激活函数和梯度计算易导致数值问题,梯度缩放不当可能引发NaN。硬件和框架支持不足,且需频繁在FP32与FP16间转换以维持稳定性。
如何解决溢出问题?
混合精度训练通过损失缩放、FP32权重副本和关键操作的FP32计算,结合硬件与框架优化,有效提升训练效率并避免精度损失。
混合精度训练的关键技术是什么?
自动混合精度(AMP)自动选择操作精度,简化实现;动态损失缩放防止低精度计算中的数值下溢。
什么是浮点数的动态范围?
浮点数的动态范围指其可表示的数值范围,从极小值到极大值。FP16(16位)和FP32(32位)通过指数和尾数位数差异影响范围,数值过小或过大分别导致下溢和上溢。
FP16 能表示的最小和最大正数及负数分别是多少?
FP16采用1位符号位、5位指数位和10位尾数位。最大正数约65504,最小规格化正数约6.10×10⁻⁵,最小非规格化正数约5.96×10⁻⁸。负数的绝对值范围与正数相同,仅符号位为1。
什么是舍入误差?为什么浮点数的间隔是非均匀的?
舍入误差源于浮点数有限的精度,导致数值被截断或四舍五入。浮点数间隔非均匀,由尾数和指数共同决定,指数越大间隔越大。例如FP16中,非规格化数间隔均匀,规格化数间隔不均匀,可能导致小数值被忽略,产生误差。
如何在 PyTorch 中使用自动混合精度(AMP)?
PyTorch 的 torch.cuda.amp
模块支持自动混合精度(AMP)训练,可自动选择操作精度并应用动态损失缩放,以提升训练速度和减少显存占用。
如何使用 AMP 混合精度训练?
使用 torch.cuda.amp.autocast
自动管理操作精度,并通过 torch.cuda.amp.GradScaler
实现动态损失缩放,以提升训练效率并避免梯度下溢。
混合精度训练中的动态损失缩放是什么?
动态损失缩放通过动态调整损失值比例,防止低精度计算中的数值下溢,确保梯度计算的稳定性。
混合精度训练在大模型训练中的应用场景有哪些?
混合精度训练在大规模语言模型(如GPT-3、LLaMA)训练中广泛应用,显著降低了显存占用并缩短了训练时间。
在混合精度训练中,如何选择合适的精度?
显存有限时优先使用FP16,对精度要求高时可结合FP32进行混合精度训练。
是否所有操作都可以使用 FP16 进行计算?
不同操作类别需采用不同精度策略:向量点积和大规模求和应在 FP32 中累积以保证精度;逐元素操作(如激活函数)可根据性能及实现便利性选择 FP16 或 FP32。这样既发挥 FP16 优势,又确保训练准确性和稳定性。
为什么深度学习通常默认采用单精度 FP32 进行训练,而不是双精度 FP64?
深度学习通常使用FP32精度已足够,无需更高精度的FP64,除非涉及科学或金融等对精度要求极高的领域。
为什么乘法用FP16而加法累积要用 FP32?
乘法误差不会累积,而加法会持续累积误差,因此加法操作需使用FP32以确保数值稳定性。
混合精度训练在大模型推理中的优势是什么?
混合精度训练通过降低计算精度,有效减少显存占用并提升推理速度。
混合精度训练是否会降低模型的准确度?
正确应用混合精度训练的关键技术(如维护FP32主副本、损失缩放和精度累积)可保持模型准确度,甚至可能优于全FP32训练。若仅使用FP16而无这些技术,则可能导致精度下降。合理策略可有效避免精度损失。
为什么有时使用 FP16 训练的结果会优于 FP32?
FP16通过引入噪声起到正则化作用,减少过拟合并提升泛化能力,同时帮助模型探索更广参数空间以寻找更优解。
混合精度训练是否适用于所有神经网络模型?
混合精度训练虽广泛适用,但不同模型对精度敏感度各异。某些特殊或未测试模型可能需要额外调整,以确保训练稳定性和准确性。
如何选择合适的损失缩放因子?
选择损失缩放因子的方法包括:固定因子(如常见值8)、动态因子(根据梯度统计动态调整)和自动调整(未来可能支持的实时优化方法)。
简单说一下混合精度训练的原理?
混合精度训练结合FP16和FP32:前向和反向传播使用FP16计算,同时维护FP32权重备份用于梯度更新。通过损失缩放技术防止梯度下溢,先将损失放大,计算梯度后再缩小,确保数值精度。
大模型的训练和推理中显存和计算量的情况?
模型参数量为Φ = l(12h²+13h)+Vh。训练计算量约为前向的3倍(含后向),训练显存占用为20Φ+34bsh+5bs²a(字节),包括参数、梯度和优化器状态。推理显存为2Φ+4bh(s+n)(字节),仅含模型参数。
损失缩放的流程是怎么样的?
损失缩放是混合精度训练中的关键技术,用于防止梯度下溢。它通过放大损失值来提升反向传播中的梯度幅度,确保FP16表示的有效性。缩放因子可基于常数、经验或梯度统计选择,需避免溢出,并在溢出时跳过权重更新以维持训练稳定性。
训练大模型导致loss spike的原因是什么?
Loss spike是由于Adam优化器在后期训练中,浅层梯度因数据分布变化而剧烈波动,形成双峰非稳态,破坏了前期训练的稳态,导致损失值突然飙升。
处理处理大模型训练过程中出现的loss spike现象?
针对训练中的损失尖峰问题,PaLM和GLM130B提出跳过尖峰前后约200-500个批次数据可有效缓解,而非直接归因于数据本身。其他常见策略包括降低学习率或调整ε参数,但对稳态改善有限,或在分布变化时调整优化器参数,可参考The dip test of unimodality文献。
attention是怎么计算出来的?
注意力计算公式为:Softmax(QK^T / √d_k) V。其中,Q、K、V分别表示查询、键和值向量,√d_k用于缩放点积结果以稳定梯度。Softmax将相似度转换为权重分布,再与V加权求和得到最终输出。
原生的softmax在工程上有哪些问题?
Softmax计算中,指数运算可能导致数值溢出,特别是当输入值极大时,e^x 可能超出浮点数范围(如fp16上限65536),引发上溢出问题。
怎么解决原生softmax的问题?
在计算指数前减去输入的最大值,可确保指数结果不超过0,从而有效避免上溢出问题。
怎么加快softmax计算过程?
Flash Attention通过流式计算将softmax的三步计算简化为两步,关键改进在于对分母求和进行累加,从而提升计算效率。
flash attention的基本思想是什么?
FlashAttention通过分块处理输入数据,利用GPU内存层次结构,将数据从HBM移至SRAM进行计算,减少内存读写,实现2-4倍加速并降低内存占用。
为什么flash attention可以实现one-pass呢?
Flash Attention通过将softmax与V的乘积计算合并,利用中间变量d_N和O_i的递推公式,将原本需要两次循环的2-pass计算优化为一次循环的one-pass,从而显著提升计算效率。
解释下flash attention中的tiling策略?
分块策略通过将矩阵拆分成小块,降低内存访问成本并提升计算效率。
在 解释下flash attention 中对 MQA/GQA 是如何处理呢?
采用Indexing思想,通过传入KV Head索引到GPU Kernel,直接根据内存地址从内存中读取KV,提升访问效率。
为什么只有KV cache而没有Q cache呢?
Q是动态变化的,无需存储;而KV存在重复内容,若不缓存则计算耗时。解码时每一步基于当前Q查询KV,输出结果会作为下一轮Q的一部分,而之前的KV可复用并增量更新,因此缓存KV可显著提升效率。
1B的模型和1T的数据大概要训练多久?
训练时间公式为:8 × token数 × 参数量 / (GPU数量 × GPU算力 × GPU利用率)。其中,8源于每个token和参数需进行8次浮点运算(前向2次、后向4次、重激活2次)。例如,1B参数模型和1T token数据在单GPU(300TFLOPS,利用率0.3)下约需1028天。
大模型中为啥使用RMSNorm而不是LayerNorm?
RMSNorm通过均方根对输入正则化,提供重缩放不变性和自适应学习率,相比LayerNorm无需计算均值与方差,计算更高效。实验表明其具有更好的稳定性,尤其适用于深层网络,能有效防止梯度消失,在减少计算资源的同时保持性能。
DDP如何做到同步的?
PyTorch的nn.Module包含状态和hooks两类核心要素。状态包括:training(训练模式标志)、_parameters(模型参数)、_buffers(持久化非参数数据,如BatchNorm的统计量)和_modules(子模块)。hooks提供扩展接口,例如DDP利用反向hook实现梯度同步。模型状态通过state_dict()保存,DDP在训练中同步参数和缓冲区以确保一致性。
大模型训练模式和推理模式的主要流程和区别是什么?
Transformer训练与推理模式的核心区别在于解码器输入的处理方式。训练时采用教师强制(Teacher Forcing),使用真实目标序列的前一个token作为输入,结合掩码机制确保模型仅关注历史信息。推理时则采用自回归生成,从起始标记开始逐步预测并反馈下一个token,直至生成结束标记或达到最大长度。两种模式分别保障了训练的高效性和推理的生成能力。
LLM推理相比普通transformer推理有什么特殊性?
模型层数和参数规模增加,同时算子语义保持不变但实现方式显著增多。
大模型外推中存在的问题有哪些?
预测时使用未训练的位置编码,可能无法有效处理;同时,预测时注意力处理的token数量远超训练长度,导致注意力分布更分散(熵更大),与训练时更集中的注意力存在差异,从而影响模型效果。
如何解决大模型外推中的不一致和超长预测长度泛化性问题?
通过调整attention mask,使预测时的注意力范围与训练时一致,可同时解决位置编码未训练和注意力长度外推问题。具体方法是将外推阶段的注意力长度限制为训练时的长度。
大模型推理中超出训练长度的外推方式有哪些?
长度外推旨在使模型在短序列预训练后泛化到更长序列。主要方法包括:ALiBi通过添加线性偏置实现外推;位置内插(PI)通过缩放位置编码压缩邻近距离;NTK-aware方法调整RoPE的基数实现高频外推与低频内插;YaRN结合进制转换与温度调节,在微调与非微调场景均表现优异。这些方法均试图缓解Transformer在外推时性能下降的问题。
什么是束搜索,它与贪婪解码有何不同?
束搜索通过维护多个候选序列并选择累积概率最高的路径,确保输出更连贯;而贪婪解码仅选择每一步概率最高的标记,速度更快但可能产生次优结果。两者的核心区别在于是否考虑未来可能性。
在 LLM 中的束搜索如何改进贪婪解码?
束搜索通过评估多个序列并选择累积概率最高的路径,生成更高质量的输出;而贪婪解码仅选择每步最可能的单词,可能导致次优结果。
Top-k和核采样之间有什么区别?
Top-k采样选择概率最高的前k个标记,平衡随机性与专注性;核采样(Top-p)则基于累积概率阈值动态选择标记,更具适应性。关键区别在于Top-k固定数量,而核采样灵活调整。
为什么量化不会降低 LLM 的准确性?
量化虽然会略微降低LLM的准确性,但通过减少参数精度,显著缩小了模型尺寸、提升了推理速度并降低了功耗。通过针对性优化技术,精度损失可以被有效最小化。
大模型训练过程中如何估计显卡利用率?
评估GPU计算效率的三种方法:1)FLOPs基准法,通过实测与理论峰值比值计算利用率;2)吞吐量对比法,基于文献基准数据对比实际吞吐量;3)运行时性能剖析法(推荐),使用PyTorch Profiler全面监测Tensor Core利用率、内核执行时间等指标,提供最详细的诊断信息。
大模型训练中如何优化显卡利用率?
当GPU使用率较低时,可采取以下优化措施:减少日志输出,使用性能分析工具定位瓶颈,提升数据加载效率(如增加线程数、预缓存、异步加载),优化模型架构,调整batch大小(可结合混合精度训练),以及优化学习率和优化器配置。
大模型的显存和什么有影响
训练大型语言模型(LLM)所需的显存与参数数量直接相关,但还受batch size、序列长度、模型结构、优化器选择和是否使用混合精度训练等因素影响。例如,10亿参数的模型仅参数、梯度和优化器状态就需要约16GB显存,加上中间结果和输入数据,总需求可能超过30GB。
多模态处理多分辨率输入有哪些方法?
处理多模态多分辨率输入主要有两种策略:切片方法将图像分割为固定形状的子块并组合,同时保留全局信息;组合方法则借鉴序列组合技术,将不同分辨率图像的特征在序列维度拼接,并使用块对角掩码实现并行处理,避免跨图像注意力干扰。
大模型真的有self-correct能力吗?
大型模型在缺乏外部反馈时难以自我纠正。监督微调等方法效果有限,甚至可能将正确答案改错。实验表明,Pair-SFT仅带来1.8%的改进,而SCoRe方法实现了4.4%的显著提升,不仅提高了纠错率,还减少了误改正确结果的情况。挑战包括保留正确答案、纠正错误答案,以及确保训练中第一步答案的准确性。
请简要解释Pre-train、RL和Test Time三种 Scaling Law 的核心观点,在对应的阶段起到的作用
预训练阶段,性能随计算、数据和参数规模按幂律提升,但边际效益递减;强化学习阶段,性能随训练步数等因素先升后降,需平衡对齐与安全;推理阶段,增加测试计算资源可提升输出质量,但同样面临效益递减。
pretrain和test阶段的scaling law的资源分配策略区别是啥?
预训练资源分配是预先规划模型规模、数据量和计算量的平衡,以优化基础能力;测试时资源分配则动态调整推理策略(如采样次数),在已定模型能力下优化结果。前者决定长期性能,后者灵活适配实时需求。
RL Scaling Law 中的“过优化”现象及其缓解方法是啥?
RLHF训练中,策略模型可能因过度优化奖励模型而偏离人类偏好,导致验证集性能下降。缓解方法包括:提前停止训练、引入KL惩罚项限制模型偏离,以及提升奖励模型的泛化能力(如多目标奖励或对抗训练)。
pretrain和test阶段的scaling law的资源分配策略区别是啥?
预训练扩展律(Pre-train Scaling Law)通过预先平衡模型规模、数据集大小和计算量来优化基础能力,而测试时扩展律(Test Time Scaling Law)则是在推理阶段动态调整计算资源(如采样次数或Prompt复杂度)以提升效果。前者决定模型潜力,后者灵活优化结果。
十、RAG方面
什么是检索增强生成(RAG)?
RAG是一种结合检索与生成的混合方法。它首先从外部知识库中检索相关信息,再利用这些信息生成更准确、上下文感知的响应,从而增强传统NLP模型的能力。
RAG 与传统语言模型有何不同?
传统模型(如GPT-3)仅依赖训练数据生成文本,无法访问外部知识。而RAG通过检索外部数据再生成文本,能提供更新、更准确且不易产生幻觉的响应。
文本数据分块有哪些不同的方法?
文本数据分块方法包括:基于句子的解析(简单但上下文有限)、固定大小解析(可跨句但需调参)、自定义代码(适配结构但开发量大)、大型语言模型增强(处理非文本但成本高)、文档布局分析(语义丰富但需编码)。
向量索引、向量数据库和向量插件有什么区别?
向量索引、向量数据库和向量插件都用于快速查找相似数据点。向量索引类似高维数据的文件系统,向量数据库提供完整功能和扩展性,而向量插件则是可添加到现有系统的便携工具,适合小数据集或初步探索。
向量数据库中过滤的类型及挑战有哪些?
向量数据库的过滤方法包括预过滤和后过滤。预过滤先应用元数据约束以缩小搜索范围,可能加快速度但会遗漏部分相关数据。后过滤先执行向量搜索再过滤结果,确保全面性但计算成本较高。通过元数据索引和并行处理等技术,数据库在准确性与性能之间寻求平衡,以实现高效检索。
RAG 的主要应用场景是什么?
RAG 的常见用例包括问答系统、对话代理、内容摘要、个性化推荐和信息检索,通过检索相关知识提供精确答案、上下文感知回复、生成摘要、个性化建议及增强搜索引擎功能。
RAG 如何提高 AI 模型的响应准确性?
RAG通过整合外部知识确保信息相关和最新,利用检索步骤增强上下文理解,并基于检索数据减少错误和幻觉,从而提高准确性。
检索模型在 RAG 系统中为何重要?
检索组件通过语义搜索和关键词匹配等技术,高效访问外部数据,确保生成模型获得精准且信息丰富的上下文,提升响应的相关性和质量。
RAG 可以使用哪些类型的数据源?
RAG 系统支持多种数据源,包括文档集合(如书籍、文章)、知识库(如 Wikidata)、网络来源(如 API 或搜索引擎)以及针对特定行业的自定义数据库。
RAG 如何增强对话式 AI?
RAG 通过实时访问外部数据,提供更准确、个性化的回复,并在多轮对话中保持上下文连贯性,支持基于最新数据的动态内容生成。
检索组件在 RAG 中扮演什么角色?
检索组件通过语义搜索或向量匹配从外部数据源获取精确信息,为生成模型提供高质量、上下文丰富的数据,从而提升响应的相关性和准确性。
RAG 如何减少偏见和错误信息?
RAG通过优先检索权威来源、交叉验证信息以及定期更新语料库,有效减少偏见和错误信息,确保生成内容的准确性和可靠性。
RAG 相比其他 NLP 技术的优势是什么?
通过外部数据检索提升准确性、上下文感知和灵活性,同时减少偏见,适用于多领域应用。
描述一个 RAG 表现优异的用例。
医疗聊天机器人结合检索器与生成器,从可信医学来源获取信息并生成准确、可靠的答案,确保建议的时效性和可信度。
RAG 如何集成到机器学习管道中?
检索组件连接外部数据源获取信息,生成组件处理并生成响应。通过集成上下文知识检索,增强现有流程,提升响应质量。
RAG 在 NLP 中解决了哪些挑战?
信息检索用于获取外部数据,上下文理解确保对话连贯,减少偏见通过验证过滤数据,个性化则根据用户需求定制响应。
RAG 如何确保响应基于最新信息?
通过定期更新语料库、优先检索最新出版物,并采用持续监控与自动化更新机制,确保数据源始终保持高相关性和时效性。
RAG 模型是如何训练的?
训练分为预训练和微调两个阶段:预训练阶段让生成模型在大型数据集上学习语言表示;微调阶段训练检索组件获取相关数据,并优化生成模型以高效处理这些数据。
RAG 如何处理复杂的多跳查询?
RAG 通过迭代检索优化结果:先获取初始相关数据,再基于这些信息细化查询,进行多轮检索,从而整合多个来源的信息。
知识图谱在 RAG 中扮演什么角色?
知识图谱通过结构化实体关系,在RAG中提升检索效率与上下文理解能力。
实现 RAG 时需要考虑哪些伦理问题?
为确保负责任的数据检索,需关注以下核心原则:避免偏见放大、保持透明度、保护隐私、验证准确性,并提供用户控制选项。
RAG 如何促进人机协作的改进?
提升决策质量,提供精准响应;根据需求定制互动,确保个性化体验;保持多轮对话的连贯性,实现高效沟通。
RAG 的局限性是什么?
检索增强生成(RAG)面临计算成本高、数据依赖性强、可扩展性挑战以及潜在偏见风险等问题。
在 NLP 任务中使用 RAG 的主要目标是什么?
RAG通过结合外部知识检索与文本生成,提升NLP任务的准确性、相关性和上下文感知能力。
RAG 如何平衡检索和生成?
RAG 通过检索器获取相关数据以确保事实准确性,再通过生成器处理数据以生成自然流畅的文本,从而平衡检索与生成过程。
RAG 中常用哪些检索技术?
关键词匹配、语义搜索和神经检索模型(如DPR、ColBERT)是三种信息检索方法,分别基于精确/部分关键词、上下文相似度以及深度学习技术实现高效数据匹配。
RAG 中使用哪些类型的生成模型?
RAG 生成模型主要采用基于 Transformer 的架构,例如 GPT、T5 以及具备生成能力的 BERT 变体。
RAG 与传统检索系统有何不同?
RAG 将检索与生成模型结合,直接生成自然语言响应,而非仅返回相关文档列表。
RAG 系统是否可以在没有微调的情况下工作?
是的,RAG系统通常使用预训练的生成和检索组件,但针对特定数据集进行微调可以提升其在特定应用中的性能表现。
嵌入在 RAG 中扮演什么角色?
嵌入将文本表示为高维向量,实现查询与文档间的语义相似性匹配。
RAG 如何减少生成模型中的幻觉?
RAG 通过基于检索事实生成响应,有效减少模型虚构或捏造内容的风险。
用于评估 RAG 系统的指标有哪些?
评估检索准确性:精确度与召回率。 生成输出质量:BLEU/ROUGE分数。 与检索数据一致性:事实一致性。 系统速度:延迟。
RAG 系统能否处理多语言查询?
是的,RAG 经过多语言训练或微调后,能够有效处理多语言查询并生成多语言响应。
RAG 系统中如何实现语义搜索?
语义搜索利用BERT或Sentence Transformers等模型生成向量嵌入,通过匹配查询与数据集中相似的上下文嵌入来实现高效检索。
什么是密集段落检索(DPR),它在 RAG 中如何使用?
DPR是一种神经检索模型,通过将查询和段落映射为密集嵌入并优化语义相似性,提升了RAG系统中检索组件的准确性。
RAG 如何处理模糊查询?
RAG 通过检索与查询相关的多个文档来处理模糊查询,并利用生成模型将这些信息综合成连贯的响应。
RAG 是否可以用于实时应用?
实时应用需依赖高效检索机制(如内存或索引数据库)与低延迟生成模型,以确保性能要求得到满足。
可以采用哪些优化技术来提高 RAG 的性能?
通过高级索引、知识修剪和模型蒸馏优化检索与推理效率,同时利用批处理提升查询吞吐量。
通常用于训练和评估 RAG 系统的数据集有哪些?
NQ用于问答,Trivia QA用于知识问答,SQuAD用于上下文问答,MS MARCO用于段落检索和排名。
微调 RAG 模型时面临哪些挑战?
微调需大量领域标注数据,存在小数据集过拟合风险,且可能因模型复杂度增加导致延迟。
如何独立评估检索组件?
评估检索系统性能的两个关键指标:Top-k准确率衡量正确文档出现在前k个结果中的频率,平均倒数排名(MRR)则评估正确文档的排名质量。
RAG 如何适应动态数据源?
通过定期索引新数据、实时数据流传输和定期重新训练检索器,实现语料库的动态更新与检索性能的持续优化。
检索组件需要哪些预处理步骤?
文本数据经过分词和嵌入转换为向量表示,构建倒排索引或向量数据库以提升检索效率,并通过移除无关或噪声数据来提高语料库质量。
RAG 中的检索和生成如何并行化?
通过异步检索和批处理实现并行化:在生成响应的同时获取数据,并同时处理多个查询。
RAG 如何处理实体消歧?
RAG通过上下文检索获取相似关键词的文档,并利用知识图谱识别实体间关系,以澄清模糊引用。
RAG 系统如何确保事实一致性?
通过交叉引用验证信息一致性,实施事实验证确保内容基于事实,并在微调中惩罚幻觉以减少无根据内容的生成。
RAG 如何管理对极大数据集的检索?
分片将语料库拆分为更小子集,近似最近邻(如FAISS)加速相似性搜索,分布式索引利用多系统提升检索效率。
使用 RAG 时,对于内存受限设备的权衡是什么?
优点:生成模型体积小,节省内存。 缺点:检索组件需存储语料库,内存受限时不可行。
RAG 可以与强化学习集成吗?
是的,RAG可以与强化学习结合,通过奖励函数优化检索和生成过程,提升准确性、相关性和用户满意度。
RAG 如何处理响应中的个性化?
用户特定索引:个性化语料库检索。 上下文记忆:维护交互历史以提供上下文。 元数据:检索查询包含用户偏好或属性。
什么是混合 RAG 系统?
混合 RAG 系统结合传统检索(如 TF-IDF)与神经检索模型,兼顾速度与准确性。
扩展 RAG 系统时的关键架构考虑因素是什么?
高效存储与索引语料库,实现快速数据访问;低延迟检索与生成模型,提升系统响应速度;分布式部署,保障高可用性。
RAG 如何处理对抗性查询?
检索过滤:过滤误导或有害文档。 鲁棒性训练:训练模型处理对抗输入。 验证:通过事实核查确保响应可靠。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!
更多推荐
所有评论(0)