大模型相关

article/2025/7/1 18:55:17

与大模型相关的问题

    • 大预言模型(LLM )相关
      • 结构类型
      • 损失函数
      • 为什么大模型设计的参数量都是7B,13B,72B这种?
      • 大模型中的位置编码方式
      • 觉得当下的大模型相对于之前初代的bert等模型主要解决了什么样的问题?从原理上来讲,为什么现代大模型在生成式任务的能力要强于以前的MLM类的大模型?
      • 现在大模型为了达到规模扩增,主要做了哪些技术上的优化?旋转位置编码相比于绝对位置编码好在哪儿?为什么不用绝对位置编码?
      • 谈谈为什么MoE机制会成为主流?如何解决MoE训练过程中出现的路由偏爱(路由失效)现象?负载均衡是作用在模型上面的。
      • 大语言模型(LLM)分布式训练框架
    • 高效微调算法 (Parameter-Efficient Fine-tuning, PEFT)
      • 优势
      • 实现方式

大预言模型(LLM )相关

大预言模型的本质是进行续写,根据前文预测下一个token。

结构类型

在这里插入图片描述

  1. causal decoder: LLama、GPT等后续基本全是
    定义:Causal LM是一种自回归模型,它在生成文本时只能依赖于之前已经生成的文本,而不能利用未来信息。
    注意力机制:这种模型使用一种掩码(masking),确保在生成每个词时,只能考虑它之前(包括当前)的词,而不能“看”到未来的词。
    优点:可以生成灵活的文本,适应各种生成任务;
    缺点:无法访问未来的信息,可能生成不一致或有误的内容。
  2. prefix Decoder: Prefix LM,即前缀语言模型,是一种在给定一个文本前缀的情况下,模型能够基于这个前缀生成接下来的文本内容。
    特点:decoder only结构。输入部分没有进行mask,后续部分沿着对角线mask。
    优点:是可以减少对预训练模型参数的修改,降低过拟合风险
    Prefix LM 通过插入可学习前缀可隐式引导注意力聚焦到任务相关模式,而不是改变模型原有的注意力计算机制等核心部分,只是在输入部分添加前缀来引导模型的注意力,从而减少对模型主体的改动。
    Prefix Tuning 是 Prefix LM 的一种常见方法,它只训练一个小的连续 “前缀”。在训练时,预训练模型的大部分参数保持冻结,只对前缀向量进行优化。例如在一个输入序列前添加一个长度为 10、维度为 1024 的前缀向量,仅需优化这 10×1024 = 10240 个参数,相比对整个模型的参数进行微调,大大减少了需要修改的参数数量。
    缺点:可能受到前缀表示长度的限制,无法充分捕捉任务相关的信息
  3. Encoder-Docoder: Flan-T5、BART
    定义:Encoder-Decoder包括一个编码器(Encoder)和一个解码器(Decoder)。编码器使用双向注意力,每个输入元素都可以关注到序列中的其他所有元素。解码器使用单向注意力,确保生成的每个词只能依赖于之前生成的词。
    特点:Encoder-Decoder结构能够将输入数据编码成一个固定维度的向量,然后通过解码器将这个向量解码成目标输出。这种结构能够有效地处理变长序列的转换问题,并且具有较强的通用性和灵活性。
    优点:可以处理输入和输出序列不同长度的任务,如机器翻译
    缺点:模型结构较为复杂,训练和推理计算量较大。

损失函数

  1. 预训练pretrain
    假设原始数据是三个token序列 S1, S2, S3。
    则输入构建为: S1 S2 S3 (表示句子开始)
    然后位移这些序列作为标签(shift-labels): S1 S2 S3 (表示句子结束)
    这样训练模型时,仅需一次forward,模型会给出 时去预测 S1;在给出和 S1 时去预测 S2;在给出 、S1 和 S2 时去预测 S3,以此类推,loss是这几个预测损失的和。
    同一个batch中,我们需要确保所有的序列长度相等,以用于模型训练。这里 用于在训练批次中对齐序列到同样的长度,而token 不会用于损失计算
    S1 S2
  2. SFT(Supervised Fine-Tuning)
    在sft过程中,sft本身是由QA对组成的,而输入input是QA的拼接,标签labels中Q的部分的被token填充(mask掉),以便后续计算loss时,Q不纳入计算
    多轮/packed_sft
    在这里插入图片描述

为什么大模型设计的参数量都是7B,13B,72B这种?

i. 从推理的角度出发,为了适配常见的显卡。比如,采用半精度(一个数字占两个字节)的话。7B 的模型参数占14G, 可以放到16G 的 T4 上。13B 的模型参数占26G,可以放到 32G 的 V100 上
ii. 从历史传承的角度出发:最初OpenAI在gpt-3就是这么干的

大模型中的位置编码方式

绝对位置编码、相对位置编码、旋转位置编码
i. 绝对位置编码 (Absolute Positional Encoding):通过为序列中每个位置生成一个唯一的向量,将位置信息显式地加入到输入表示中。

  1. 优点:简单易实现、显式顺序信息
  2. 缺点:难以处理长序列、难以推广到变长序列
    在这里插入图片描述

ii. 相对位置编码:相对位置编码旨在捕捉序列中元素之间的相对顺序,而不是绝对位置。这种方法在处理序列间依赖关系时更加灵活。
3. 在自注意力机制中,这种编码可以通过调整注意力权重来实现。例如,模型可能会使用两个元素间的位置差值来影响它们的注意力得分。
4. 优点:处理长距离依赖更有效、对变长序列更灵活
5. 缺点:实现更复杂、计算量大

iii. 旋转位置编码:是一种改进的相对位置编码,利用旋转变换将位置信息直接嵌入到词向量中,能够更好地处理长序列的相对位置信息。
6. RoPE 将每个向量通过一个旋转矩阵来变换,将位置编码与词嵌入结合,使得向量之间的角度变化反映它们的相对位置。
7. 具体来说,通过对每个向量进行旋转,使得在不同位置的向量之间产生相位差。
8. 优点:更有效的相对位置编码、与 Transformer 兼容性高:
9. 缺点“复杂度增加

觉得当下的大模型相对于之前初代的bert等模型主要解决了什么样的问题?从原理上来讲,为什么现代大模型在生成式任务的能力要强于以前的MLM类的大模型?

i. Masked Language Model(掩蔽语言模型,MLM):在 BERT 等模型中广泛使用。其核心思想是将输入句子中的一些词随机“掩蔽”掉(通常用一个特殊的标记如 [MASK]),然后让模型基于上下文去预测这些被掩蔽的词。通过这种方式,模型能够学习到词与词之间的关系和上下文信息。例如,给定句子:“我喜欢吃[MASK]”,模型会根据上下文预测 [MASK] 处应该填入哪个词,比如“苹果”或“披萨”。
ii. BERT类模型(如BERT、RoBERTa等)是基于掩蔽语言建模(Masked Language Modeling, MLM)的,它们通常用于上下文理解、分类任务和句子对比等。BERT通过在输入句子中随机掩蔽一些词汇并训练模型去预测这些被掩蔽的词汇,擅长处理编码任务,但生成能力相对较弱。
iii. 现代的大模型(例如GPT系列)采用了基于自回归的语言建模方法,即通过逐词生成(一个词接着一个词生成),它们不仅能理解文本,还能生成连贯的文本,这使得它们可以应用到生成式任务,如文本生成、对话、文章写作等。
iv. 现代的大模型在生成式任务上的优势,主要源于:

  1. 采用自回归训练目标,能够逐步生成文本;
  2. 更强的多任务学习能力,能够处理多种任务(包括理解和生成)
  3. 更大的训练数据和更复杂的模型架构
  4. 在更强大的计算资源支持下,可以捕捉更加复杂的语言规律。

现在大模型为了达到规模扩增,主要做了哪些技术上的优化?旋转位置编码相比于绝对位置编码好在哪儿?为什么不用绝对位置编码?

i. 规模扩增(Scaling up) 是指在模型设计和训练过程中,通过增加模型的参数、数据量或计算资源,以提升模型的能力和性能。技术上的优化主要集中在 计算效率、模型容量的增加、多任务学习以及长序列建模等方面。以下是一些关键的技术优化和改进:

  1. 扩展计算资源与优化计算效率:模型并行与数据并行、混合精度训练
  2. 优化模型架构:稀疏化与剪枝、知识蒸馏(Knowledge Distillation)和Transformer架构的变种
  3. 在长序列建模中采用局部注意力、稀疏注意力和旋转位置编码
    ii. 旋转位置编码捕捉相对位置关系、扩展性更强、无固定长度限制,能够处理更长的序列
    iii. 绝对位置编码不能处理超长序列、无法充分表达相对位置

谈谈为什么MoE机制会成为主流?如何解决MoE训练过程中出现的路由偏爱(路由失效)现象?负载均衡是作用在模型上面的。

MoE机制的核心思想是将网络分为多个专家(experts),每个专家负责特定任务,而在每次输入时,路由机制(Routing)会根据输入决定激活哪些专家。这使得模型可以在不显著增加计算成本的情况下,通过选择性地激活一部分专家来处理输入。
i. MoE 机制优点

  1. MoE 可以大大提高计算效率。通常,在一个 MoE 网络中,只有一部分专家被激活,这减少了每次前向传播时需要执行的计算量,尤其是在大规模模型中,通过路由机制使得每次计算都相对高效。
  2. 模型的稀疏激活
  3. MoE 通过拥有多个专家来增加模型的多样性。每个专家可以专注于学习任务的某一方面,基于输入特征的不同,可以选择最合适的专家进行处理,从而能够处理更复杂的任务。
  4. MoE 使得模型能够在不显著增加计算开销的情况下,拥有更多的参数。
  5. MoE 允许为不同的输入选择不同的专家,使得它在多任务学习(multi-task learning)中具有天然的优势。它能够根据任务的需求激活特定的专家,而不需要为每个任务训练一个全新的模型。

ii. MoE 机制缺点
6. 复杂性增加:MoE模型的设计、训练和调优都更为复杂。
7. 训练难度与资源消耗:虽然推理时MoE显著提高了效率,但训练这些模型需要更多的计算资源,因为所有专家在训练时都需更新。
8. MoE 训练过程中出现的路由偏爱(路由失效)现象:在训练过程中,模型会倾向于选择某些专家,从而导致其他专家不被激活,甚至没有参与计算

iii. MoE 训练过程中出现的路由偏爱(路由失效)现象及其解决方案
路由(Routing)是决定每个输入会激活哪些专家的关键步骤。路由偏爱(routing bias)指的是在训练过程中,模型会倾向于选择某些专家,从而导致其他专家不被激活,甚至没有参与计算。这种现象被称为路由失效(Router failure)
9. 负载均衡机制(Load Balancing):负载均衡的目标是确保每个专家的负载大致相同,即使某些专家频繁被激活,也不至于完全忽略其他专家。一种常见的策略是通过硬性约束来限制每个专家的激活次数,或者采用软约束(例如正则化)来鼓励路由机制均匀地分配输入给各个专家。具体的负载均衡方法可能包括:
a) 平衡激活次数:限制每个专家被激活的次数,避免某些专家被过度使用,而其他专家几乎没有被激活。
b) 使用负载均衡损失函数:引入负载均衡的正则化项,使得模型在选择路由时尽量保证各个专家之间的计算负载平衡。
c) 动态路由:根据当前的负载情况动态调整路由策略,以防止某些专家一直被偏爱。
10. 路由函数的设计优化:优化路由函数,例如可以使用软路由(soft routing)来避免硬性选择某一个专家,而是允许多个专家同时参与计算,以降低过度偏向某些专家的情况。
11. 专家选择多样化:在每次路由时,多样化专家选择的方式,可以通过加入随机性或使用温度参数等方法,增加模型在专家选择上的多样性,减少路由失效的概率。

大语言模型(LLM)分布式训练框架

i. 概述:将机器学习或深度学习模型训练任务分解成多个子任务,并在多个计算设备上并行地进行训练
ii. 分布式训练并行策略:分布式训练系统目标就是将单节点模型训练转换成等价的分布式并行模型训练。对于大语言模型来说,训练过程就是根据数据和损失函数,利用优化算法对神经网络模型参数进行更新的过程。

  1. 数据并行:在数据并行系统中,每个计算设备都有整个神经网络模型的完整副本(Model Replica),进行迭代时,每个计算设备只分配了一个批次数据样本的子集,并根据该批次样本子集的数据进行网络模型的前向计算。前向计算完成后,每个计算设备都会根据本地样本计算损失误差得到梯度Gi(i 为加速卡编号),并将本地梯度Gi 进行广播。所有计算设备需要聚合其他加速度卡给出的梯度值,然后使用平均梯度(ΣNi=1Gi)/N 对模型进行更新,完成该批次训练。
    在这里插入图片描述
  2. 模型并行
    a) 流水线并行(Pipeline Parallelism,PP):将模型的各个层分段处理,并将每个段分布在不同的计算设备上,使得前后阶段能够流水式、分批进行工作。
    在这里插入图片描述
    在这里插入图片描述
    b) 张量并行(Tensor Parallelism,TP):需要根据模型的具体结构和算子类型,解决如何将参数切分到不同设备,以及如何保证切分后数学一致性两个问题。
    在这里插入图片描述
  3. 混合并行:是将多种并行策略如数据并行、流水线并行和张量并行等进行混合使用。通过结合不同的并行策略,混合并行可以充分发挥各种并行策略的优点,以最大程度地提高计算性能和效率。

高效微调算法 (Parameter-Efficient Fine-tuning, PEFT)

优势

i. 参数效率 (Parameter Efficiency): PEFT 算法仅微调少量 (甚至极少量) 模型参数
ii. 存储效率 (Storage Efficiency): 只需要存储少量的微调参数,原始预训练模型参数保持冻结
iii. 避免灾难性遗忘:由于 PEFT 算法冻结了大部分预训练模型参数, 模型能够更好地保留预训练阶段学习到的通用知识, 从而有效缓解灾难性遗忘问题。
iv. 即插即用: PEFT 算法通常以模块化的方式集成到预训练模型中, 例如, Adapter 模块可以方便地插入到 Transformer 模型的每一层。 微调后的 PEFT 模块可以即插即用, 方便模型部署和迁移。

实现方式

i. Prefix Tuning:通过在模型输入层之前添加可训练的前缀嵌入(prefix embeddings)来影响模型的输出。这些前缀嵌入与原始输入拼接后一起输入到模型中,而模型的其他部分保持不变。
在这里插入图片描述
ii. LoRA:通过在原始模型权重矩阵附近添加一个低秩矩阵来近似模型参数的更新。这种方法通过优化这个低秩矩阵来实现微调,而不需要修改原始模型参数。
iii. Adapter Tuning:通过在模型的每个层之间插入小型神经网络(称为adapters)来实现微调。这些adapters包含可训练的权重,而模型的原始参数保持不变。
在这里插入图片描述
• Feedforward down-project:将原始输入维度d(高维特征)投影到m(低维特征),通过控制m的大小来限制Adapter模块的参数量,通常情况下,m<<d;
• Nonlinearity:非线性层;
• Feedforward up-project:还原输入维度d,作为Adapter模块的输出。通时通过一个skip connection来将Adapter的输入重新加到最终的输出中去(残差连接)


http://www.hkcw.cn/article/NMqeYuAHyo.shtml

相关文章

数字规则:进制转换与原码、反码、补码

目录 引 一.不同进制的转换​ 1.二进制与十进制的转换​ (1).二进制转十进制​ (2).十进制转二进制​ 2.二进制与十六进制的转换​ (1).二进制转十六进制​ (2).十六进制转二进制​ 3.二进制与八进制的转换​ (1).二进制转八进制​ (2).八进制转二进制​ 4.十进制、…

数论——约数和倍数

数论——约数和倍数 约数和倍数试除法求单个数的约数求每个数的约数集合唯一分解定理分解质因数分解阶乘的质因数 约数个数定理和约数和定理约数个数定理约数和定理 约数有关OJ枚举求一个数的约数之和求1到n的所有数的约数个数之和 最大公约数gcd和最小公倍数lcm求gcd的方法短除…

线程池详细解析(二)

本章我们将继续讲述线程池的源码解析给&#xff0c;上一章我们了解了一下Worker内部类这个用作包装线程池的工作线程的内部类。本章我们看看他的核心方法 Worker(Runnable var2) {this.setState(-1);this.firstTask var2;this.thread ThreadPoolExecutor.this.getThreadFacto…

docker运行程序Killed异常排查

问题描述 我最近开发了一个C 多线程程序&#xff0c;测试没有问题&#xff0c;封装docker测试也没有问题&#xff0c;然后提交给客户了&#xff0c;然后在他那边测试有问题&#xff0c;不定时、不定位置异常中断&#xff0c;以前一直认为只要封装了docker就万事大吉&#xff0…

Linux--进程概念

1.基本概念与基本操作 • 课本概念&#xff1a;程序的⼀个执⾏实例&#xff0c;正在执⾏的程序等 • 内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体。 2 描述进程-PCB 基本概念 • 进程信息被放在⼀个叫做进程控制块的数据…

铁电液晶破局 VR/AR:10000PPI 重构元宇宙显示体验

一、VR/AR 沉浸感困境&#xff1a;传统显示技术的天花板在哪&#xff1f; &#xff08;一&#xff09;纱窗效应与眩晕感&#xff1a;近眼显示的双重枷锁 当用户戴上 VR 头显&#xff0c;眼前像素网格形成的 “纱窗效应” 瞬间打破沉浸感。传统液晶 500-600PPI 的像素密度&…

edge进行重置设置之后,网页无法访问(显示连接不是专用连接)

问题&#xff1a; edge进行重置设置之后&#xff0c;网页无法访问&#xff08;显示连接不是专用连接&#xff09;&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 调整键盘为英文输入状态&#xff0c;刷新一下页面&#xff0c;鼠标点击页面任意位置&#xff08;不要点击到…

sql注入补充——get注入

Sql注入 Mysql中的information_schema库 用于存储数据库元信息&#xff0c;包含了数据库、表、列、索引等结构化信息。 特点&#xff1a; 只读性 标准化&#xff1a;它是sql标准的一部分&#xff0c;适用于多种数据库系统 动态生成&#xff1a;数据是动态生成的&#xff…

eBay关键词搜索API开发指南

一、接口概述 eBay的Finding API提供findItemsByKeywords方法&#xff0c;支持通过关键词检索商品列表。该接口采用REST架构&#xff0c;返回标准JSON/XML格式数据&#xff0c;日均调用限额5000次&#xff08;生产环境需申请提升配额&#xff09;。 二、核心参数说明 必需参…

<6>, 界面优化

目录 一&#xff0c;QSS 1&#xff0c;背景介绍 2&#xff0c;基本语法 3&#xff0c;设置方式 &#xff08;1&#xff09;指定控件样式设置 &#xff08;2&#xff09;全局样式设置 &#xff08;3&#xff09;从文件加载样式表 &#xff08;4&#xff09;使用 Qt Desig…

截图工具 Snipaste V2.10.7(2025.06.2更新)

—————【下 载 地 址】——————— 【​本章下载一】&#xff1a;https://pan.xunlei.com/s/VORklK9hcuoI6n_qgx25jSq2A1?pwde7bi# 【​本章下载二】&#xff1a;https://pan.quark.cn/s/7c62f8f86735 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/…

Docker安装Redis集群(3主3从+动态扩容、缩容)保姆级教程含踩坑及安装中遇到的问题解决

前言 部署集群前&#xff0c;我们需要先掌握Redis分布式存储的核心算法。了解这些算法能帮助我们在实际工作中做出合理选择&#xff0c;同时清晰认识各方案的优缺点。 一、分布式存储算法 我们通过一道大厂面试题来进行阐述。 如下&#xff1a;1-2亿条数据需要缓存&#xff…

Altium Disigner(16.1)学习-元器件封装

一、元器件封装 封装就是给画的原理图所有的器件的外形描述出来&#xff08;几个引脚啦、引脚之间的长度啦、宽度啦&#xff09;&#xff0c;一定要精确。否则等到真正元器件焊在板子上的时候&#xff0c;会发现根本焊不上去&#xff0c;可能就是焊盘的位置不够精确。 可以点击…

初识CSS3

1. 什么是CSS <style>标签 行内样式 内部样式表 外部样式表⭐ CSS样式优先级⭐ 2. CSS3基本选择器 标签选择器 类选择器 ID选择器 基本选择器的特点⭐ 基本选择器的优先级⭐ 3. CSS3高级选择器-层次选择器 后代选择器 子选择器 相邻兄弟选择器 通用兄弟选择器 4. CSS3高级…

Python训练营---Day43

DAY 43 复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 数据集来源水母图像数据集 --- Jellyfish Image Dataset&#xff0c;对水母图片进行分类&#xff0c;共6个类别。 数据集文件…

NLP学习路线图(十八):Word2Vec (CBOW Skip-gram)

自然语言处理&#xff08;NLP&#xff09;的核心挑战在于让机器“理解”人类语言。传统方法依赖独热编码&#xff08;One-hot Encoding&#xff09; 表示单词&#xff0c;但它存在严重缺陷&#xff1a;每个单词被视为孤立的符号&#xff0c;无法捕捉词义关联&#xff08;如“国…

win32相关(事件)

事件 什么是事件&#xff1f; 事件是指系统或应用程序中发生的特定动作或状态变化&#xff0c;这些动作或变化可以被程序检测并响应。Windows 采用事件驱动的编程模型&#xff0c;应用程序主要通过处理各种事件来与用户交互 我们来看一下事件的函数 HANDLE CreateEventW(LPSE…

VisionPro项目记录3 —— 圆心距

简介&#xff1a;本项目实现基于Cognex视觉系统的两圆心对位功能&#xff0c;使用一个圆作为基准&#xff0c;另一个圆进行补偿&#xff0c;输出偏移值给PLC或机械手。 系统采用CogFindCircleTool定位两圆心坐标&#xff0c;通过脚本计算圆心距并乘以缩放系数kValue&#xff0…

面向连接的运输:TCP

目录 TCP连接 TCP报文段结构 往返时间估计与超时 可靠数据传输 回退N步or超时重传 超时间隔加倍 快速重传 流量控制 TCP连接管理 三次握手 1. 客户端 → 服务器&#xff1a;SYN 包 2. 服务器 → 客户端&#xff1a;SYNACK 包 3. 客户端 → 服务器&#xff1a;AC…

使用Python进行函数作画

前言 因为之前通过deepseek绘制一下卡通的人物根本就不像&#xff0c;又想起来之前又大佬通过函数绘制了一些图像&#xff0c;想着能不能用Python来实现&#xff0c;结果发现可以&#xff0c;不过一些细节还是需要自己调整&#xff0c;deepseek整体的框架是没有问题&#xff0…