大模型LLM相关面试题整理(持续更新...),大模型(LLMs)算法工程师相关的面试题和参考答案
LLMs 艾深老师
介绍:本项目是作者们根据个人面试和经验总结出的 大模型(LLMs)面试准备的学习笔记与资料,该资料目前包含 大模型(LLMs)各领域的 面试题积累。
LLMs 艾深老师 面试交流群 (注:人满 可 添加 小编wx:aisen5721 加群!)

大模型(LLMs)基础面
- 目前 主流的开源模型体系 有哪些?
在LLM(Large Language Model)领域,目前主流的开源模型体系包括以下几种:
-
- GPT(Generative Pre-trained Transformer)系列:
- GPT-2:由OpenAI发布,采用Transformer架构和自回归生成模型,在各领域展现出色的表现。
- GPT-3:GPT系列中规模最大的模型,具有1750亿个参数,具备强大的语言理解和生成能力。
-
- BERT(Bidirectional Encoder Representations from Transformers)系列:
- BERT:由Google发布,采用双向Transformer编码器结构,通过预训练和微调在自然语言处理任务中取得显著改进。
- RoBERTa:基于BERT的改进版本,采用更长的训练时间和更大的Batch size,提高了模型性能。
-
- T5(Text-to-Text Transfer Transformer):
- T5:由Google发布,以“文本到文本”模式统一自然语言处理任务,将所有任务转换为文本输入和输出的形式。
-
- XLNet:
- XLNet:由谷歌提出,结合自回归和自编码思想,通过Permutation Language Modeling实现更好的语言建模效果。
-
- CTRL(Conditional Transformer Language Model):
- CTRL:由Salesforce发布,引入控制代码来指导生成内容,可用于有监督和无监督学习任务。
-
- UniLM(Unified Language Model):
- UniLM:由Microsoft Research发布,统一多种自然语言处理任务到一个模型中,实现多任务学习。
这些主流的开源模型体系在自然语言处理领域取得了重要的突破和应用,为推动人工智能技术的发展做出了重要贡献。每种模型都有其特点和适用场景,可以根据具体任务需求选择合适的模型进行应用。
- prefix Decoder 和 causal Decoder 和 Encoder-Decoder 区别是什么?
在神经网络中,prefix Decoder、causal Decoder和Encoder-Decoder是与序列到序列(sequence-to-sequence)模型相关的重要概念,它们之间的区别如下:
Encoder-Decoder
- Encoder-Decoder是一种常见的序列到序列模型架构,由两部分组成:编码器(Encoder)和解码器(Decoder)。
- 编码器负责将输入序列编码为一个固定长度的上下文向量,捕捉输入序列的语义信息。
- 解码器接受编码器输出的上下文向量,并逐步生成输出序列的标记,通常用于机器翻译、对话生成等任务。
Prefix Decoder
- Prefix Decoder是一种解码器结构,其特点是在每个时间步只能“看到”已生成的前缀序列,而不能“预测”后面的标记。
- 在生成输出序列时,Prefix Decoder会将前一个时间步生成的标记作为当前时间步的输入,从而保持自回归性质。
- Prefix Decoder适用于需要依赖先前生成内容来生成后续内容的任务,如语言模型、文本生成等。
Causal Decoder
- Causal Decoder也是一种解码器结构,它限制了当前时间步的预测只能依赖于之前的标记,而不能依赖未来的标记。
- 在解决生成式任务时,Causal Decoder可以防止信息泄露,确保模型输出是自洽的、符合因果关系的序列。
- Causal Decoder通常与Transformer架构中的自注意力机制结合使用,用于生成文本、音频等连续值序列。
区别总结:
- Encoder-Decoder是整体架构,包含编码器和解码器,用于序列到序列的转换任务。
- Prefix Decoder和Causal Decoder都是解码器结构,分别强调前缀生成和因果性预测,用于不同类型的生成任务。
- Prefix Decoder和Causal Decoder通常与Encoder结合使用,构建端到端的序列生成模型,应用于自然语言处理、语音识别等领域。
- 大模型LLM的 训练目标 是什么?
大型语言模型(LLM)的训练目标通常是最大化数据集中观测到的文本序列的似然概率。具体来说,大型语言模型在训练过程中的主要目标是最大化给定文本序列的条件概率,即模型试图学习如何准确地预测给定上下文下接下来的单词或子词的概率分布。这一训练目标通过极大似然估计(maximum likelihood estimation)来实现。
在训练大型语言模型时,通常采用以下基本步骤和目标:
-
- 构建模型架构:选择适当的神经网络架构(如Transformer),确定模型的层数、隐藏单元数等超参数。
-
- 数据预处理:对原始文本数据进行预处理,例如划分为句子或段落,并进行分词、编码等操作。
-
- 定义损失函数:将模型输出的概率分布与真实标签(下一个单词或子词)之间的差异作为损失函数,常用的损失函数包括交叉熵损失函数。
-
- 优化器选择:选择合适的优化器(如Adam)来最小化损失函数,通过反向传播算法更新模型参数。
-
- 迭代训练:使用大规模的文本数据集进行批量训练,不断调整模型参数以提高对观测文本序列的预测能力。
-
- 评估性能:在训练过程中监控模型在验证集上的性能表现,以避免过拟合并选择合适的停止策略。
通过最大化训练数据中观测到的文本序列的似然概率,大型语言模型可以学习到文本数据中的统计规律和语义信息,从而实现对自然语言处理任务的良好泛化能力和表现。
- 涌现能力是啥原因?
涌现能力是指大型语言模型(LLM)在训练过程中学习到的能够产生新颖、具有逻辑连贯性的内容或信息的能力。这种能力使得语言模型可以生成类似自然语言的文本、回答问题、完成对话等任务。涌现能力的产生是由以下几个主要原因所导致:
-
- 大规模数据集:大型语言模型通常在巨大规模的文本数据集上进行训练,这些数据集包含各种类型的语言表达和语境信息。通过学习这些数据集,模型可以捕捉到丰富的语言结构和知识。
-
- 模型复杂性:现代LLM采用了深度神经网络架构(如Transformer),拥有数十亿甚至数千亿参数。这种高度复杂的模型能够更好地建模文本数据的复杂关系和依赖性。
-
- 自注意力机制:大多数大型语言模型采用了自注意力机制,使得模型能够在输入序列中找到不同位置之间的关联性。这有助于模型在生成文本时合理地考虑上下文信息。
-
- 微调和迁移学习:通过在特定任务上进行微调或迁移学习,语言模型可以根据具体需求进一步优化,并提升涌现能力。这使得模型可以适应不同领域或任务的需求。
-
- 多样化训练:在训练过程中引入多样性的训练技术,如随机掩码、温度抽样等,有助于模型生成更加多样化和丰富的文本内容。
总的来说,大型语言模型之所以具有出色的涌现能力,是因为它们在训练过程中能够从海量数据中学习到丰富的语言知识、模式和规律,结合复杂的神经网络结构和有效的训练技术,使得模型能够生成具有逻辑性和语义连贯性的新颖文本内容。
- 为何现在的大模型大部分是Decoder only结构?
现在的大型语言模型大部分采用Decoder-only结构的主要原因包括以下几点:
-
- 自回归生成:Decoder-only结构适用于自回归生成任务,即在生成输出序列时,每个时间步只依赖前面生成的内容。这种结构更容易实现对文本序列的有序生成。
-
- 无需编码上下文信息:在某些自然语言处理任务中,如文本生成、语言建模等,只需要依靠之前生成的片段来预测后续内容,无需额外的编码上下文信息。因此,Decoder-only结构在这些任务中表现出色。
-
- 模型简化:Decoder-only结构相比于Encoder-Decoder结构更加简化,去除了编码器部分,减少了参数数量和计算复杂度,使得训练和推理过程更高效。
-
- 生成多样性:Decoder-only结构通过自注意力机制可以捕捉输入序列内部的关联性,从而在生成文本时保持一定的多样性,在文本生成任务中具有优势。
-
- 任务特性:某些任务,如语言建模、文本生成等,更注重对流畅性和多样性的生成,而不需要进行编码-解码的对齐。在这类任务下,Decoder-only结构更符合需求。
尽管Decoder-only结构在某些任务上有诸多优势,并且已经证明在大规模语言模型的训练中取得了显著成功,但在其他类型的任务(如翻译、对话生成等)中,仍然需要Encoder-Decoder结构来更好地捕捉双向信息交互。因此,选择合适的模型结构应根据具体任务需求和场景来决定。
- 简单 介绍一下 大模型【LLMs】?
大型语言模型(LLMs)是指参数规模庞大、拥有数十亿甚至上百亿参数的深度神经网络模型,用于处理自然语言处理(NLP)任务。LLMs在近年来取得了显著的进展,并在各种NLP任务中展现出强大的表现。以下是对大型语言模型的简单介绍:
-
- 参数规模巨大:大型语言模型通常包含数十亿到上百亿个参数,例如GPT-3模型就具有1750亿个参数。这使得模型能够更好地捕捉文本数据中的复杂结构和关系。
-
- 预训练与微调:大型语言模型通常采用预训练-微调的策略。在大规模文本数据上进行无监督预训练,然后利用有标签数据在特定任务上进行微调,以获得更好的性能。
-
- Transformer架构:大多数LLMs采用Transformer架构,其中包括注意力机制和多层自注意力网络,使模型能够有效地处理长距离依赖关系。
-
- 多功能性:LLMs不仅可以应用于传统的NLP任务(如语言建模、机器翻译、文本生成等),还能在问答系统、摘要生成、情感分析等领域展现出色的性能。
-
- 涌现能力:大型语言模型具有出色的涌现能力,能够生成连贯、逻辑合理的文本内容,并且能够执行多样性的任务,如文章创作、对话交互等。
-
- 开源模型:许多知名的大型语言模型,如GPT、BERT、T5等,已被开源发布,促进了LLMs在学术界和工业界的广泛应用和研究。
总的来说,大型语言模型在NLP领域扮演着重要角色,为各种自然语言处理任务提供了强大的工具和解决方案,推动了NLP技术的发展和应用。
- 大模型【LLMs】后面跟的 175B、60B、540B等 指什么?
在大型语言模型(Large Language Models,LLMs)后面跟着的数字(如175B、60B、540B等)通常表示该模型的参数数量。这些数字代表了模型中所包含的参数数量的量级,以“B”表示十亿(Billion)。因此,“175B”表示1750亿个参数,“60B”表示600亿个参数,“540B”表示5400亿个参数,依此类推。
参数数量是衡量一个深度神经网络模型规模大小和复杂性的重要指标之一。更多的参数意味着模型具有更大的记忆容量和表征能力,能够更好地捕捉输入数据中的模式和规律。然而,随着参数数量的增加,模型的训练和推理成本也会显著增加。
因此,通过观察LLMs后面的数字可以大致了解到该模型的规模大小,从而对其性能和应用领域有一定的了解。通常来说,参数数量越大的大型语言模型在各种自然语言处理任务上表现出的效果可能会更为优秀,但同时也需要更强大的计算资源和更长的训练时间。
- 大模型【LLMs】具有什么优点?
大型语言模型(LLMs)具有许多优点,包括但不限于以下几个方面:
-
- 更好的泛化能力:由于大型语言模型拥有庞大的参数数量和强大的表征能力,它们能够更好地捕捉文本数据中的复杂结构和规律,从而在各种自然语言处理任务中展现出更好的泛化能力。
-
- 广泛应用:大型语言模型可以应用于多种NLP任务,如语言建模、机器翻译、情感分析、文本生成等,且能够适应不同领域和任务的需求。
-
- 提高效率:相比传统模型,在某些任务上,使用大型语言模型能够获得更高的性能和效率。例如,对话系统能够更好地理解用户输入并生成合适的回复。
-
- 促进研究进展:大型语言模型的发展推动了自然语言处理领域的研究进展,激发了更多关于模型架构、预训练技术、微调策略等方面的探索和创新。
-
- 多功能性:LLMs不仅可以用于特定任务的执行,还可以作为通用的文本表示器,用来提取文本信息中的语义和特征,并在其他任务中进行迁移学习。
-
- 提升用户体验:在一些应用场景下,使用大型语言模型可以提升用户体验,如智能客服、智能搜索、内容生成等,使得人机交互更加智能和顺畅。
总的来说,大型语言模型在自然语言处理领域展现出众多优点,其强大的表征能力和泛化能力为各种NLP任务提供了有效的解决方案,并为该领域的研究和应用带来了新的机遇和挑战。
- 大模型【LLMs】具有什么缺点?
大型语言模型(LLMs)虽然具有许多优点,但也存在一些缺点,包括但不限于以下几个方面:
-
- 计算资源需求高:大型语言模型通常需要庞大的计算资源进行训练和推理,包括强大的GPU/TPU等硬件设备和大量的存储空间,这会带来较高的成本。
-
- 训练时间长:由于LLMs具有数十亿到上百亿参数,其训练时间通常会非常漫长,需要花费数天甚至数周的时间才能完成一次训练过程,这增加了开发和研究的时间成本。
-
- 对环境敏感:大型语言模型对数据分布和训练环境的敏感性较高,可能会受到数据偏斜、样本不均衡等问题的影响,导致模型性能下降。
-
- 记忆容量限制:尽管LLMs拥有巨大的参数数量,但其记忆容量仍然有限,可能难以处理长文本或复杂逻辑关系的任务,存在信息遗忘和记忆丢失的问题。
-
- 过拟合风险:大型语言模型在面对小规模或特定领域的数据时,存在过拟合的风险,可能导致模型泛化能力不足或性能下降。
-
- 可解释性差:由于LLMs参数规模庞大,内部结构复杂,导致模型的决策过程难以解释和理解,可能引发黑盒化问题,增加了模型应用的不确定性和风险。
-
- 社会责任问题:大型语言模型可能被滥用或误用,造成信息泄露、虚假信息传播、歧视性内容生成等问题,引发社会伦理和法律问题。
综上所述,大型语言模型在展现出优势的同时,也存在着一些挑战和局限性,需要在实际应用中认真考虑并采取相应的措施来克服。
Transformer部分
- Transformer整体介绍
Transformer是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型架构,由Vaswani等人在2017年提出,已经成为自然语言处理领域中最重要和流行的模型之一。以下是对Transformer整体的介绍:
-
- 自注意力机制:Transformer中的核心是自注意力机制,用于计算输入序列中各个位置之间的依赖关系。通过自注意力机制,模型能够同时考虑到输入序列中所有位置的信息,有助于捕捉长距离依赖关系。
-
- 编码器-解码器结构:Transformer包含编码器(Encoder)和解码器(Decoder)两部分。编码器负责将输入序列编码为隐藏表示,而解码器则利用编码器输出的信息生成目标序列。
-
- 多头注意力机制:Transformer中的自注意力机制通过引入多头注意力机制,允许模型并行地学习不同的注意力权重,从而增强了模型对不同特征层次和方面的表示能力。
-
- 位置编码:为了使Transformer能够处理序列数据,模型引入了位置编码(Positional Encoding),用于为输入序列中的每个位置添加唯一的位置信息,以区分不同位置之间的标记。
-
- 残差连接和层归一化:Transformer使用残差连接(Residual Connection)和层归一化(Layer Normalization)技术来加速训练过程,并帮助模型更好地学习复杂的表示。
-
- 位置编码网络:除了基本Transformer结构外,后续还出现了BERT、GPT等变种模型,它们在原始Transformer的基础上进行了改进和优化,以应用于更广泛的NLP任务。
-
- 适用性:Transformer不仅被广泛应用于翻译任务(如Google的GNMT)、文本生成(如OpenAI的GPT系列)、问答系统(如BERT)、语言建模(如XLNet),还在图像处理等领域展示出良好表现。
总的来说,Transformer作为一种高效且灵活的模型架构,已经在自然语言处理领域取得了巨大成功,并在各种任务中取代了传统的循环神经网络模型,成为当前NLP领域的主流模型之一。
- Self-attention 的机制和原理
Self-attention(自注意力)是Transformer模型中的核心组件之一,用于计算输入序列中各个位置之间的依赖关系。Self-attention的机制和原理如下:
-
- 输入表示:假设有一个输入序列,每个位置都由一个向量表示。在Self-attention中,我们将这些向量称为查询(query)、键(key)和数值(value)。
-
- 计算注意力权重:对于每个查询向量,通过与所有键向量的点积得到相应的注意力分数。然后将这些分数进行softmax归一化,以获得与每个键位置对应的注意力权重。
-
- 加权求和:将每个数值向量与对应位置的注意力权重相乘,然后将结果进行加权求和。这样就能够聚焦于重要的位置并生成输出。
-
- 多头注意力:为了增强模型的表征能力,可以引入多个注意力头(multi-head attention)。每个头独立学习不同的查询、键、数值映射,最后将它们的输出拼接起来并进行线性变换。
-
- 参数学习:在Self-attention中,查询、键、数值的映射是通过学习得到的参数矩阵(权重矩阵)实现的。这些参数可以通过反向传播算法进行优化,以使Self-attention模块更好地捕捉输入序列中的相关信息。
-
- 位置编码:为了区分不同位置的标记,在Self-attention中通常还会结合位置编码(Positional Encoding),将位置信息嵌入到输入序列的表示中,以帮助模型理解序列中元素的顺序关系。
总的来说,Self-attention机制允许模型在处理序列数据时同时考虹到各个位置的信息,并且能够根据不同位置之间的依赖关系动态调整每个位置的表示,从而提高模型的表征能力和泛化能力。这种自注意力机制已经被广泛应用于Transformer模型及其各种变体中,并取得了在自然语言处理等领域的显著成就。
- self-attention为什么用qkv,使用qv可以不?
Self-attention机制中使用Query-Keys-Values(QKV)的组合是为了提高模型学习输入序列中不同位置之间的关联信息,并更好地捕捉序列中的长距离依赖。使用QKV三者分别学习不同的映射,能够帮助模型更精确地计算每个位置与其他位置之间的相关性,从而提升模型的表征能力。以下是为什么需要同时使用QKV,而不能仅用QV的原因:
-
- Query和Key的区分:Query和Key的作用是不同的。Query用于指定需要关注的内容,而Key则用于表示其他位置的信息。通过Query和Key的点积运算,可以计算出查询位置与其他位置的相关性得分,进而确定每个位置在注意力权重中所占比重。
-
- Values的作用:Values向量包含了每个位置的具体数值信息,其作用是根据Query和Key计算出的注意力权重来加权求和生成最终的输出表示。Values的引入使得模型能够根据计算出的关联性权重来聚焦于重要位置并生成相应的输出。
-
- 提升灵活性和表征能力:通过用Q、K、V三者分别学习不同的映射,模型可以更灵活地学习不同位置之间的依赖关系,从而更好地捕捉序列中的特征和结构,提高模型的表征能力。
-
- 适应多头注意力:在多头注意力机制中,Query、Key、Value会经过线性变换后被分成多个头进行并行计算,这样可以增强模型对不同特征层次和方面的表示能力。
综上所述,使用QKV的组合能够让模型更好地理解和利用序列中各个位置之间的关系,提高自注意力机制的表征能力和泛化能力,有助于模型更有效地处理复杂的序列任务。 13. 计算A→B的注意力和B→A的注意力的区别,如果使用qv能不能区分这两个
在Self-attention机制中,计算A→B的注意力和B→A的注意力是有区别的。使用QV(Query-Value)能够帮助模型区分这两种不同的注意力计算。下面解释一下:
-
- A→B的注意力和B→A的注意力区别:
- A→B的注意力:当计算A位置对应的注意力权重时,Query来自A位置,Key来自B位置。这种注意力关注于A位置与其他位置(如B位置)之间的相关性,表示A位置需要关注其他位置的信息。
- B→A的注意力:相反,B→A的注意力将B位置作为Query,A位置作为Key。这种注意力则关注于B位置与其他位置(如A位置)之间的相关性,表示B位置需要关注其他位置的信息。
-
- 使用QV进行区分:
- 使用QV能够明确区分A→B和B→A的注意力计算过程。通过分别指定Query和Key的位置,可以确保模型正确计算不同位置之间的关联性,并生成相应的输出结果。
- 如果只使用QV而不考虑KV的不同位置信息,则可能导致模型无法正确区分A→B和B→A的注意力,从而影响模型学习序列中不同位置之间的依赖关系。
总的来说,使用QV的组合可以帮助模型准确识别不同位置之间的关系,包括A→B和B→A的注意力计算。因此,在Self-attention中,同时使用Q、K、V三者是必要的,以提高模型的表征能力和泛化能力,并确保模型正确捕捉输入序列中各个位置之间的相关性。
微调部分
- 为什么需要微调?如果需要专业的数据,外挂数据库就可以解决的。
微调(Fine-tuning)是指在使用预训练模型(如BERT、GPT等)时,将其在特定任务上进行额外训练以适应任务特定的数据集和要求。微调的主要原因包括以下几点:
-
- 领域特定性:预训练模型通常在大规模通用语料库上进行训练,其中包含了各种不同领域的文本信息。然而,在某些特定领域(如医学、法律等)或特定任务(如情感分析、命名实体识别等)中,预训练模型的泛化能力可能不足以达到最佳性能。因此,需要通过微调来适应特定领域或任务。
-
- 数据偏差:某些任务可能存在数据分布的偏差或特定模式,这可能导致预训练模型无法很好地适应这些特殊情况。通过微调,可以根据任务特点对模型进行调整,以提高在特定数据集上的性能。
-
- 更好的性能:经过微调的模型通常可以在特定任务上获得更好的性能表现。通过在任务相关数据上进行微调,可以使模型更好地理解任务的要求,提高其精度和泛化能力。
-
- 灵活性:微调允许用户根据需要自定义模型结构、超参数设置以及训练过程,从而实现更灵活的模型定制和优化。
至于外挂数据库是否可以解决专业数据需求这个问题,则取决于具体情况。外挂数据库可以提供大量的专业数据,但仍然需要根据具体任务和领域的特点来选择合适的数据集和模型进行微调,以确保模型能够在特定任务上取得最佳性能。微调可以帮助模型更好地适应特定领域的数据特点,提高模型在特定任务上的表现。
- 数据集怎么获取?
获取数据集通常取决于您的需求和所处领域。以下是一些获取数据集的常见方式:
-
- 公开数据集:许多机器学习和深度学习任务都有公开可用的数据集,例如MNIST、CIFAR-10等用于计算机视觉任务的数据集,IMDB、SNLI等用于自然语言处理任务的数据集。您可以通过相关网站或论坛查找并下载这些公开数据集。
-
- 竞赛平台:许多机器学习竞赛平台(如Kaggle、DrivenData)提供各种任务的数据集,并举办相应的竞赛。您可以参与竞赛并获取数据集来进行实验和建模。
-
- 学术界资源:在学术界,研究人员通常会发布其研究中使用的数据集,您可以在相关论文的附录或作者的个人页面找到这些数据集的链接。
-
- 商业数据提供商:一些商业公司提供专业的数据服务,您可以购买或订阅他们的数据集,这些数据集可能包含商业领域的数据和分析。
-
- 爬虫技术:如果您需要特定领域或特定类型的数据,您也可以利用网络爬虫技术从互联网上抓取数据。但请注意遵守相关法律法规和网站的规定,以避免侵犯隐私和版权问题。
-
- 外部合作:有时候您可能无法直接获取所需的数据集,可以考虑与相关机构、研究者或企业进行合作,请求共享或获得数据集。
在获取数据集之前,请务必了解数据集的内容、使用许可和限制条件,遵守数据保护法规和伦理准则,确保您的数据采集和使用行为合法合规。
- 介绍LoRA微调,及其微调中的一些重要参数
LoRA(Layer-wise Relevance Adjustment)微调是一种用于改进神经网络模型解释性能的技术,通过微调模型中每一层的权重和偏置,以使得模型对于输入中不同特征的相关性有更好的计算和理解。在LoRA微调中,一些重要的参数包括:
-
- 学习率(Learning Rate):学习率控制模型参数在每次迭代中更新的幅度。在LoRA微调中,合适的学习率可以影响模型收敛速度和性能表现。
-
- 正则化参数(Regularization parameter):正则化参数用于控制模型的复杂度,防止过拟合。在微调过程中,适当的正则化参数可以帮助提高模型的泛化能力。
-
- 批量大小(Batch Size):批量大小指每次模型训练时所使用的样本数目。较大的批量大小可能会提升训练速度,但也可能导致内存消耗增加。选择适当的批量大小对LoRA微调的效果具有一定影响。
-
- 迭代次数(Number of Iterations):迭代次数指训练过程中模型参数被更新的总次数。通常会根据模型的性能表现和收敛情况来确定合适的迭代次数。
-
- 初始化方法(Initialization Method):在微调过程中,选择合适的参数初始化方法也是非常重要的一步。常用的初始化方法包括随机初始化、Xavier初始化等。
-
- 优化器(Optimizer):优化器用于更新模型参数以最小化损失函数。在LoRA微调中,常用的优化器包括Adam、SGD等。选择合适的优化器可以加速模型收敛和提高性能。
-
- 损失函数(Loss Function):损失函数用于衡量模型预测结果与真实标签之间的差异。选择适当的损失函数对于微调任务至关重要。
这些参数的选择和调整都会影响LoRA微调的效果和性能。在进行LoRA微调时,需要通过实验和调整这些参数来找到最佳的组合,以获得更好的模型解释性能和泛化能力。
- 微调中碰到那些问题?
在微调过程中,可能会遇到一些常见问题,如下所示:
-
- 过拟合(Overfitting):微调时,模型可能过度拟合训练数据,导致在测试集上表现不佳。这通常是由于模型复杂度过高或者数据量不足等因素引起的。解决方法包括增加数据量、使用正则化技术和早停策略等。
-
- 梯度消失或梯度爆炸(Gradient Vanishing/Exploding):在深度神经网络中,反向传播过程中可能会出现梯度消失或梯度爆炸问题,导致模型无法正确更新参数。可以通过梯度剪裁、使用不同的激活函数或初始化方法等来缓解这些问题。
-
- 局部最优解(Local Optima):微调时,模型可能陷入局部最优解而无法找到全局最优解。针对这个问题,可以尝试改变初始参数值、调整学习率或使用随机搜索等方式。
-
- 样本偏差(Sample Bias):如果训练数据与实际应用场景存在较大差异,可能导致模型在真实环境中表现不佳。为了解决样本偏差问题,需要确保训练数据能够充分覆盖实际情况。
-
- 超参数调整困难(Difficulty in Hyperparameter Tuning):微调中通常涉及多个超参数(如学习率、批量大小、迭代次数等),调整这些超参数并找到最佳组合是一个挑战性任务。可以尝试使用自动调参工具或者网格搜索等方法来优化超参数选择。
-
- 标签噪声(Label Noise):如果训练数据中存在标签错误或噪声,会影响模型的泛化能力和性能。处理标签噪声的方法包括数据清洗、使用半监督学习等。
-
- 计算资源消耗(Computational Resource Consumption):微调过程通常需要大量的计算资源,包括CPU、GPU等。缺乏充足的计算资源可能会限制模型微调的效果。
解决这些问题需要结合实际情况,进行仔细分析和调试。通过逐步调整模型架构、超参数以及数据预处理等方面,可以逐渐解决在微调中遇到的问题,提升模型的性能和泛化能力。 18. 微调的硬件设备是怎么样的?
微调的硬件设备通常可以是各种类型的计算设备,具体取决于任务的复杂性、数据集的规模以及模型的大小等因素。以下是一些常用的硬件设备和加速器:
-
- CPU(Central Processing Unit):CPU 是最基本的计算设备之一,在微调过程中主要用于数据加载、预处理和一些简单的计算任务。对于小型模型或较小规模的数据集,CPU 可能已经足够支持进行微调。
-
- GPU(Graphics Processing Unit):GPU 是深度学习任务中常用的加速器,其并行计算能力可以显著提高训练速度。在微调过程中,使用 GPU 可以加速模型参数更新和梯度计算,特别适用于大规模模型和数据集的微调任务。
-
- TPU(Tensor Processing Unit):TPU 是由谷歌设计用于深度学习任务的专用硬件加速器,具有高效的矩阵乘法运算和并行计算能力。在一些大规模深度学习任务中,TPU 可以提供比 GPU 更快的训练速度。
-
- 专用加速器(如 FPGA):除了 GPU 和 TPU 外,还有一些专门为深度学习任务设计的定制化加速器,如 FPGA(Field Programmable Gate Array)。这些专用加速器可以根据任务需求进行定制优化,提供更高效的计算能力。
-
- 云计算资源:除了本地硬件设备外,许多云服务提供商(如AWS、Azure、Google Cloud等)也提供了弹性计算资源,用户可以通过云服务来进行大规模的模型微调和训练,灵活调配计算资源以满足需求。
选择合适的硬件设备取决于您的需求、预算和可用资源。通常情况下,对于中小型的微调任务,使用一块性能较好的 GPU 即可满足需求;而对于大规模数据集或模型的微调任务,则可能需要考虑更高级别的硬件设备或云计算资源来加速训练过程。
- 如果显存不够,怎么解决?
如果在进行模型微调时遇到显存不足的问题,可以尝试以下方法来解决:
-
- 减小批量大小(Reduce Batch Size):减小每个训练批次的样本数量,可以减少显存的占用。虽然减小批量大小可能会导致收敛速度变慢,但可以是一种简单有效的方法。
-
- 优化模型架构(Optimize Model Architecture):检查模型的复杂性,考虑减少参数数量、层数或神经元数量,以降低显存消耗。
-
- 使用混合精度训练(Mixed Precision Training):通过将模型中的某些部分使用较低的精度(如半精度浮点数)进行计算,可以减少显存的使用,并提高训练速度。一些深度学习框架提供了混合精度训练的支持。
-
- 释放未使用的显存(Release Unused Memory):确保在每次迭代结束后及时清理不需要的中间结果和临时变量,以释放未使用的显存空间。
-
- 使用分布式训练(Distributed Training):将训练任务分发到多个设备上进行并行训练,可以降低每个设备的显存需求。一些深度学习框架支持分布式训练,如使用多台 GPU 或 TPU 进行训练。
-
- 使用云计算资源(Cloud Computing):如果本地硬件资源有限,可以考虑利用云计算服务来进行模型微调。云服务提供商通常提供各种规格的机器实例,可以根据需求选择适合的配置来完成训练任务。
-
- 压缩模型(Model Compression):对模型进行剪枝、量化等操作,可以减少模型的参数数量和显存占用,从而解决显存不足的问题。
通过以上方法,可以有效应对显存不足的情况,确保顺利进行模型微调并获得满意的结果。
- 微调的Loss是怎么变化的?
在进行微调(fine-tuning)过程中,模型的损失函数(Loss)通常会发生变化。一般情况下,随着训练的进行,损失函数会呈现以下变化:
-
- 初始阶段(Initial Stage):在微调的初始阶段,模型的损失函数可能会比较高,因为原始预训练模型的参数与微调任务可能存在较大差异,需要通过训练来逐渐调整这些参数。
-
- 下降阶段(Decreasing Stage):随着训练的进行,损失函数通常会逐渐下降。这是因为模型通过反向传播算法不断更新参数,优化模型使其更好地拟合微调的数据集。
-
- 稳定阶段(Stable Stage):在某个阶段之后,损失函数可能会达到一个相对稳定的水平,不再出现显著下降。此时模型已经较好地适应了微调任务的数据集,并且进一步优化可能变得较为困难。
-
- 震荡阶段(Fluctuating Stage):有时候损失函数会在稳定阶段内出现一些波动或震荡。这种情况可能是由于学习率设置不当、数据噪声或模型复杂度等因素导致的。
-
- 提前停止(Early Stopping):在监控损失函数的过程中,可以使用提前停止策略来避免过拟合。即当损失函数在验证集上开始增加时,可以提前终止训练,以防止模型过度拟合训练数据。
总体而言,微调过程中损失函数的变化是一个动态的过程,通过观察和分析损失函数的变化趋势可以帮助我们了解模型的训练情况,及时调整超参数和策略,以获得更好的微调效果。
- 微调完成后,怎么测试实际效果?
微调完成后,可以通过以下步骤来测试模型在实际数据上的效果:
-
- 准备测试数据集:首先需要准备一个独立于训练集和验证集的测试数据集。测试数据应该代表真实场景中模型将要应用的数据,且标签(ground truth)应该是已知的。
-
- 进行推理(Inference):使用经过微调的模型对测试数据集进行推理,得到模型的预测结果。
-
- 评估性能指标:根据模型的预测结果和测试数据集的标签,计算各种性能指标来评估模型的效果。常见的评估指标包括准确率、精确度、召回率、F1 值等。
-
- 可视化分析:通过混淆矩阵、ROC 曲线、PR 曲线等可视化工具来分析模型的分类效果,了解模型在不同类别上的表现。
-
- 误差分析:对模型在测试集上产生错误的样本进行分析,了解模型容易出错的情况,从中找出改进模型的方向。
-
- 与基准比较:将微调后的模型性能与基准模型或其他模型进行比较,以验证微调是否带来了性能提升。
-
- 部署到实际应用:如果模型在测试集上表现良好且符合预期,则可以考虑将其部署到实际应用中进行验证,并持续监控模型的性能。
通过以上步骤的测试与评估,可以全面了解模型在实际数据上的表现,验证微调的效果,并为最终的模型部署做好准备。
- 除了LoRA,还用过其他微调的方法吗?
以下是一些常见的微调方法和策略:
-
- 迁移学习(Transfer Learning):迁移学习是一种常用的微调方法,通过在一个任务上训练好的模型参数来初始化另一个相关任务的模型,并在新任务上进行微调。这种方法通常能加速训练过程并提高模型的性能。
-
- 差异性学习率调整(Differential Learning Rate Adjustment):在微调过程中,可以为模型不同层级设置不同的学习率。通常把底层的学习率设置较小以保留更多的预训练信息,而较高层设置较大的学习率以更快地适应新任务。
-
- 冻结部分网络层(Freezing Layers):对于已经训练好的预训练模型,可以选择冻结其中的一些层,只微调模型的部分参数。这种策略适用于原始任务与微调任务有一定相关性的情况。
-
- 数据增强(Data Augmentation):在微调过程中,可以利用数据增强技术扩增训练数据集,如旋转、翻转、缩放等操作,以增加数据的多样性,提高模型的泛化能力。
-
- 正则化(Regularization):为避免过拟合,可以在微调过程中引入正则化项,如 L1 正则化、L2 正则化等,帮助控制模型的复杂度。
-
- 多任务学习(Multi-Task Learning):将多个相关任务同时纳入微调的过程中,共享模型的某些部分或参数,以提高模型的泛化能力和效果。
-
- 自监督学习(Self-Supervised Learning):在没有标签的情况下,通过设计自监督任务来预训练模型,然后在微调阶段使用有监督的数据进行微调,以提升模型性能。
这些微调方法和策略可以根据具体任务的需求和数据特点来选择和组合,以达到更好的微调效果。如果您需要进一步了解某种微调方法的具体细节,请随时告诉我。
分布式训练
- 介绍各个并行,数据并行、模型并行
在深度学习中,为了加速训练和处理大规模数据,通常会采用并行计算的方法。其中,数据并行和模型并行是两种常见的并行策略:
-
- 数据并行(Data Parallelism):
- 原理:数据并行是指将整个模型复制到每个计算设备上,在每个设备上使用不同的小批量数据进行训练,然后将各个设备的梯度进行聚合更新模型参数。
- 工作流程:首先,将训练数据集均匀划分成多份,在每个计算设备上加载不同的数据子集,并使用相同的模型参数进行前向传播和反向传播计算。接着,将各个设备计算得到的梯度进行汇总和平均,最后更新模型参数。
- 优点:数据并行易于实现,适用于大规模数据集和大型模型,能够提高训练速度和效率。
- 缺点:在设备之间通信可能成为瓶颈,需要考虑如何有效地同步、通信和调整学习率。
-
- 模型并行(Model Parallelism):
- 原理:模型并行是指将模型拆分为多个部分,每个部分在不同的计算设备上运行,各部分之间通过通信交换信息,共同完成整个模型的计算。
- 工作流程:首先,将模型按照某种规则(如层级划分、特征划分等)分割成若干部分,然后将这些部分分配给不同的计算设备,并协调各设备之间的通信和计算顺序。
- 优点:模型并行适用于较大的模型,在一定程度上可以解决单设备内存不足的问题,提高模型的可扩展性。
- 缺点:需要额外的通信开销和协调工作,难度较高,且不适用于所有类型的模型。
综合来看,数据并行和模型并行是两种常见的并行计算策略,通常会根据任务需求、模型大小和计算资源等因素选择合适的并行方法。在实际应用中,也可以结合两种并行方式,以充分利用计算资源,加快训练速度,并提高深度学习模型的训练效率。
- 介绍MoE,MoE怎么使用到大模型上
MoE(Mixture of Experts)是一种用于构建大型深度神经网络的架构,通过将多个专家网络组合在一起来提高模型的表现。MoE模型在处理复杂任务和大规模数据时具有很好的性能,并且适用于大规模模型的训练。
下面是关于MoE的一些重点概念和如何将MoE应用到大型模型上的介绍:
MoE 的基本原理:
- 模型结构:MoE模型由多个“专家”网络和一个“门控”网络组成。专家网络负责学习不同方面或特征的表示,而门控网络负责动态地选择哪个专家网络对当前输入进行预测。
- 门控机制:门控网络通常使用注意力机制或其他机制来计算每个专家网络的权重,以确保在不同情况下正确选择最优的专家网络。
在大型模型中使用 MoE:
-
- 扩展模型规模:MoE可以帮助扩展大型模型的规模,通过并行训练多个专家网络来增加模型的表达能力。
-
- 解决稀疏性问题:在大型模型中,MoE可以帮助解决权重矩阵稀疏性的问题,因为每个专家网络只需学习自己的部分参数。
-
- 提高泛化能力:MoE可以通过引入多样性的专家网络来提高模型的泛化能力,从而更好地适应各种输入数据。
MoE 在大型模型中的应用:
- 分层结构:可以将MoE嵌入到大型模型的特定层中,例如在 Transformer 模型的某些层添加MoE结构,以提高模型的表示能力。
- 并行训练:通过并行训练多个专家网络,可以利用大规模计算资源快速训练MoE模型。
- 模型优化:在大型模型中使用MoE时,需要设计合适的优化算法和调整超参数,以确保模型的稳定性和性能。
通过合理设计和使用 MoE 结构,可以有效地应用到大型模型中,提高模型的表现和泛化能力,适应更加复杂和大规模的任务和数据集。
- MoE并行
MoE(Mixture of Experts)中的并行是指如何有效地利用并行计算资源来训练和部署 MoE 结构。以下是关于 MoE 并行的几个方面:
-
- 数据并行:
- 在 MoE 中,可以应用数据并行策略,将不同样本分配给不同的计算设备或节点,在各个设备上独立计算专家网络和门控网络的输出。
- 这种数据并行可以加速 MoE 模型的训练过程,特别适用于大规模数据集和参数较多的情况。
-
- 模型并行:
- 在 MoE 中,也可以使用模型并行策略,将不同的专家网络分配到不同的计算设备上进行计算,然后通过通信协调不同设备之间的信息交换。
- 模型并行适用于具有大量专家网络或者需要处理较大模型的情况,可以提高模型的可扩展性和训练效率。
-
- 混合并行:
- 在 MoE 中,通常会结合数据并行和模型并行的方式来并行化训练过程。这种混合并行可以更好地利用计算资源,加快训练速度。
- 通过混合并行,可以同时在多个计算设备上并行训练不同的专家网络,并通过通信协调实现整体模型的训练和更新。
-
- 分布式训练:
- 对于大规模的 MoE 模型,可以采用分布式训练的方式,将不同部分的模型分布在多个计算节点上并行训练。
- 分布式训练需要考虑节点之间的通信和同步机制,以确保各节点的参数保持一致,同时提高模型的训练效率。
通过合理设计和实施并行计算策略,可以充分利用计算资源加速 MoE 模型的训练过程,提高模型的性能和扩展性。在应用 MoE 结构时,根据任务需求、模型规模和计算资源等因素选择合适的并行策略,以最大程度地提高模型的训练效率和表现。
训练部分
- 训练时间怎么计算?
训练时间的计算通常涉及两个关键指标:批次处理时间(Batch Processing Time)和训练迭代次数(Training Iterations)。以下是计算训练时间的一般步骤:
-
- 计算单个批次处理时间:
- 首先,记录模型在一个批次数据上进行前向传播、反向传播和参数更新的时间,即单个批次处理时间。
- 可以多次运行同一批次来获得平均处理时间,以减少随机性带来的影响。
-
- 确定训练迭代次数:
- 根据任务需求和模型性能,确定需要训练的总迭代次数。通常可以根据验证集的性能表现或训练曲线来决定是否需要增加迭代次数。
-
- 计算训练时间:
- 将单个批次处理时间乘以总训练迭代次数,即可得到预估的总训练时间。
- 例如,总训练时间 = 单个批次处理时间 × 总训练迭代次数。
-
- 其他因素考虑:
- 在实际应用中,还需要考虑计算资源的利用率、网络通信开销、模型保存和验证评估等环节所需的时间。
- 还需要注意硬件设备、并行计算策略、超参数调整等因素对训练时间的影响。
-
- 实时监控和调整:
- 在训练过程中,可以通过实时监控工具记录训练时间和进度,并根据需要调整超参数、优化算法,以提高训练效率和模型性能。
综合考虑以上因素,可以比较准确地估算深度学习模型的训练时间,并根据需求进行调整和优化,以确保训练过程高效、稳定和有效。
- 参数量怎么计算?
计算深度学习模型的参数量通常涉及到每一层的参数数量和结构。以下是计算参数量的一般步骤:
-
- 权重参数:
- 对于全连接层(Dense Layer):权重参数的数量等于输入特征数量乘以输出特征数量,再加上偏置项的数量。
- 参数数量 = 输入特征数量 × 输出特征数量 + 输出特征数量
- 对于卷积层(Convolutional Layer):权重参数的数量等于卷积核的大小乘以通道数,再乘以输出通道数。
- 参数数量 = 卷积核大小 × 输入通道数 × 输出通道数
- 对于循环神经网络(Recurrent Neural Network):权重参数的数量取决于隐藏状态的大小和输入的维度。
- 参数数量 = 隐藏状态大小 × (输入特征数量 + 隐藏状态大小)
-
- 偏置参数:
- 每个神经元都有一个对应的偏置参数,所以偏置参数的数量等于输出特征数量(或输出通道数)。
- 偏置参数数量 = 输出特征数量
-
- 总参数数量:
- 将每一层的权重参数和偏置参数相加,即可得到整个模型的总参数数量。
-
- 注意事项:
- 在计算参数数量时,需要考虑每个权重参数和偏置参数的精度(如单精度浮点数、双精度浮点数)。
- 对于复杂模型(如包含注意力机制、大规模模型),可能还需要考虑其他参数(如门控参数、缩放参数)的数量。
通过对每一层的参数数量进行计算,然后逐层累加,可以得到整个深度学习模型的参数数量。这种方法可以帮助了解模型规模和复杂度,评估模型的训练和推理成本,以及优化模型设计和部署。
- 英文到中文的词表映射怎么做?
英文到中文的词表映射通常可以通过以下方法来实现:
-
- 双语平行语料库:
- 使用包含大量英文和对应中文翻译的双语平行语料库,如英中翻译数据集,可以通过对齐这些平行数据来建立词表映射。
- 常用的对齐方法包括基于统计的词对齐算法(如IBM模型)、基于神经网络的对齐模型(如Transformer)等。
-
- 字典或词典:
- 基于英汉词典或专业术语表,在其中查找英文单词对应的中文翻译,以构建简单的词表映射。
- 可以通过现有的在线词典、翻译工具或领域专业术语数据库来获取准确的词语对应关系。
-
- 机器翻译模型:
- 利用预训练的机器翻译模型(如Google Translate、百度翻译等),输入英文单词或短语,获取对应的中文翻译结果。
- 采用这种方法可以快速获取大规模的英文到中文的词表映射,但需注意翻译质量和准确性。
-
- 词向量空间:
- 在训练过程中,可以使用词向量模型(如Word2Vec、FastText、GloVe等)将英文单词和对应中文翻译映射到一个共享的词向量空间。
- 通过词向量的相似性或距离来建立英文到中文的词表映射,适用于更加复杂的词语对应关系。
-
- 自监督学习:
- 基于自监督学习的方法,可以通过设计任务或目标函数,使得模型能够自动学习并发现英文和中文之间的词表映射。
- 例如,使用对抗生成网络(GAN)或变分自编码器(VAE)等方法进行跨语言表示学习。
以上方法可根据实际需求和可获得的资源选择合适的方式来进行英文到中文的词表映射,并在具体任务中应用所得到的映射关系。
- DPO算法
DPO(Deterministic Policy Optimization)算法是一种用于解决连续动作空间的强化学习算法。下面是关于DPO算法的一些要点:
-
- 确定性策略:
- DPO算法采用确定性策略来表示策略函数,即根据状态直接输出确定性的动作,而非输出动作的概率分布。
- 这种确定性策略有助于在连续动作空间中更加高效地搜索最优动作。
-
- 价值函数:
- DPO算法通常会使用值函数(Value Function)来评估状态的价值,并通过值函数的估计来指导策略的更新和改进。
- 常见的值函数包括状态值函数(V函数)和动作值函数(Q函数)。
-
- 优势函数:
- 为了更好地引导策略的更新,DPO算法通常会计算优势函数(Advantage Function),表示某个动作相对于平均水平的优势。
- 优势函数可以帮助策略选择更好的动作,提高策略的性能。
-
- 策略改进:
- 在DPO算法中,通过最大化价值函数或优势函数来更新策略,使得策略朝着能够获取更高回报的方向前进。
- 通常使用优化算法(如随机梯度下降)来更新策略参数,以最大化值函数或优势函数。
-
- 策略迭代:
- DPO算法通常采用策略迭代(Policy Iteration)的方式,交替进行策略评估和策略改进的步骤,直至策略收敛到最优策略。
- 在每次迭代中,先评估当前策略的性能,然后基于价值函数或优势函数来改进策略。
DPO算法是一种有效的用于解决连续动作空间的强化学习算法,通过确定性策略和值函数的结合来实现策略优化和改进。在实践中,可以根据具体问题和需求调整算法参数,以获得更好的性能和收敛性。
- 介绍PPO算法
PPO(Proximal Policy Optimization)算法是一种流行的强化学习算法,旨在解决连续动作空间和离散动作空间中的策略优化问题。以下是关于PPO算法的一些要点:
-
- 重点策略优化:
- PPO算法通过限制策略更新的步长,以确保新的策略不会与旧策略相差太远,从而保持较为稳定的训练过程。
- 通过引入近端约束(Proximal Constraint)来控制策略更新,使得策略改进步骤更为稳健。
-
- 策略梯度方法:
- PPO属于策略梯度方法的一种,通过最大化期望回报来更新策略参数,以提高智能体在环境中的性能。
- 采用随机梯度下降等优化算法来优化策略函数,使得策略能够更好地适应环境变化。
-
- 优势估计:
- PPO算法通常会使用优势函数(Advantage Function)来估计某个动作相对于平均水平的优势,以指导策略的改进。
- 优势函数有助于减少方差,提高策略优化的效率和稳定性。
-
- 多步策略更新:
- 在PPO算法中,可以采用多步策略更新(Multiple Epochs of Update)的方式,即多次利用同一批数据进行策略优化。
- 这种方法可以提高样本利用效率,加速收敛速度,并帮助克服策略优化中的局部最优问题。
-
- 并行训练:
- PPO算法可以利用并行训练来加快模型的训练速度,从而更快地收敛到较优的策略。
- 通过并行化处理多个环境实例,可以有效提高训练效率和性能。
PPO算法结合了策略梯度方法、重点策略优化和优势估计等技术,具有较好的稳定性和收敛性,在解决各种强化学习问题时表现良好。根据具体问题和实际需求,可以对PPO算法进行调优和改进,以获得更好的性能和结果。
大模型(LLMs)进阶面
- LLMs 复读机问题
- 什么是 LLMs 复读机问题?
- 为什么会出现 LLMs 复读机问题?
- 如何缓解 LLMs 复读机问题?
- llama 系列问题
- llama 输入句子长度理论上可以无限长吗?
- 什么情况用Bert模型,什么情况用LLaMA、ChatGLM类大模型,咋选?
- 各个专业领域是否需要各自的大模型来服务?
- 如何让大模型处理更长的文本?
- …
大模型(LLMs)微调面
大模型(LLMs)微调面
- 如果想要在某个模型基础上做全参数微调,究竟需要多少显存?
- 为什么SFT之后感觉LLM傻了?
- SFT 指令微调数据 如何构建?
- 领域模型Continue PreTrain 数据选取?
- 领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
- 领域模型Continue PreTrain ,如何 让模型在预训练过程中就学习到更多的知识?
- 进行SFT操作的时候,基座模型选用Chat还是Base?
- 领域模型微调 指令&数据输入格式 要求?
- 领域模型微调 领域评测集 构建?
- 领域模型词表扩增是不是有必要的?
- 如何训练自己的大模型?
- 训练中文大模型有啥经验?
- 指令微调的好处?
- 预训练和微调哪个阶段注入知识的?
- 想让模型学习某个领域或行业的知识,是应该预训练还是应该微调?
- 多轮对话任务如何微调模型?
- 微调后的模型出现能力劣化,灾难性遗忘是怎么回事?
- 微调模型需要多大显存?
- 大模型LLM进行SFT操作的时候在学习什么?
- 预训练和SFT操作有什么不同
- 样本量规模增大,训练出现OOM错
- 大模型LLM进行SFT 如何对样本进行优化?
- 模型参数迭代实验
- 微调大模型的一些建议
- …
大模型(LLMs)训练经验帖
-
分布式训练框架选择?
-
LLMs 训练时 有哪些有用的建议?
-
模型大小如何选择?
-
加速卡如何选择?
-
…
大模型(LLMs)langchain 面
大模型(LLMs)langchain 面
-
- 什么是 LangChain?
-
- LangChain 包含哪些 核心概念?
- 2.1 LangChain 中 Components and Chains 是什么?
- 2.2 LangChain 中 Prompt Templates and Values 是什么?
- 2.3 LangChain 中 Example Selectors 是什么?
- 2.4 LangChain 中 Output Parsers 是什么?
- 2.5 LangChain 中 Indexes and Retrievers 是什么?
- 2.6 LangChain 中 Chat Message History 是什么?
- 2.7 LangChain 中 Agents and Toolkits 是什么?
-
- 什么是 LangChain Agent?
-
- 如何使用 LangChain ?
-
- LangChain 支持哪些功能?
-
- 什么是 LangChain model?
-
- LangChain 包含哪些特点?
-
- LangChain 如何使用?
- 8.1 LangChain 如何调用 LLMs 生成回复?
- 8.2 LangChain 如何修改 提示模板?
- 8.3 LangChain 如何链接多个组件处理一个特定的下游任务?
- 8.4 LangChain 如何Embedding & vector store?
-
LangChain 存在哪些问题及方法方案?
-
- LangChain 低效的令牌使用问题
-
- LangChain 文档的问题
-
- LangChain 太多概念容易混淆,过多的“辅助”函数问题
-
- LangChain 行为不一致并且隐藏细节问题
-
- LangChain 缺乏标准的可互操作数据类型问题
-
-
LangChain 替代方案?
-
…
基于LLM+向量库的文档对话 经验面
-
一、基于LLM+向量库的文档对话 基础面
- 1.1 为什么 大模型 需要 外挂(向量)知识库?
- 1.2. 基于LLM+向量库的文档对话 思路是怎么样?
- 1.3. 基于LLM+向量库的文档对话 核心技术是什么?
- 1.4. 基于LLM+向量库的文档对话 prompt 模板 如何构建?
-
二、基于LLM+向量库的文档对话 存在哪些痛点?
-
三、基于LLM+向量库的文档对话 工程示例面
-
…
LLM文档对话 —— pdf解析关键问题
-
一、为什么需要进行pdf解析?
-
二、为什么需要 对 pdf 进行解析?
-
三、pdf解析 有哪些方法,对应的区别是什么?
-
四、pdf解析 存在哪些问题?
-
五、如何 长文档(书籍)中关键信息?
-
六、为什么要提取标题甚至是多级标题?
-
七、如何提取 文章标题?
-
八、如何区分单栏还是双栏pdf?如何重新排序?
-
九、如何提取表格和图片中的数据?
-
十、基于AI的文档解析有什么优缺点?
-
…
基于LLM+向量库的文档对话 经验面
-
一、基于LLM+向量库的文档对话 基础面
- 1.1 为什么 大模型 需要 外挂(向量)知识库?
- 1.2. 基于LLM+向量库的文档对话 思路是怎么样?
- 1.3. 基于LLM+向量库的文档对话 核心技术是什么?
- 1.4. 基于LLM+向量库的文档对话 prompt 模板 如何构建?
-
二、基于LLM+向量库的文档对话 存在哪些痛点?
-
三、基于LLM+向量库的文档对话 工程示例面
-
…
大模型(LLMs)参数高效微调(PEFT) 面
大模型(LLMs)参数高效微调(PEFT) 面
-
微调方法是啥?如何微调?
-
为什么需要 PEFT?
-
介绍一下 PEFT?
-
PEFT 有什么优点?
-
微调方法批处理大小模式GPU显存速度?
-
Peft 和 全量微调区别?
-
多种不同的高效微调方法对比
-
当前高效微调技术存在的一些问题
-
高效微调技术最佳实践
-
PEFT 存在问题?
-
能不能总结一下各种参数高效微调方法?
-
…
配器微调(Adapter-tuning)篇
-
一、为什么 需要 适配器微调(Adapter-tuning)?
-
二、适配器微调(Adapter-tuning)思路?
-
三、 适配器微调(Adapter-tuning)特点是什么?
-
四、AdapterFusion 思路 是什么?
-
五、AdapterDrop 思路 是什么?
-
六、AdapterDrop 特点 是什么?
-
七、MAM Adapter 思路 是什么?
-
八、MAM Adapter 特点 是什么?
-
…
提示学习(Prompting)
-
一、为什么需要 提示学习(Prompting)?
-
二、什么是 提示学习(Prompting)?
-
三、提示学习(Prompting) 有什么优点?
-
四、提示学习(Prompting)有哪些方法,能不能稍微介绍一下它们间?
- 4.1 前缀微调(Prefix-tining)篇
- 4.1.1 为什么需要 前缀微调(Prefix-tining)?
- 4.1.2 前缀微调(Prefix-tining)思路是什么?
- 4.1.3 前缀微调(Prefix-tining)的优点是什么?
- 4.1.4 前缀微调(Prefix-tining)的缺点是什么?
- 4.2 指示微调(Prompt-tuning)篇
- 4.2.1 为什么需要 指示微调(Prompt-tuning)?
- 4.2.2 指示微调(Prompt-tuning)思路是什么?
- 4.2.3 指示微调(Prompt-tuning)优点是什么?
- 4.2.4 指示微调(Prompt-tuning)缺点是什么?
- 4.2.5 指示微调(Prompt-tuning)与 Prefix-tuning 区别 是什么?
- 4.2.6 指示微调(Prompt-tuning)与 fine-tuning 区别 是什么?
- 4.3 P-tuning 篇
- 4.3.1 为什么需要 P-tuning?
- 4.3.2 P-tuning 思路是什么?
- 4.3.3 P-tuning 优点是什么?
- 4.3.4 P-tuning 缺点是什么?
- 4.4 P-tuning v2 篇
- 4.4.1 为什么需要 P-tuning v2?
- 4.4.2 P-tuning v2 思路是什么?
- 4.4.3 P-tuning v2 优点是什么?
- 4.4.4 P-tuning v2 缺点是什么?
- 4.1 前缀微调(Prefix-tining)篇
-
…
LoRA 系列篇
-
一、LoRA篇
- 1.1 什么是 LoRA?
- 1.2 LoRA 的思路是什么?
- 1.3 LoRA 的特点是什么?
-
二、QLoRA篇
- 2.1 QLoRA 的思路是怎么样的?
- 2.2 QLoRA 的特点是什么?
-
三、AdaLoRA篇
- 3.1 AdaLoRA 的思路是怎么样的?
-
四、LoRA权重是否可以合入原模型?
-
五、ChatGLM-6B LoRA后的权重多大?
-
六、LoRA 微调优点是什么?
-
七、LoRA微调方法为啥能加速训练?
-
八、如何在已有LoRA模型上继续训练?
-
九、LoRA 缺点是什么?
-
十、LoRA这种微调方法和全参数比起来有什么劣势吗?
-
…
大模型(LLMs)推理面
大模型(LLMs)推理面
-
- 为什么大模型推理时显存涨的那么多还一直占着?
-
- 大模型在gpu和cpu上推理速度如何?
-
- 推理速度上,int8和fp16比起来怎么样?
-
- 大模型有推理能力吗?
-
- 大模型生成时的参数怎么设置?
-
- 有哪些省内存的大语言模型训练/微调/推理方法?
- 6.1 如何 估算模型所需的RAM?
- 6.2 Fp16-mixed precision
- 6.3 Int8-bitsandbytes
- 6.4 LoRA
- 6.5 Gradient Checkpointing
- 6.6 Torch FSDP+CPU offload
-
- 如何让大模型输出合规化
-
- 应用模式变更
-
…
大模型(LLMs)预训练面
大模型(LLMs)增量预训练篇
- 为什么要增量预训练?
- 进行 增量预训练 需要做哪些准备工作?
- 增量预训练 所用 训练框架?
- 增量预训练 训练流程 是怎么样?
- …
大模型(LLMs)评测面
- 大模型怎么评测?
- 大模型的honest原则是如何实现的?模型如何判断回答的知识是训练过的已知的知识,怎么训练这种能力?
- 如何衡量大模型水平?
- 大模型评估方法 有哪些?
- 大模型评估工具 有哪些?
- …
大模型(LLMs)强化学习面
-
- 简单介绍强化学习?
-
- 简单介绍一下 RLHF?
-
- 奖励模型需要和基础模型一致吗?
-
- RLHF 在实践过程中存在哪些不足?
-
- 如何解决 人工产生的偏好数据集成本较高,很难量产问题?
-
- 如何解决三个阶段的训练(SFT->RM->PPO)过程较长,更新迭代较慢问题?
-
- 如何解决 PPO 的训练过程同时存在4个模型(2训练,2推理),对计算资源的要求较高 问题?
-
…
大模型(LLMs)软硬件配置面
- 建议的软件环境是什么?
- …
大模型(LLMs)训练集面
- SFT(有监督微调)的数据集格式?
- RM(奖励模型)的数据格式?
- PPO(强化学习)的数据格式?
- 找数据集哪里找?
- 微调需要多少条数据?
- 有哪些大模型的训练集?
- 进行领域大模型预训练应用哪些数据集比较好?
- …
大模型(LLMs)显存问题面
- 大模型大概有多大,模型文件有多大?
- 能否用4 * v100 32G训练vicuna 65b?
- 如果就是想要试试65b模型,但是显存不多怎么办?
- nB模型推理需要多少显存?
- nB模型训练需要多少显存?
- 如何 估算模型所需的RAM?
- 如何评估你的显卡利用率?
- 测试你的显卡利用率 实现细节篇
- 如何查看多机训练时的网速?
- 如何查看服务器上的多卡之间的NVLINK topo?
- 如何查看服务器上显卡的具体型号?
- 如何查看训练时的flops?(也就是每秒的计算量)
- 如何查看对deepspeed的环境配置是否正确?
- tf32格式有多长?
- 哪里看各类显卡算力比较?
- (torch profiler)如何查看自己的训练中通信开销?
-
…
大模型(LLMs)分布式训练面
大模型(LLMs)分布式训练面
-
- 理论篇
- 1.1 训练 大语言模型 存在问题?
- 1.2 什么是 点对点通信?
- 1.3 什么是 集体通信?
- 1.4 什么是 数据并行?
- 1.5 数据并行 如何 提升效率?
- 1.6 什么是 流水线并行?
- 1.7 什么是 张量并行 (intra-layer)?
- 1.8 数据并行 vs 张量并行 vs 流水线并行?
- …
-
- 实践篇
- 2.1 假如有超多的8卡A100节点(DGX A100),如何应用3D并行策略?
- 2.2 如果想构这样一个大规模并行训练系统,训练框架如何选?
- 2.3 训练框架如何选?
-
- 并行化策略选择篇
- 3.1 如何选择一款分布式训练框架?
- 3.2 如何选择一款分布式训练框架?
- 3.3 单GPU
- 3.4 单节点多卡
- 3.5 多节点多卡
-
- 问题篇
- 4.1 推理速度验证
- 4.2 并行化训练加速
- 4.3 deepspeed 训练过程,报找不主机
- 4.4 为什么 多机训练效率不如单机?
- 4.5 多机训练不通,DeepSPeed配置问题
-
…
图解分布式训练(一) —— 流水线并行(Pipeline Parallelism)面
-
为什么需要流水线并行(Pipeline Parallelism)?
-
一、流水线并行(Pipeline Parallelism) 优化目标是什么?
-
二、图解 流水线并行(Pipeline Parallelism)模型并行 必要性?
-
三、流水线并行(Pipeline Parallelism) 图解?
-
四、流水线并行(Pipeline Parallelism)优缺点?
-
…
图解分布式训练(二) —— nn.DataParallel面
-
为什么需要nn.DataParallel?
-
一、pytorch中的GPU操作默认是什么样?
-
二、介绍一下 nn.DataParallel 函数?
-
三、nn.DataParallel 函数 处理逻辑 介绍一下?
-
四、nn.DataParallel 函数 常见问题及解答 有哪些?
- 4.1 多GPU计算减少了程序运行的时间?
- 4.2 如何保存和加载多GPU训练模型呢?
- 4.3 为什么第一块卡的显存会占用的更多一些?
- 4.4 直接使用nn.DataParallel的时候,训练采用多卡训练,会出现一个warning?
- 4.5 device_ids 0 被占用问题
-
五、nn.DataParallel 函数 参数更新方式 ?
-
六、nn.DataParallel 函数 优点 介绍一下?
-
七、nn.DataParallel 函数 缺点 介绍一下?
-
八、nn.DataParallel 函数 实战?
-
…
图解分布式训练(三) —— nn.parallel.DistributedDataParallel
-
为什么需要 nn.parallel.DistributedDataParallel ?
-
一、什么是 DistributedDataParallel 核心 —— Ring-AllReduce?
-
二、nn.parallel.DistributedDataParallel 函数 介绍一下?
-
三、nn.parallel.DistributedDataParallel 函数 如何多卡加速训练?
-
四、nn.parallel.DistributedDataParallel 实现流程介绍一下?
-
五、nn.parallel.DistributedDataParallel 参数更新介绍一下?
-
六、nn.DataParallel(以下简称DP) vs DistributedDataParallel(以下简称DDP)介绍一下?
-
七、DistributedDataParallel(以下简称DDP) 优点有哪些?
-
八、DistributedDataParallel(以下简称DDP) 缺点有哪些?
-
…
图解分布式训练(四) —— torch.multiprocessing 详细解析
-
一、torch.multiprocessing 函数介绍一下?
-
二、torch.multiprocessing 函数如何使用?
-
三、介绍一下 共享CUDA张量?
-
四、介绍一下 共享策略?
-
五、torch.multiprocessing 函数使用
-
…
图解分布式训练(五) —— AMP混合精度训练 详细解析
-
为什么需要 AMP混合精度训练?
-
一、什么是自动混合精度训练(AMP)
-
二、为什么需要自动混合精度?
-
三、混合精度训练的优点是什么?
-
四、混合精度训练的缺点是什么?
-
五、混合精度训练的关键技术是什么?
-
六、介绍一下 混合精度训练 动态损失缩放?
-
七、如何在PyTorch中使用自动混合精度?
-
八、如何使用 AMP混合精度训练 ?
-
…
图解分布式训练(六) —— Pytorch的 DeepSpeed 详细解析
-
一、为什么需要 Deepspeed?
-
二、DeepSpeed 基本概念 介绍一下?
-
三、DeepSpeed 通信策略 介绍一下?
-
四、DeepSpeed 如何使用?
-
五、DeepSpeed 代码实现?
-
七、训练精度 介绍一下?
-
八、获取模型参数 介绍一下?
-
…
图解分布式训练(七)—— accelerate 分布式训练 详细解析
-
一、为什么需要 accelerate 分布式训练?
-
二、什么是 accelerate 分布式训练?
-
三、accelerate 分布式训练 原理讲解?
-
四、accelerate 分布式训练 如何实践?
-
…
图解分布式训练(八)—— ZeRO 学习
-
一、什么是 3D 并行?
-
二、3D 并行 策略有哪些?
-
三、为什么需要 ZeRO?
-
四、ZeRO 的 核心思想是什么?
-
五、ZeRO 显存如何分配?
-
六、ZeRO 优化策略是怎么样?
-
七、ZeRO Offload后的计算流程是怎么样?
-
…
大模型(LLMs)agent 面
- 如何给LLM注入领域知识?
- 如果想要快速体验各种模型,该怎么办?
- …
Token及模型参数准备篇
- 预训练数据 Token 重复 是否影响 模型性能?
- SFT需要训练Token数?
- …
LLMs 位置编码篇
-
1 什么是位置编码?
-
2 什么是绝对位置编码?
-
3 什么是相对位置编码?
-
4 旋转位置编码 RoPE篇
- 4.1 旋转位置编码 RoPE 思路是什么?
- 4.2 推导一下 旋转位置编码 RoPE ?
- 4.3 旋转位置编码 RoPE 有什么优点?
- 4.4 旋转位置编码 RoPE 被哪些 LLMs 应用?
-
5 长度外推问题篇
- 5.1 什么是 长度外推问题?
- 5.2 长度外推问题 的 解决方法 有哪些?
-
6 ALiBi (Attention with Linear Biases)篇
- 6.1 ALiBi (Attention with Linear Biases) 思路是什么?
- 6.2 ALiBi (Attention with Linear Biases) 的偏置矩阵是什么?有什么作用?
- 6.3 ALiBi (Attention with Linear Biases) 有什么优点?
- 6.4 ALiBi (Attention with Linear Biases) 被哪些 LLMs 应用?
-
…
LLMs Tokenizer 篇
LLMs Tokenizer 篇
-
Byte-Pair Encoding(BPE)篇
- 1 Byte-Pair Encoding(BPE) 如何构建词典?
-
WordPiece 篇
- 1 WordPiece 与 BPE 异同点是什么?
-
SentencePiece 篇
- 简单介绍一下 SentencePiece 思路?
-
对比篇
- 1 举例 介绍一下 不同 大模型LLMs 的分词方式?
- 2 介绍一下 不同 大模型LLMs 的分词方式 的区别?
-
…
怎么让英文大语言模型支持中文?(一) —— 构建中文tokenization
-
一、为什么需要 构建中文tokenization?
-
二、如何对 原始数据预处理?
-
三、如何构建中文的词库?
-
四、如何使用transformers库加载sentencepiece模型?
-
五、如何合并英文词表和中文词表?
-
六、怎么使用修改后的词表?
-
总结一下 构建中文tokenization?
-
…
怎么让英文大语言模型支持中文?(二) —— 继续预训练篇
-
一、为什么需要进行继续预训练?
-
二、如何对 继续预训练 数据预处理?
-
三、如何 构建模型?
-
四、如何 使用模型?
-
…
怎么让英文大语言模型支持中文?(三) —— 对预训练模型进行指令微调
-
一、为什么需要对预训练模型进行指令微调?
-
二、对预训练模型进行指令微调 数据 如何处理?
-
三、对预训练模型进行指令微调 tokenization 如何构建?
-
四、对预训练模型进行指令微调 模型 如何构建?
-
五、是否可以结合 其他库 使用?
-
…
Layer normalization 篇
-
Layer normalization-方法篇
- Layer Norm 篇
- Layer Norm 的计算公式写一下?
- RMS Norm 篇 (均方根 Norm)
- RMS Norm 的计算公式写一下?
- RMS Norm 相比于 Layer Norm 有什么特点?
- Deep Norm 篇
- Deep Norm 思路?
- 写一下 Deep Norm 代码实现?
- Deep Norm 有什么优点?
- Layer Norm 篇
-
Layer normalization-位置篇
- 1 LN 在 LLMs 中的不同位置 有什么区别么?如果有,能介绍一下区别么?
-
Layer normalization 对比篇
- LLMs 各模型分别用了 哪种 Layer normalization?
-
…
LLMs 激活函数篇
-
1 介绍一下 FFN 块 计算公式?
-
2 介绍一下 GeLU 计算公式?
-
3 介绍一下 Swish 计算公式?
-
4 介绍一下 使用 GLU 线性门控单元的 FFN 块 计算公式?
-
5 介绍一下 使用 GeLU 的 GLU 块 计算公式?
-
6 介绍一下 使用 Swish 的 GLU 块 计算公式?
-
各LLMs 都使用哪种激活函数?
-
…
大模型(LLMs)加速篇
大模型(LLMs)加速篇
-
- 当前优化模型最主要技术手段有哪些?
-
- 推理加速框架有哪一些?都有什么特点?
-
3 vLLM 篇
- 3.1 vLLM 的 功能有哪些?
- 3.2 vLLM 的 优点有哪些?
- 3.3 vLLM 的 缺点有哪些?
- 3.4 vLLM 离线批量推理?
- 3.5 vLLM API Server?
-
4 Text generation inference 篇
- 4.1 介绍一下 Text generation inference?
- 4.2 Text generation inference 的 功能有哪些?
- 4.3 Text generation inference 的 优点有哪些?
- 4.4 Text generation inference 的 缺点有哪些?
- 4.5 Text generation inference 的 使用docker运行web server?
-
…
LLM(大语言模型)部署加速方法——PagedAttention篇
-
一、vLLM 用于大模型并行推理加速 存在什么问题?
-
二、vLLM 如何 优化 大模型并行推理加速?
-
三、什么是 PagedAttention?
-
四、 PagedAttention 如何存储 连续的key和value?
-
五、 PagedAttention 技术细节?
-
六、 PagedAttention 如何 实现安全共享?
-
七、 PagedAttention 源码介绍?
-
…
大模型推理加速工具 —— vLLM
-
一、引言
- 1.1 前言
- 1.2 为什么 需要 vLLM ?
- 1.3 vLLM 具有哪些特点 ?
- 1.4 vLLM 支持哪些 Huggingface 模型 ?
-
二、vLLM 性能如何?
-
三、vLLM 依赖包
-
四、vLLM 如何安装?
-
五、vLLM 如何使用?
-
六、vLLM 分布式推理与服务
-
…
LLM(大语言模型)部署加速方法——Faster Transformer篇
-
一、为什么需要 FasterTransformer?
-
二、FasterTransformer 介绍一下?
-
三、FasterTransformer 核心是什么?
-
四、FasterTransformer 优化?
-
…
纯Python超轻量高性能LLM推理框架 —— LightLLM
-
一、引言
- 1.1 前言
- 1.2 为什么 需要 LightLLM ?
- 1.3 目前 LLM推理框架 有 哪些?
-
二、LightLLM 介绍一下?
- 2.1 什么是 LightLLM ?
- 2.2 Token Attention 介绍?
- 2.3 Efficient Router 介绍?
-
三、LightLLM 性能表现 介绍?
-
四、LightLLM 依赖包 有哪些?
-
五、LightLLM 如何安装?
- 5.1 下载 LightLLM
- 5.2 安装 LightLLM 依赖
- 5.3 安装 LightLLM
-
六、LightLLM 如何使用?
- 6.1 启动 LightLLM 服务
-
填坑笔记
- LightLLM 支持模型 LLMs 模型?
-
…
LLM推理技术之StreamingLLM:如何拥有无限长生成能力
-
一、前言
- 1.1 大型语言模型(LLM)存在什么问题?
- 1.2 StreamingLLM 背景介绍
- 1.3 StreamingLLM 核心问题?
- 1.4 StreamingLLM 存在哪些挑战?
- 1.5 目前主流地增加输入文本长度的方法有哪些?
-
二、StreamingLLM 的思路是什么?
-
…
Attention 升级面
-
1 传统 Attention 存在哪些问题?
-
2 Attention 优化方向
-
3 Attention 变体有哪些?
-
4 Multi-Query Attention 篇
- 4.1 Multi-head Attention 存在什么问题?
- 4.2 介绍一下 Multi-Query Attention?
- 4.3 对比一下 Multi-head Attention 和 Multi-Query Attention?
- 4.4 Multi-Query Attention 这样做的好处是什么?
- 4.5 有 哪些模型 是 使用 Multi-Query Attention?
-
5 Grouped-query Attention
- 5.1 什么是 Grouped-query Attention?
- 5.2 有哪些大模型使用 Grouped-query Attention?
-
6 FlashAttention 介绍一下
-
7 并行 transformer block 介绍一下?
-
…
大模型幻觉(LLM Hallucination)面
大模型幻觉(LLM Hallucination)面
-
一、什么是大模型幻觉?
-
二、为什么LLM会产生幻觉?
-
三、为什么需要解决LLM的幻觉问题?
-
四、幻觉一定是有害的吗?
-
五、幻觉有哪些不同类型?
-
六、如何度量幻觉?
-
七、如何缓解LLM幻觉?
- 7.1 通过使用外部知识验证主动检测和减轻幻觉
- 7.2 事实核心采样
- 7.3 SelfCheckGPT
-
八、LLMs什么时候最容易产生幻觉?
-
…
大模型的幻觉问题篇
-
一、什么是 大模型幻觉问题?
-
二、为什么 会 出现 大模型幻觉问题?
-
三、如何 评估 大模型幻觉问题?
-
四、如何 缓解 大模型幻觉问题?
-
…
大模型的幻觉问题篇
-
一、为什么 会 出现 大模型幻觉?
-
二、如何 缓解 大模型幻觉?
-
…
LLMs 对比篇
LLMs 对比篇
-
LLMs 训练数据 和 数据量 对比如何?
-
…
百川智能baichuan7B、13B、53B、baichuan2 总结篇
-
一、baichuan-7B篇
-
- 你了解baichuan-7B解构么?介绍一下?
-
- baichuan-7B 如何 收集原始数据并 构建 训练数据?
-
- baichuan-7B 如何 提高 训练稳定性和吞吐?
-
-
二、baichuan-13B篇
-
- 相比于 baichuan-7B,baichuan-13B 的 特点体现在哪里?
-
- 如何 对 baichuan-13B 进行推理和部署?
-
- 如何 对 baichuan-13B 进行微调?
-
-
三、baichuan-53B篇
- 3.1 baichuan-53B 相比于 baichuan-7B 和 baichuan-13B 有哪些优势?
- 3.2 baichuan-53B 如何对 预训练数据 做处理?
- 3.3 baichuan-53B 如何进行 搜索增强?
-
四、baichuan2篇
- 4.1 baichuan2 与 其他大模型 对比
-
五、baichuan 数据构建篇
- 5.1 baichuan 进行微调时,领域数据:通用数据配比?
-
…
思维链 Chain-of-Thought(COT)篇
思维链 Chain-of-Thought(COT)篇
-
一、什么是思维链提示?
-
二、思维链提示本质是什么?
-
三、思维链提示 与 标准的提示学习方法有什么不同?
-
四、思维链提示 为什么可以提高语言模型的复杂推理能力?它的优势在哪里?
-
五、思维链提示 适用场景 有 哪些?
-
六、思维链提示 目前还存在哪些不足点?
-
七、思维链提示 对推动语言模型复杂推理能力研究有哪些启发和影响?
-
八、思维链提示 对实现真正的通用人工智能仍面临哪些挑战?
-
九、如何通过增加模型规模来获得语言模型强大的思路链推理能力的?这与模型获得的哪些能力有关?
-
十、你认为可以在哪些其他方面应用“思路链提示”这一思路来提升语言模型的能力?
-
十一、如果需要你对 思维链提示 进行改进,你觉得你会改进哪些地方?
-
十二、思维链提示 未来研究方向?
-
…
思维链 Chain-of-Thought(COT)变体篇
-
思维链 Chain-of-Thought(COT):思维链的启蒙
-
- 什么是 思维链 Chain-of-Thought(COT)?
-
- 思维链 Chain-of-Thought(COT)是思路是什么?
-
- 思维链 Chain-of-Thought(COT)存在问题?
-
-
思维树 Tree of Thoughts(TOT):一种用树结构解决复杂问题的方法
-
- 为什么需要 思维树 Tree of Thoughts(TOT)?
-
- 什么是 思维树 Tree of Thoughts(TOT)?
-
- 思维树 Tree of Thoughts(TOT)涉及问题有哪些?
-
-
思维图 Graph of Thoughts(GOT):一种把思维链过程建模层图结构的方法
-
- 为什么 需要 思维图 Graph of Thoughts(GOT)?
-
- 什么是 思维图 Graph of Thoughts(GOT) ?
-
- 思维图 Graph of Thoughts(GOT)核心思想是什么 ?
-
-
思维算法 Algorithm of Thoughts(AOT):一种用DFS/BFS示例解决问题的方法
-
- 为什么 需要 思维算法 Algorithm of Thoughts(AOT)?
-
- 思维算法 Algorithm of Thoughts(AOT)思路是什么?
-
- 思维算法 Algorithm of Thoughts(AOT) vs 其他 COT 的 区别?
-
-
思维链 Chain-of-Thought(COT) 有哪些 应用场景?
-
思维链 Chain-of-Thought(COT) 有哪些 局限性?
-
…
Graph RAG(Retrieval-Augmented Generation) 面 —— 一种 基于知识图谱的大模型检索增强实现策略
-
一、为什么需要 Graph RAG?
-
二、什么是 Graph RAG?
-
三、Graph RAG 思路介绍?
-
四、用代码 介绍 Graph RAG ?
-
五、用 示例 介绍 Graph RAG ?
-
六、Graph RAG 排序优化方式?
-
…
大模型生成去重技术面
-
一、什么是生成式大模型?
-
二、大模型是怎么让生成的文本丰富而不单调的呢?
-
三、生成式大模型 存在哪些问题?
-
四、生成式大模型 为什么会出现 重复生成现象?
-
五、生成式大模型 有哪些解决方法?
- 5.1 Unlikelihood Training
- 5.2 Repetition Penalty
- 5.3 Contrastive Search
- 5.4 Beam Search
- 5.5 TopK sampling
- 5.6 Nucleus sampler
- 5.7 Temperature
- 5.8 No repeat ngram size
- 5.9 重复率指标检测
-
…
LLMs 艾深老师 面试交流群 (注:人满 可 添加 小编wx:aisen5721 加群!)