算法岗面试经验分享-大模型篇
文章目录
- A 基础语言模型
- A.1 Transformer
- A.2 Bert
- B 大语言模型结构
- B.1 GPT
- B.2 LLama
- B.3 ChatGLM
- B.4 Qwen
- C 大语言模型微调
- C.1 Fine-tuning
- C.2 Adapter-tuning
- C.3 Prefix-tuning
- C.4 P-tuning
- C.5 LoRA
A 基础语言模型
A.1 Transformer
(1)资源
- 论文:Attention is all you need
- 一文读懂BERT(原理篇)_bert-as-service 原理-CSDN博客
- Transformer源码详解(Pytorch版本)
(2)Attention机制计算过程
- 线性变换:将输入序列的每一个词嵌入分别通过不同的全连接层转换为query、key和value向量;
- score计算: S c o r e ( Q , K ) = Q K T / d k Score(Q,K)=QK^T/\sqrt{d_k} Score(Q,K)=QKT/dk;
- softmax:对得分矩阵应用softmax,将每个位置的分数转化为概率分布,表示每个位置的重要性;
- 加权求和:将value向量乘以对应的softmax得分,对结果进行加权,得到Attention。
(3)要点
- attention机制代替RNN搭建整个框架、提出多头注意力机制
- encoder=多头自注意力+前馈,decoder=掩码多头注意力+多头注意力+前馈
- d k \sqrt{d_k} dk是为了减小点积的结果,避免将softmax推到具有极小梯度的区域
- encoder和decoder的输入向量编码要额外加入一层位置编码
- padding mask(对齐输入序列长度)和sequence mask(不学到未来信息)
A.2 Bert
(1)资源:
- 一文读懂BERT(原理篇)_bert-as-service 原理-CSDN博客
(2)待解决问题
- Bert-base的参数量计算:Bert/Transformer参数量计算
B 大语言模型结构
B.1 GPT
(1)资源
- GPT-1:Language Models are Unsupervised Multitask Learners
- GPT-2:Language Models are Few-Shot Learners
- GPT-3:Improving Language Understanding by Generative Pre-Training
- InstructGPT:Training language models to follow instructions with human feedback
- Few-Shot, Zero-Shot & One-shot 的通俗理解
- 从GPT-1到GPT-4,GPT系列模型详解
(2)要点
- GPT-1:无监督预训练+有监督微调,12层Transformer-decoder,激活函数GELU
- GPT-2:zero-shot
- GPT-3:In-context Learning(few-shot),1750亿参数
- InstructGPT:RLHF(reinforcement learning from human feedback)
(3)问题汇总
- GPT-1、GPT-2、GPT-3、InstructGPT的每一次改进之处是什么
- GPT-2主要解决的问题是如何利用大规模未标注的自然语言文本来预训练一个通用的语言模型,从而提高自然语言处理的能力。
- GPT-3主要解决的问题是如何使一个预训练的语言模型具有迁移学习的能力,即在只有少量标注数据的情况下,能够快速适应到新的任务中。
- InstructGPT主要解决的问题是如何让语言模型能够更好地遵循人类给出的指令,并在实践中实现它们。
- few-shot、one-shot和zero-shot
- few-shot为少样本学习,one-shot为一次样本学习(人脸识别),zero-shot为零样本学习(完全的无监督学习)
B.2 LLama
(1)资源
- 论文:LLaMA: Open and Efficient Foundation Language Models
- llama源代码逐行分析
(2)要点
- 在输入中使用RMSNorm(不计算均值),而不是Transformer中的Layer normalization(对输出使用)
- 在LayerNorm中,每个样本的特征向量会被中心化,即减去其均值,以使数据的均值为0,而在全连接层中,每个神经元都有一个可学习的偏置项,用于调整该神经元的输出。通过中心化操作,模型可能会学习到与特定预训练任务相关的数据分布信息。这种信息可能有助于模型在预训练任务上的表现,但也可能限制了模型在新任务上的适应性。
- 如果模型在预训练阶段学习到了过于特定的数据分布信息,那么当模型被迁移到新的、不同的任务时,这些信息可能会成为负担,导致模型的迁移学习能力下降。换句话说,模型可能过于适应预训练任务,而难以适应新任务。
- 使用SwiGLU来代替ReLU
- SwiGLU激活函数将GLU和Sish部分结合起来,通过门控机制洗择性地应用Swish变换,以产生最终的激活输出。它的设计目的是在提供非线性表达能力的同时,保持一定的线性性质,从而提高神经网络的表示能力和学习能力。
- 采用旋转位置编码RoPE
- 一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding)
- v2使用Group Query Attention,而不是MHA或者MQA。
- 为什么LLM都是decoder-only?
LLM之所以主要都用Decoder-only架构,除了训练效率和工程实现上的优势外,在理论上是因为Encoder的双向注意力会存在低秩问题(详见论文:Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth),这可能会削弱模型表达能力,就生成任务而言,引入双向注意力并无实质好处。而Encoder-Decoder架构之所以能够在某些场景下表现更好,大概只是因为它多了一倍参数。所以,在同等参数量、同等推理成本下,Decoder-only(满秩的下三角矩阵)架构就是最优选择了。
B.3 ChatGLM
(1)资源
- GLM: General Language Model Pretraining with Autoregressive Blank Infilling
- 第三代ChatGLM发布,ChatGLM3
(2)要点
综合了LLM的三大主流思想,自回归空格填充任务+二维位置编码,PartA(双向encoder)+PartB(单向decoder)
(3)思考
- 三大主流LLM思想
- AutoRegressive自回归模型(AR模型):decoder-only,代表作GPT。本质上是一个left-to-right的语言模型。通常用于生成式任务,在长文本生成方面取得了巨大的成功,比如自然语言生成(NLG)领域的任务:摘要、翻译或抽象问答。当扩展到十亿级别参数时,表现出了少样本学习能力。缺点是单向注意力机制,在NLU任务中,无法完全捕捉上下文的依赖关系。
- AutoEncoding自编码模型(AE模型):encoder-only,代表作BERT。是通过某个降噪目标(比如MLM)训练的双向文本编码器。编码器会产出适用于NLU任务的上下文表示,但无法直接用于文本生成。
- encoder-decoder(Seq2seq模型):代表作T5。采用双向注意力机制,通常用于条件生成任务,比如文本摘要、机器翻译等。
B.4 Qwen
(1)资料
千问Qwen2 beta/1.5模型代码逐行分析(一)
千问Qwen2 beta/1.5模型代码逐行分析(二)
千问Qwen2 beta/1.5模型代码逐行分析(三)
(2)结构
-
RMS归一化:相较于LayerNorm,去掉了均值和偏置b,减少计算量。
-
旋转位置编码:代码上看没有做linear scale和NTK(考虑下怎么做长度外推,Yarn代码)。
C 大语言模型微调
C.1 Fine-tuning
全参数微调,全部参数权重参与更新以适配领域数据。
C.2 Adapter-tuning
(1)论文
- Parameter-Efficient Transfer Learning for NLP
- AdapterFusion: Non-Destructive Task Composition for Transfer Learning
- AdapterDrop: On the Efficiency of Adapters in Transformers
嵌入 Transformer 的结构里面,在训练时,固定住原来预训练模型的参数不变,只对新增的 Adapter 结构进行微调。首先是一个 down-project 层将高维度特征映射到低维特征,然后过一个非线形层之后,再用一个 up-project 结构将低维特征映射回原来的高维特征。
C.3 Prefix-tuning
论文:Prefix-Tuning:Optimizing Continuous Prompts for Generation
在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,而PLM中的其他部分参数固定。
针对不同的模型结构,需要构造不同的Prefix。
- 针对自回归架构模型:在句子前面添加前缀,得到
z = [PREFIX; x; y]
,合适的上文能够在固定 LM 的情况下去引导生成下文(比如:GPT3的上下文学习)。 - 针对编码器-解码器架构模型:Encoder和Decoder都增加了前缀,得到
z = [PREFIX; x; PREFIX0; y]
。Encoder端增加前缀是为了引导输入部分的编码,Decoder 端增加前缀是为了引导后续token的生成。
该方法是在输入token之前构造一段任务相关的virtual tokens作为Prefix相当于对于transformer的每一层 (不只是输入层,且每一层transformer的输入不是从上一层输出,而是随机初始化的embedding作为输入),都在真实的句子表征前面插入若干个连续的可训练的"virtual token" embedding,这些伪token不必是词表中真实的词,而只是若干个可调的自由参数
C.4 P-tuning
(1)P-tuning v1
论文:GPT Understands, Too
P-Tuning成功地实现了模版的自动构建,且借助P-tuning,GPT在SuperGLUE上的成绩首次超过了同等级别的BERT模型,这颠覆了在那年之前“GPT不擅长NLU”的结论,也是该论文命名的缘由。
P-Tuning加了可微的virtual token,但是仅限于输入,没有在每层加,且virtual token的位置也不一定是前缀,插入的位置是可选的,这里的出发点实际是把传统人工设计模版中的真实token替换成可微的virtual token。
(2)P-tuning v2
论文:P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks
在输入前面的每层加入可微调的参数。
C.5 LoRA
(1)资源
- LoRA: Low-Rank Adaptation of Large Language Models
- QLoRA: Efficient Finetuning of Quantized LLMs
- LoRA及其变体概述:LoRA, DoRA, AdaLoRA, Delta-LoRA-CSDN博客
(2)LoRA的工作原理:
LoRA的核心思想是用一种低秩的方式来调整这些参数矩阵。在数学上,低秩意味着一个矩阵可以用两个较小的矩阵相乘来近似。

(3)Lora改进
- DoRA:多维权重矩阵存在大小和方向,对矩阵的大小和方向都进行分解,并进行独立训练。
- AdaLoRA:将LoRA矩阵的奇异值作为参数重要性的指标。
- LoRA+:为矩阵A和B分别引入不同的学习率。
相关文章:

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...