当前位置: 首页 > news >正文

Transformer LLaMA

一、Transformer

Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。

Transformer 架构摆脱了RNNs,完全依靠 Attention的优势:

  • 并行地处理序列中的所有单词,从而大大加快了计算速度
  • 输入序列中单词之间的距离并不重要。Transformer 同样擅长计算相邻词和相距较远的词之间的依赖关系。

Attention Is All You Need

架构简介

在这里插入图片描述

左半部分是encoders,右半部分是decoders。注意,这里有一个xN,即encoder和decoder的个数,原文中是给定了6个。这两个还有一个特点,encoder和decoder架构是不相同的。

流程介绍:

  • Embedding: 词嵌入,将文本转成向量。最终得到的词嵌入矩阵是一个大小为(词汇量,嵌入维度)的二维数组矩阵。词嵌入矩阵中的向量​是通过Word2Vec、GloVe和FastText等训练词嵌入模型生成的。
  • Positional Encoding:位置编码,将向量加上位置信息。位置嵌入矩阵也是一个大小为(词汇量,嵌入维度)参数矩阵,通过训练过程优化或固定数学函数生成。词嵌入向量表示词语的语义信息,而位置嵌入向量表示词语在序列中的位置信息。通过将两者相加,最终的输入向量同时包含了词语的语义和位置信息。
  • Multi-Headed Self-Attention:多头自注意力机制,算出词与词关联度关系。在self-attention中,每个单词有3个不同的向量,它们分别是Query向量( Q),Key向量( K)和Value向量( V),长度一致。它们是通过3个不同的词位置嵌入向量 乘以3个不同的权值矩阵W 得到,最终基于多头注意力公式得到多头注意力向量。多头指的是使用多个不同的权值矩阵W 获取多组结果后再组成一组向量。
  • Add & Norm:残差链接和层归一化。这两个动作关乎的是训练过程,是为了让反向传播梯度下降,去寻找上面那一堆参数最优解的过程,更稳定。残差连接就是将多头向量与QKV操作前的原始向量直接相加,获得一个新的512维的向量,至少原始数据信息还在。层归一化有公式可以操作,其实都是重复的做简单的数学题。
  • Feed-Forward Network:前馈神经网络。前面步骤要不直接线性变换,要么就是直接的相加,将向量送入前馈神经网络,可以更精细化处理。首先连接到一个拥有更多神经元的全连接层,比如将512升为到2048维对应的权重矩阵,同时应用激活函数引入非线性,也就是以更高级的方式处理数据了。接下来再加一层,将2048维降回512继续的使用。此时的数据已经被重新精细处理过,同样是为了反向传播梯度下降,训练过程更稳定。总结来说,前馈神经网络通过其多层结构和非线性变换能力,能够有效地处理各种任务,帮助模型学习到有用的特征,并提高模型的性能。
  • Masked Multi-Headed Self-Attention:掩码多头自注意力机制。解码器掩掉句子后面的信息,与编码器整个输出交互, 不断预测训练,寻找整个模型的最佳参数组合,逼近人类语言。比如翻译训练过程,左边输入“我爱学习”, 右边对应输入“I like learning”,但是我们希望右边的句子是一个个基于前一个词推理输出的。因此右侧的过程是先“Shifed Target Sequence”,送入时多加了一个词:“[start] I like learning”,然后一样的处理:词嵌入、位置编码加入位置信息,进入掩码多头注意力操作,会将"[start]"后面的全遮盖住,数学上是将遮盖部分设为一个很大的负数,这样通过soflermax函数就直接忽略掉了后面这些信息。
  • Multi-Headed Cross-Attention:多头交叉注意力机制,利用解码器的输入(作为Query)与编码器的输出(作为Key和Value)计算注意力权重,使解码器动态关注编码器输出的相关信息,每个头独立学习不同的特征模式,最后将所有头的输出拼接,通过线性层融合得到最终结果。继续上面例子,"[start]“继续的进入,其实跟左边编码器同样的操作过程,也是三套参数生成Q、K、V三个向量。区别是K和V的生成用的是左侧编码器的输出向量生成的。这样解码器就将”[start]“与编码器的整个输出进行了交互。这样才能走出编码器,进行一次线性变换,通过Softmax函数输出下一个词的概率最大,那就是对的。再回头整个句子再输入进来。这次遮挡的是”[start] I"后面的,编码器混合交互完预测下一个词“like”概率最高。如此反复不断训练,不断的喂给它中英文对照的翻译数据集,不断的遮盖预测,不断的通过损失函数梯度下降反向传播,寻找整个模型的最佳参数组合,无限逼近人类自然语言。

Transformer算法相较于传统神经网络算法(如RNN、CNN等)具有以下显著优势:

  • 并行计算能力
    Transformer通过自注意力机制(Self-Attention)能够并行处理序列中的所有单词,而传统RNN需要逐个处理序列,导致计算速度较慢。这种并行性使得Transformer在训练和推理速度上具有显著优势。

  • 处理长距离依赖关系
    Transformer能够有效捕捉序列中单词之间的长距离依赖关系,而传统RNN在处理长序列时容易出现梯度消失或梯度爆炸问题,导致对长距离依赖的建模能力较弱。

  • 模块化架构
    Transformer由编码器(Encoder)和解码器(Decoder)组成,每个部分包含多个相同的模块(Block),这种模块化设计使得模型结构清晰且易于扩展。

  • 全局特征提取能力
    Transformer通过自注意力机制能够关注序列中的全局信息,而传统CNN主要关注局部特征。这种全局特征提取能力使得Transformer在自然语言处理等任务中表现更优。

  • 与CNN结合的潜力
    Transformer可以与CNN结合,如苹果的FastViT架构,将CNN的局部特征提取能力与Transformer的全局特征提取能力相结合,实现性能和准确率的平衡。

  • 硬件加速支持
    Transformer架构可以通过硬件加速(如NeuroBoost 9000)进一步优化性能,支持更大规模的模型和更复杂的任务。

我们首先把一个单独的encoder拿出来,去剖析一下里面的细节。

在这里插入图片描述

词嵌入 (Token Embedding )

输入部分分为两个小部分:第一部分就是embedding,第二部分就是位置编码。

Embedding层将离散的词汇或符号转换为连续的高维向量,使得模型能够处理和学习这些向量的语义关系。比如说我们的输入句子是“我爱你”

步骤1:词表映射
词表(Vocabulary):假设词表中有5000个词,每个词对应一个唯一ID。首先需要将每个词转换成对应的词ID:

"我" → ID 101
"爱" → ID 205
"你" → ID 209
"学习" → ID 307

步骤2:词嵌入矩阵
然后,这些ID会被输入到嵌入层(embedding layer),转换成向量。例如:

我 → [0.2, -0.1, 0.5 ...]
爱 → [0.1, 0.3, -0.2 ...]
你 → [-0.3, 0.2, 0.4 ...]
  • 词嵌入矩阵是一个大小为(词汇量,嵌入维度)的二维数组矩阵。行数对应词汇量,列数对应嵌入维度。每个词对应一行向量,用于表示该词的语义信息,如嵌入维度是512,则每个词含512个向量值。
  • 词嵌入矩阵中的向量,​是通过训练词嵌入模型生成的。常用的词嵌入模型包括Word2Vec、GloVe和FastText。这些模型通过分析大量文本数据,学习词语之间的关系,生成有意义的向量表示。
  • 生成的向量表示词语在高维空间中的位置,语义相近的词在向量空间中距离较近。例如,"king"和"queen"的向量会比较接近,而"king"和"apple"则会比较远。
  • 训练目标:通过最小化预测误差,模型调整词向量,使得语义相似的词在向量空间中接近,从而捕捉词语的语义和句法信息。

位置编码(Positional Encoding)

RNN有天然的时序关系,但是对于transformer来讲,单词是可以一起处理的,这样做增快了速度,但是忽略了单词之间的序列关系,这个时候,我们就需要位置编码。

Transformer原版的正弦/余弦编码公式如下:

在这里插入图片描述
其中,pos 是位置,i是维度索引,dmodel是模型维度。

特点:

  • 正弦函数保证编码值在 [−1,1] 之间,与词向量尺度匹配。
  • 不同频率的正弦/余弦组合,可捕捉不同粒度的位置关系。
  • 支持外推(处理比训练时更长的序列)。

正余弦编码的意义:

  • 先说pos, position就是单词或者是字的位置。它如果是512个维度的位置编码,这512个维度中偶数位置使用sin,奇数位置使用cos。
    sin和cos函数值域有限(定义域无限),可以很好地限制位置编码的数字大小。反观顺序编码:超长序列的pos可能会远远超过原始的语义、向量相加后会导致喧宾夺主的问题

  • 通过调节频率,我们可以得到多种多样的sin和cos函数。即:在pos的基础上乘以在这里插入图片描述 这个频率f的行为,我们可以让特征编号i小的特征被投射到剧烈变化(f大,趋于1,会被投射到高频率的正弦函数上)的维度上;让特征编号i大的特征被投射到轻微变化、甚至完全单调(f小,趋于0,会被投射到低频率的正弦函数上)的维度上。从而可以让小编号特征去捕捉样本之间的局部细节差异【位置相近的值,编码变化较大】,让大编号特征去捕捉样本之间按顺序排列的全局趋势【位置相近的值,编码变化较小】

1,位置嵌入的作用:在Transformer模型中,位置嵌入用于保存单词在序列中的位置信息。由于Transformer不使用RNN,无法自然捕捉顺序信息,因此位置嵌入至关重要。

2,生成方法:

  • 可学习的嵌入层:位置嵌入矩阵是一个参数矩阵,通过训练过程优化。模型在训练时,会调整这些向量,使得它们能够有效捕捉位置信息。例如,位置1的向量[0.1, 0.2, 0.3]可能是在训练过程中通过反向传播算法优化得到的。
  • 固定数学函数:另一种方法是使用固定的数学函数生成位置嵌入,比如正弦和余弦函数。这种方法不需要训练,位置信息由数学公式直接生成。

3,训练过程:在可学习的嵌入层中,模型通过反向传播算法调整位置嵌入矩阵的值,使得模型能够更好地捕捉位置信息。训练目标是优化模型的整体性能,包括准确率、F1分数等。

4,位置嵌入矩阵的作用:位置嵌入矩阵是一个二维数组,行数对应序列长度,列数对应嵌入维度。每个位置对应一行向量,用于表示该位置的信息。

5,向量表示的意义:生成的向量表示位置在高维空间中的位置,相邻位置的向量在向量空间中距离较近,反映了它们在序列中的相对位置

位置编码示例:

位置1 → [0.1, 0.2, 0.3 ...]
位置2 → [0.4, 0.5, 0.6 ...]
位置3 → [0.7, 0.8, 0.9 ...]

得到这个位置编码之后,我们将位置编码512维度和词向量维度的512个维度相加,得到一个最终的512维度,作为整个transformer的输入。

我(位置1)→ [0.3, 0.1, 0.8 ...]
爱(位置2)→ [0.5, 0.8, 0.4 ...]
你(位置3)→ [0.4, 1.0, 1.3 ...]

在这里插入图片描述

为什么位置编码会有用?
对样本的位置本身进行“编码”,利用数字本身自带的顺序来告知Transformer。
在这里插入图片描述

多头注意力机制(Multi-Head Attention)

我们先用这张图解释注意力机制:
在这里插入图片描述
人类在看一张图片的时候,肯定有最关注的部分和不怎么关注的部分,颜色深的表示很受关注,比较浅的就就不怎么受关注。我们想判断婴儿在干嘛,这句话更加关注于图片中的哪个区域,我们想通过公式或者通过某种方式得到这个结果,这就是这就是注意力机制的一种基本形式。

再举个例子,“一张狼抓住了一只兔子并开始疯狂撕咬它”。怎么让模型知道它指的谁呢?或者“我吃了个苹果”里面的“苹果”怎么让模型知道指的是水果还是手机?所以除了跟踪词义和位置之外,跟踪输入的每个词与词之间的关系也非常重要,我们就要量化这种关系了。接下来的这个模块就是要创造一个叫自注意力的东西。然后这个东西怎么做呢?我们先看一下transformer原论文中的注意力机制公式:
在这里插入图片描述
那么首先在transformer中是怎么获得Q、K、V 这3个向量的呢?

在这里插入图片描述
其实很简单,X1乘以一个WQ的矩阵参数得到q1,乘以WK矩阵的k1,乘以WV矩阵的v1。X2 我们也使用同一套矩阵参数得到。

2,然后根据公式计算Q、K相似度,得到attention值。

在这里插入图片描述
在这里插入图片描述

第3步,通过将查询矩阵和键举证相乘,得到了所有Query-Key之间的点积网络。可以理解为每个Q(查询)和K(值)的匹配相似度

在实际操作中会使用矩阵,方便并行:

在这里插入图片描述

还一个细节点就是说我们在操作的时候叫多头。我们在这里其实只用了一套参数,但是在实际操作的时候,我们会用多套(多头),得到各自的Q、K、V,最终也就输出了多个Z(可以理解为基于不同属性不同角度观察数据,更全面理解输入信息),最后合在一起作为一个输出,再来一次神经变换,最终就获得了多头注意力向量。
在这里插入图片描述

二、LLaMA

预训练模型(LLaMA)是Meta公司2023年2月推出的人工智能模型。2023年7月18日:Meta发布了开源大模型LLaMA 2,最大的卖点是开源且可商用。

2024年4月18日:Meta推出了新版本LLaMA人工智能模型LLaMA 3,已用于Meta AI助手,同时也面向开发者进行了开源。2024年9月25日:Meta在Connect开发者大会上,发布了能够同时理解图像和文本的最新多模态模型LLaMA 3.2,允许人们通过语音进行互动。

1、技术架构

LLaMA是建立在Transformer基础架构上的自回归语言模型,以序列的方式处理输入文本,通过预测下一个单词或标记来生成文本。在Transformer架构基础上,LLaMA 2引入了Grouped Query Attention等技术改进,提高了模型的效率和性能。

1.基础架构——Transformer

  • 核心组件:Transformer架构是LLaMA的基础,主要由编码器和解码器组成,两者都包含多个堆叠的多头注意力(Multi-Head Attention)层和前馈神经网络(Feed-Forward Neural Network,FFN)层。在LLaMA中,主要使用了解码器部分来进行自回归语言建模。

  • 工作原理:在输入文本后,首先会对文本进行分词处理,将其转换为一系列的标记(tokens)。每个标记会被映射到一个低维向量空间,得到对应的词向量表示。然后,这些词向量会依次进入解码器的各层。在每一层中,先通过多头注意力机制对输入信息进行加权聚合,捕捉文本中的长距离依赖关系,确定每个位置与其他位置的关联程度,计算出加权后的输出。之后,将多头注意力的输出送入前馈神经网络进行进一步的特征提取和变换,最终输出经过处理后的向量表示,用于生成下一个单词的概率分布等任务。

2.改进与优化

  • 位置编码:为了让模型能够捕捉文本中的顺序信息,LLaMA采用了旋转位置编码(Rotary Position Embedding)。与传统的位置编码方法不同,旋转位置编码通过对向量进行旋转操作来注入位置信息,能够更好地处理长序列数据,在长文本建模方面表现更优,有助于模型更准确地理解文本的顺序和结构。

  • 多头注意力机制的优化:在多头注意力机制中,LLaMA对计算方式和参数设置等方面进行了优化。通过调整头的数量、注意力头的维度等超参数,以及改进注意力权重的计算方法,提高了模型对文本中复杂语义关系的捕捉能力,使得模型能够更精细地分析文本中的不同信息,增强了模型的表示能力。

  • 层归一化(Layer Normalization):在每一层的计算中,LLaMA使用了层归一化技术。对神经网络的每一层输入进行归一化处理,使得输入数据在经过每一层时都具有稳定的分布,有助于加速模型的训练收敛,减少梯度消失或爆炸等问题,提高模型的稳定性和泛化能力。

  • 优化的激活函数:在FFN层中,LLaMA可能采用了一些改进的激活函数,如Swish等。这些激活函数具有更好的非线性特性,能够增强模型的表达能力,使模型能够更灵活地拟合各种复杂的语言模式,提高模型对语言知识的学习效果。

  • 高效的训练策略:在训练过程中,LLaMA采用了多种优化策略来提高训练效率和模型性能。例如,使用了大规模的数据集和高效的并行计算技术,通过数据并行和模型并行等方式,在多个GPU或TPU上进行分布式训练,加快训练速度。同时,采用了优化的学习率调度算法,根据训练的进度和模型的性能动态调整学习率,使得模型能够更快地收敛到较优的参数空间。

3.LLaMA 2的技术改进

  • 分组查询注意力(Grouped Query Attention):在LLaMA 2中引入了Grouped Query Attention技术,它可以在不降低模型性能的前提下,减少注意力计算的复杂度和内存占用,提高模型的推理速度和效率。通过将查询向量分组,共享部分键值对,减少了计算量,同时保持了对长序列数据的建模能力。

  • 上下文长度扩展:LLaMA 2将上下文长度限制进行了扩展,相比LLaMA能够处理更长的输入文本序列。这使得模型在处理长篇文档、复杂对话等任务时,能够更好地利用上下文信息,提高对长序列文本的理解和生成能力,增强了模型在实际应用中的适应性和灵活性。

2、参数规模

  • LLaMA:包括70亿、130亿、330亿、650亿这四种参数规模。

  • LLaMA 2:包含了70亿、130亿和700亿参数的模型。

  • LLaMA 3:大规模版本参数量超过1400亿。

3、训练数据

  • LLaMA:训练数据来源广泛,包括67.0% Common Crawl、15.0% C4、4.5% GitHub、4.5% Wikipedia、4.5% Books、2.5% Arxiv、2.0% Stack Exchange。

  • LLaMA 2:训练所用的token翻了一倍至2万亿,训练数据比前一代多了40%,有超过100万的人类注释来微调输出质量。

LLaMA模型的训练数据有以下特点:

1.来源广泛

  • 涵盖多领域数据:包括CommonCrawl、C4、GitHub、Wikipedia、Gutenberg and Books3、ArXiv、Stack Exchange等。涵盖网页文本、百科知识、代码、学术论文、文学作品、问答数据等多种类型,使模型能学习到丰富多样的语言知识和语义信息。

  • 包含多种语言数据:虽然以英语数据为主,但也包含一定比例的高质量非英语数据,如C4数据集覆盖了多种语言,让模型具备一定的跨语言理解和处理能力。

2.数据规模庞大

  • 海量token数据:LLaMA最初版本训练数据达1.4T个tokens,LLaMA2训练数据扩充到2万亿token,LLaMA3的训练数据量更是达到15.0T+ tokens。

  • 支持模型学习复杂知识:大规模数据使模型能够学习到语言中的各种模式、语义关系和知识,提升模型的语言理解和生成能力,使其能处理复杂自然语言任务。

3.注重数据质量

  • 严格数据过滤:开发了一系列数据过滤流水线,包含启发式过滤器、NSFW过滤器、语义去重方法、预测数据质量的文本分类器等,去除低质量、重复和不相关的数据。

  • 保证数据多样性和准确性:通过数据过滤和筛选,保留高质量数据,使模型学习到准确、有价值的语言知识,避免受到错误或低质量数据的干扰。

4.数据分布均衡

  • 多领域数据合理配比:在选择训练数据时,对不同领域和类型的数据进行了合理配比,避免某一领域数据过多或过少,使模型能均衡学习不同领域的知识。

  • 提升模型泛化能力:数据分布均衡有助于模型在各种任务和领域上都有较好的表现,提高模型的泛化能力,使其不局限于特定领域或类型的文本。

4、产品性能

  • LLaMA:LLaMA 130亿参数模型在大多数基准测试中优于GPT-3(1750亿参数),650亿参数的LLaMA与Chinchilla-70B和PaLM-540B等最佳模型具有竞争力。

  • LLaMA 2:对于使用大模型最重要的上下文长度限制,LLaMA 2也翻了一倍,在性能和功能上有显著提升,具备更好的语言理解和生成能力、多语言处理能力等。

  • LLaMA 3:参数量的大幅提升使其在语言理解、生成以及多模态处理等方面的能力进一步增强,能够更好地处理复杂任务,提供更准确、更丰富的输出。

  • LLaMA 3.2:作为多模态模型,结合了语音交互功能,极大地拓展了应用场景和用户交互方式,使模型能够更好地理解和处理多种形式的信息输入。

5、应用场景

1.自然语言处理领域

  • 内容生成:可用于撰写新闻报道、文案创作、故事编写等。比如媒体机构可以利用LLaMA快速生成新闻稿件的初稿,文案工作者能借助它获取创意和灵感,生成广告文案、宣传语等。

  • 文本摘要:能自动提取长篇文档、文章的关键信息,生成简洁准确的摘要,帮助用户快速了解文本的核心内容,适用于学术文献、商业报告、新闻资讯等各类文本。

  • 机器翻译:基于其对多语言的理解和生成能力,实现不同语言之间的文本翻译,为跨国交流、国际业务等提供语言支持。

  • 问答系统:构建智能问答平台,回答用户的各种问题,如知识问答、生活常识、技术问题等,常见于在线客服、智能助手、知识图谱应用等场景。

  • 文本分类:对新闻、评论、论文等文本进行分类,如区分新闻的类别(政治、经济、文化等)、判断用户评论的情感倾向(正面、负面、中性)等。

2.代码开发领域

  • 代码生成:根据用户输入的需求描述或功能要求,生成相应的代码片段或完整的代码模块,辅助开发人员快速实现功能,提高开发效率,例如生成网站开发中的前端页面代码、后端逻辑代码等。

  • 代码解释与文档生成:对现有的代码进行解释说明,生成代码文档,帮助开发人员理解代码的功能和逻辑,特别是在大型项目中,有助于新成员快速上手和团队协作。

  • 代码纠错与优化:分析代码中的错误和潜在问题,并提供修正建议和优化方案,提升代码质量和性能。

3.教育领域

  • 智能辅导:根据学生的学习情况和问题,提供个性化的学习建议和辅导,解答学生的疑问,帮助学生更好地理解和掌握知识。

  • 教育内容创作:协助教师编写教学资料、教案、练习题等教育内容,丰富教学资源。

  • 语言学习:辅助语言学习者进行口语练习、语法纠错、翻译等,提高语言学习效果。

4.医疗领域

  • 病历分析:帮助医生快速分析患者的病历信息,提取关键症状、诊断结果等,辅助医生进行病情判断和诊断。

  • 医疗知识问答:为患者或医护人员提供医疗知识解答,如常见疾病的症状、治疗方法、药物信息等。

  • 医疗报告生成:根据医疗检查数据和诊断结果,生成规范的医疗报告,减轻医生的书写负担。

5.金融领域

  • 市场分析与预测:分析金融市场数据、新闻、公司财报等信息,进行市场趋势预测、风险评估等,为投资者和金融机构提供决策支持。

  • 金融文本处理:处理金融领域的合同、报告、公告等文本,提取关键信息,进行文本分类和合规性检查等。

  • 智能投资顾问:根据用户的财务状况、投资目标等,提供个性化的投资建议和资产配置方案。

6.创意艺术领域

  • 艺术创作:艺术家可以通过微调LLaMA模型,训练它根据特定的风格、主题生成视觉艺术作品的描述或创意,甚至可以与图像生成技术结合,创作出独特的艺术作品。

  • 音乐创作:音乐家可以利用LLaMA生成音乐的旋律、和声、歌词等元素,为音乐创作提供灵感和创意。

三、大模型微调

1、‌定义‌

大模型微调指在‌预训练大模型‌(如 GPT、LLaMA 等)的基础上,使用特定任务或领域的数据集进行进一步训练,调整模型参数以优化其在目标场景下的性能,而无需从头训练新模型。其核心目的是将通用模型转化为适应特定需求的专用工具,实现知识注入与任务对齐‌。

2、‌微调流程与技术原理‌

  • 预训练模型加载‌:
    基于已在大规模通用数据(如互联网文本)上完成无监督训练的模型,继承其通用语言理解能力‌34。‌
  • 任务数据适配‌:
    使用少量标注数据(如情感分析标签、代码生成示例)进行有监督训练,通过反向传播调整模型参数,使其适应目标任务‌34。‌
  • 性能优化与收敛‌:
    通过损失函数计算预测与标签的偏差,迭代优化模型权重,提升特定任务准确率‌34。

3、‌微调的核心优势‌

  • 效率提升‌:
    相比从头训练,微调显著减少训练时间和算力消耗,且能复用预训练模型的通用知识‌56。
  • ‌灵活性与适配性‌:
    支持垂直领域定制(如医疗问答、法律文书生成),通过调整数据即可快速适配新场景‌24。
    ‌- 性能增强‌:
    在特定任务中,微调后的模型性能通常优于直接使用预训练模型的零样本(Zero-shot)或小样本(Few-shot)方法‌16。

4、‌典型应用场景‌

‌- 自然语言处理‌:情感分析、文本摘要、机器翻译等任务的优化‌23;
‌- 代码生成‌:根据企业代码规范调整生成逻辑‌4;
‌- 多模态任务‌:结合图像描述数据微调视觉-语言联合模型‌

5、微调方法和示例

在这里插入图片描述

(1) 通用任务优化案例:Athene-V2-Chat-72B‌

  • 模型基础‌:基于 ‌Qwen-2.5-72B-Instruct‌ 预训练模型微调,目标为提升聊天、数学与编程任务性能‌。
  • ‌数据准备‌:
    • 使用高质量对话数据集,覆盖多轮对话、数学解题步骤与代码生成示例;
    • 数据格式为“输入-输出”对(如 {“prompt”: “用户问题”, “completion”: “模型回答”})‌。
  • ‌效果提升‌:
    微调后模型在 ‌Chatbot Arena‌ 排行榜排名从第19位上升至第10位,推理与代码生成准确率显著提高‌。

(2) 垂直领域适配案例:医疗问答系统‌

  • ‌场景需求‌:将通用大模型适配至医疗领域,提升术语理解与诊疗建议准确性。
  • ‌微调方法‌:
    • ‌数据选择‌:采用医学文献、患者问答记录与诊疗指南构建数据集‌;
    • ‌轻量化调整‌:通过 ‌LoRA(低秩适配)‌ 仅更新部分参数,保留预训练模型的通用知识‌。
  • ‌落地成果‌:
    模型对疾病诊断、药物相互作用等专业问题的回答准确率提升 35%,且符合医疗合规要求‌。

(3) 企业定制化案例:代码生成规范适配‌

  • 目标‌:使模型生成的代码符合企业内部编程规范(如命名规则、注释标准)。
  • ‌实现路径‌:
    ‌数据构造‌:收集企业历史代码库与规范文档,生成“需求描述-合规代码”配对数据‌;
    ‌冻结层微调‌:仅调整模型顶层参数,减少对通用代码生成能力的干扰‌。‌
  • 收益‌:
    生成代码的规范符合率从 60% 提升至 92%,减少人工审查成本‌

相关文章:

Transformer LLaMA

一、Transformer Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。 Transformer 架构摆脱了RNNs,完全依靠 Attention的优…...

球队训练信息管理系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装球队训练信息管理系统软件来发挥其高效地信息处理的作用&a…...

【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较

常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…...

UE_C++ —— Gameplay Classes

目录 一,Adding Classes 二,Class Headers Class Declaration Class Specifiers Metadata Specifiers 三,Class Implementation Class Constructor 引擎中每个游戏类都由一个类头文件(.h)和一个类源文件&#x…...

windows上vscode cmake工程搭建

安装vscode插件: 1.按装fastc(主要是安装MinGW\mingw64比较方便) 2.安装C,cmake,cmake tools插件 3.准备工作完成之后,按F1,选择cmake:Quick Start就可以创建一个cmake工程。 4.设置Cmake: G…...

软件测试:1、单元测试

1. 单元测试的基本概念 单元(Unit):软件系统的基本组成单位,可以是函数、模块、方法或类。 单元测试(Unit Testing):对软件单元进行的测试,验证代码的正确性、规范性、安全性和性能…...

如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?

如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗? DeepSeek R1 思考 35 秒 思考过程 好的,用户的问题是关于在Android客户端使用Kotlin处理后台返回的Long类型数据为n…...

Vue3 打造 Windows 桌面个性高效组件工具

软件介绍 Widgets 这款基于 Vue3 构建的开源 Windows 桌面小部件工具超实用。 其多样化组件库涵盖超 20 种,从倒计时、打工进度等实用工具,到抖音热榜等实时资讯组件应有尽有,各组件独立运行,满足多场景需求。 高度自定义布局支持…...

学习笔记-沁恒第四讲-米醋

一, 语音模块:数据包发送 刷卡模块:数据包接收 AS608:数据包发送接收 二,第三讲文件夹改成第四讲,工程也改成第四讲 三,目前在内存里面。保存新值,掉电会丢失 u8 password[6]{1,…...

epoll_event的概念和使用案例

epoll_event 是 Linux 下 epoll I/O 多路复用机制的核心数据结构,用于描述文件描述符(File Descriptor, FD)上发生的事件及其关联的用户数据。通过 epoll,可以高效地监控多个文件描述符的状态变化(如可读、可写、错误等…...

容器和虚拟机选择对比

1. 概述 如果主要需求是学习和测试 Ubuntu 下的命令行工具或服务型应用,推荐使用 Docker Docker 更轻量、更高效,适合快速搭建和销毁环境。 启用 WSL 2,Docker Desktop 是一个非常好的选择。 如果需要完整的桌面环境或进行复杂的系统级开…...

C++17中std::chrono::duration和std::chrono::time_point的舍入函数

文章目录 1. std::chrono::duration的舍入函数1.1 floor1.2 ceil1.3 round 2. std::chrono::time_point的舍入函数2.1 示例 3. 舍入函数的应用场景3.1 时间测量3.2 数据记录3.3 时间同步 4. 总结 在C17中, std::chrono库提供了一组强大的时间处理工具,包…...

基于SpringBoot的线上汽车租赁系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

基于Dancing Links的精确覆盖算法(解决NP难问题)和量子计算机模拟中的Shor算法(涉及数论与量子叠加态模拟)

一、Dancing Links算法实现数独求解(NP难问题) 算法方案 数独可转化为精确覆盖问题,使用Knuth提出的DLX算法实现高效求解。该算法通过双向十字循环链表实现快速回溯,时间复杂度可达O(n^k)(k为常数) #include <iostream> #include <vector> #include <c…...

体育品牌排行榜前十名:MLB·棒球1号位

MLB是一个融合了棒球文化与街头时尚元素的潮流运动品牌。以下是对该品牌的详细介绍&#xff1a; 一、品牌背景 • 全称&#xff1a;MLB全称是Major League Baseball&#xff0c;即美国职业棒球大联盟。不过&#xff0c;作为品牌的MLB并非由美国职业棒球大联盟直接运营&#x…...

Java网络编程封装

系列文章目录 Java知识点 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、封装的目标&#x1f449;二、套接字层封装&#x1f449;壁纸分享&#x1f449;总结 &#x1f449;前言 Java 网络编程封装原理主要围绕着将底层的网络通信细节隐藏起来&#xff0c;提供简洁…...

数字内容体验标杆案例解析

内容概要 在数字化转型浪潮中&#xff0c;数字内容体验正成为企业构建核心竞争力的关键抓手。本文通过拆解金融、零售、文旅等领域的标杆案例&#xff0c;系统分析沉浸式设计与智能交互系统的技术融合路径&#xff0c;揭示头部企业如何通过XR技术、实时数据可视化及场景化内容…...

区块链相关方法-PEST分析

一、定义:一种用于分析企业外部宏观环境的工具。PEST 这四个字母分别代表政治&#xff08;Political&#xff09;、经济&#xff08;Economic&#xff09;、社会&#xff08;Social&#xff09;和技术&#xff08;Technological&#xff09;。这种分析方法帮助企业或组织了解宏…...

Dify安装教程:Linux系统本地化安装部署Dify详细教程

1. 本地部署 Dify 应用开发平台 环境:Ubuntu(24.10) docker-ce docker compose 安装 克隆 Dify 源代码至本地环境: git clone https://github.com/langgenius/dify.git 启动 Dify: cd dify/docker cp .env.example...

git使用-克隆远程项目、分支管理

文章目录 克隆远程项目到本地1. 远程找到需要克隆的项目&#xff0c;复制ssh地址2. idea开启git版本控制&#xff08;如果已经开了&#xff0c;忽略此步骤&#xff09;3. clone远端项目4. 克隆完成 分支管理1. 新建分支2. 切换分支3. 合并分支4. 储存变化 克隆远程项目到本地 …...

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度

前言 最近在做项目时遇到一个需求&#xff0c;需要将升级的文件压缩成zip&#xff0c;再进行传输&#xff1b; 通过网络调研&#xff0c;有许多方式可以实现&#xff0c;例如QT私有模块的ZipReader、QZipWriter&#xff1b;或者第三方库zlib或者libzip或者quazip等&#xff1…...

SQLMesh 系列教程8- 详解 seed 模型

在数据分析和建模过程中&#xff0c;外部模型&#xff08;External Models&#xff09;在 SQLMesh 中扮演着重要角色。外部模型允许用户引用外部数据源或现有数据库表&#xff0c;从而实现灵活的数据整合和分析。本文将介绍外部模型的定义、生成方法&#xff08;包括使用 CLI 和…...

oracle apex post接口

日常记录 使用到了apex_json方式接收 、、、1 首先&#xff0c;接口通过body传递过来&#xff0c;成功接收到&#xff0c; 数据格式为 JSON_OBJECT_T l_json : JSON_OBJECT_T.parse(:body); 这里我用参数接收到 然后 里面是包含了 "data" 我用 继续接收到这个 l…...

复制所绑定元素文本的vue自定义指令

最近写了一个复制所绑定元素文本的vue自定义指令&#xff0c;给大家分享一下。 import { ElMessage } from element-plus// data-* 属性名 const dataCopyBtnTextAttribute data-copy-btn-text // 复制按钮的class&#xff0c;结合项目实际进行设置 const copyBtnClass icon…...

若依-@Excel新增注解numberFormat

Excel注解中原本的scale会四舍五入小数&#xff0c;导致进度丢失 想要的效果 显示的时候保留两个小数真正的数值是保留之前的数值 还原过程 若以中有一個專門的工具类&#xff0c;用来处理excel的 找到EXCEL导出方法exportExcel()找到writeSheet,写表格的方法找到填充数据的方法…...

内容中台重构智能服务:人工智能技术驱动精准决策

内容概要 现代企业数字化转型进程中&#xff0c;内容中台与人工智能技术的深度融合正在重构智能服务的基础架构。通过整合自然语言处理、知识图谱构建与深度学习算法三大技术模块&#xff0c;该架构实现了从数据采集到决策输出的全链路智能化。在数据层&#xff0c;系统可对接…...

网络安全:DeepSeek已经在自动的挖掘漏洞

大家好,我是AI拉呱,一个专注于人工智领域与网络安全方面的博主,现任资深算法研究员一职,兼职硕士研究生导师;热爱机器学习和深度学习算法应用,深耕大语言模型微调、量化、私域部署。曾获多次获得AI竞赛大奖,拥有多项发明专利和学术论文。对于AI算法有自己独特见解和经验…...

C#从入门到精通(34)—如何防止winform程序被同时打开多次

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在开发上位机软件的过程中&#xff0c;评判一个人软件写的好不好&#xff0c;有一…...

Linux系统使用Docker部署Geoserver并做数据挂载进行地图服务的发布和游览

文章目录 1、前提环境2、拉取geoserver镜像3、创建数据挂载目录4、 运行容器5、 测试使用&#xff08;发布shp数据为服务&#xff09;5.1、创建工作区5.2、添加数据存储5.3、发布图层5.4、服务游览 1、前提环境 部署环境&#xff1a;Linux&#xff0c;Centos7 &#xff0c;Doc…...

STM32-温湿度上传OneNET项目

一、项目需求 使用 ESP8266 连接 OneNET 云平台&#xff0c;并通过 MQTT 协议上传 DHT11 获取的温湿度值。 二、项目框图 三、DHT11工作原理 参考于良许嵌入式手把手教你玩转DHT11&#xff08;原理驱动&#xff09; | 良许嵌入式 3.1 正常工作验证 #​ 上电后&#xff…...

HTML 中的 Canvas 样式设置全解

在 HTML5 中&#xff0c;<canvas> 元素提供了一个强大的绘图接口&#xff0c;允许开发者通过 JavaScript 实现各种图形和动画效果。为了充分利用 <canvas> 的功能&#xff0c;理解其样式设置是至关重要的。本文将详细介绍如何在 HTML 中设置 <canvas> 的各种…...

【Java】File 类

目录 File 类File 类构造方法常见成员方法判断与获取创建与删除获取并遍历 File 类 File 对象表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许是不存在的 绝对路径和相对路径的区别&#xff1a; 绝对路径…...

SAP S4HANA Administration (Mark Mergaerts Bert Vanstechelman)

SAP S4HANA Administration (Mark Mergaerts Bert Vanstechelman)...

特征提取:如何从不同模态中获取有效信息?

在多模态学习中,特征提取是一个至关重要的过程。它是将原始数据(如文本、图像、视频和语音等)转化为机器能够理解和处理的特征的核心步骤。不同于传统的单一模态任务,在多模态学习中,如何有效地从每种模态中提取出有意义的信息并进行融合,直接影响到最终模型的性能和准确…...

2025年-G14-Lc88-278.第一个坏版本 -java版

1.题目描述 第一个坏版本 你是一名产品经理&#xff0c;目前领导一个团队开发新产品。不幸的是&#xff0c;你产品的最新版本未通过质量检查。由于每个版本都是基于前一个版本开发的&#xff0c;所以坏版本之后的所有版本也都是坏的。假设你有 n 个版本 [1, 2, …, n]&#xff…...

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…...

大语言模型架构:从基础到进阶,如何理解和演变

引言 你可能听说过像 ChatGPT 这样的 AI 模型&#xff0c;它们能够理解并生成自然语言文本。这些模型的背后有着复杂的架构和技术&#xff0c;但如果你了解这些架构&#xff0c;就能明白它们是如何工作的。今天&#xff0c;我们将用简单的语言&#xff0c;逐步介绍大语言模型的…...

科普mfc100.dll丢失怎么办?有没有简单的方法修复mfc100.dll文件

当电脑频繁弹窗提示“mfc100.dll丢失”或应用程序突然闪退时&#xff0c;这个看似普通的系统文件已成为影响用户体验的核心痛点。作为微软基础类库&#xff08;MFC&#xff09;的核心组件&#xff0c;mfc100.dll直接关联着Visual Studio 2010开发的大量软件运行命脉。从工业设计…...

什么是虚拟内存?它的作用是什么?

虚拟内存概念 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存&#xff08;一个连续完整的地址空间&#xff09;。但是实际上&#xff0c;它通常是被分隔成多个物理内存碎片&#xff0c;还有部分暂时存储在外部磁盘存储器上&#xff0c;在…...

SAP任命Simon Davies为亚太区总裁,领导重组后的亚太地区业务

2025年2月19日&#xff0c;SAP宣布任命Simon Davies为新任亚太区总裁&#xff0c;负责领导公司重组后的亚太地区业务。Davies将常驻新加坡&#xff0c;全面负责SAP在亚太地区的战略、运营、人员管理、销售、服务、合作伙伴关系及盈利能力。他的职责范围涵盖韩国、澳大利亚、新西…...

Markdown使用方法文字版解读

[TOC](这里写自定义目录标题) # Markdown编辑器 你好&#xff01; 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 ## 新的改变 我们对Markdown编辑器进行了…...

QT移植,交叉编译至泰山派RK3566开发板,.pro文件解析

备注 交叉编译到开发板,会有各种奇奇怪怪的问题, 直接命令行安装 QTCREATOR和 QtBase,就在板子上搞个桌面系统编译,最后把桌面关掉。 配置文件解析 配置文件丢这里,后面有空整理下。 说下大概的注意点, 安装路径(qtcreator远程部署的路径)、 动态库路径和…...

Liunx(CentOS-6-x86_64)系统安装MySql(5.6.50)

一&#xff1a;安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 二&#xff1a;下载MySql&#xff08;5.6.50&#xff09; MySql下载官网 二&#xff1a;安装MySql 2.1 将mysql上传到Liunx 文件地址 /usr/local/ 2…...

使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应

使用 deepseek实现 go语言&#xff0c;读取文本文件的功能&#xff0c;要求支持 ascii&#xff0c;utf-8 等多种格式自适应我要用 chatgpt&#xff0c;也问过&#xff0c;但是比 deepseek 还是差一个级别&#xff0c;具体如下&#xff1a; package mainimport ("bufio&qu…...

当电脑上有几个python版本Vscode选择特定版本python

查看当前vscode用的python版本命令 Import sys print(sys.version) 修改VSCODE解释器 打开 VSCode。 按下 CtrlShiftP打开命令面板。 输入 Python: Select Interpreter 并选择它。 从弹出的列表中选择你安装的 Python 解释器。如果你有多个 Python 版本&#xff08;例如…...

大一计算机的自学总结:一维差分与等差数列差分

前言 差分和前缀和一样&#xff0c;也是很重要的基础算法。 一、一维差分 1.内容 当给出一个数组&#xff0c;每次操作让数组某个区间上的值全增加&#xff0c;最后要求返回整个数组的结果。若是一次一次去遍历&#xff0c;时间复杂度肯定很难看。差分可以做到在时间复杂度…...

学习dify第一天:整体架构分析

使用marscode AI插件 从分析最火的dify开始学习使用ai提速首先安装插件功能快捷键使用这个工具如何学习项目首先学习dify那就先上官网看文档开始从docker构建脚本学起看下docker-compose.yamldify里边服务的组件现在看api和web模块api项目根目录有Makefile文件,用于构建api和w…...

C语言的内存分配:malloc和free

使用库函数分配和管理内存。在运行时&#xff0c;分配更多的内存给程序使用&#xff0c;主要工具是malloc函数&#xff0c;这个函数接受一个参数&#xff1a;所需要要的内存字节数。malloc函数会找到合适的空闲内存块&#xff0c;这样的内存是匿名的&#xff0c;即malloc分配了…...

为什么 JSON 不能序列化 set

为什么 JSON 不能序列化 set JSON&#xff08;JavaScript Object Notation&#xff09;作为一种广泛使用的数据交换格式&#xff0c;虽然功能强大&#xff0c;但它无法直接序列化 set 类型。本文将从设计原理、实现限制和实际应用角度&#xff0c;探讨这一现象的原因及解决方案…...

XUnity.AutoTranslator-Gemini——调用Google的Gemini API, 实现Unity游戏中日文文本的自动翻译

XunityAutoTranslator-Gemini-API 本项目是一个使用 Flask 框架和 Google Gemini GenAI 模型构建的 Web API 服务&#xff0c;用于将日文unity游戏文本翻译成简体中文。 日文游戏文本AI翻译API (基于Google Gemini) 本项目是一个使用 Flask 框架和 Google Gemini GenAI 模型…...