transformer面试经验
简述Transfomer的嵌入层(Embedding Layer) 嵌入层作为transformer的输入层,主要是将输入的 Token 转换为连续的向量表示,主要包括词嵌入和位置编码两个部分。 1.词嵌入(Word Embedding) 词嵌入是将输入序列中的每个token映射到一个高维嵌入向量。这些向量能够捕捉到词与词之间的语义关系。 词嵌入的过程是:(1)初始化一个嵌入矩阵,其行数等于词汇表大小V,列数为嵌入维度d;(2)通过词汇表得到输入文本中每个token对应的索引;(3)以索引为行数,直接从嵌入矩阵里取出对应的那一行向量,这行向量就成了该 token的嵌入向量。 2.位置编码(Positional Encoding) 由于 Transformer 是基于自注意力机制的,它没有内建的顺序信息。为了解决这个问题,Transformer 添加了位置编码(Positional...
操作系统面试题
进程、线程和协程的区别: 1. 定义 进程:操作系统资源分配的基本单位,是一个独立运行的程序实例。每个进程有独立的内存空间、全局变量和系统资源。 线程:是进程中的一个执行单元,是CPU调度的基本单位。多个线程共享同一个进程的内存和资源。 协程:是一种用户态的轻量级线程,由程序自身控制调度。协程可以在一个线程内实现多任务切换,而不依赖操作系统内核。 2. 资源分配 进程:每个进程拥有独立的地址空间,系统为其分配资源(如内存、文件句柄)。进程之间资源完全隔离。 线程:同一进程中的线程共享进程的地址空间和资源(如全局变量、文件描述符等)。 协程:协程是基于线程或进程的用户态执行单元,不直接由操作系统分配资源,仅共享其所在线程/进程的资源。 3. 调度方式 进程:进程的调度是由操作系统的内核完成的。操作系统根据一定的调度算法(如先来先服务、时间片轮转、优先级调度等)来分配 CPU 时间给不同的进程。 线程:线程的调度同样主要由操作系统内核来完成。在内核的线程调度器的管理下,根据线程的优先级、等待状态等因素来分配 CPU...
BERT面试经验
为什么BERT要采用Encoder-Only模式 1. 核心目标:捕获双向上下文信息,适应自然语言理解任务 BERT 的核心目标是 基于双向上下文的信息进行预训练,以捕获输入文本中更丰富的语义关系。 相较于传统单向语言模型(如基于 RNN 或 Transformer Decoder 的语言模型)只能从左到右或从右到左处理上下文,BERT 的 Encoder 模式通过自注意力机制能够实现双向上下文编码,捕获更丰富的语义关联。 2. 架构特点:Encoder 模式具有全局自注意力机制,能更好地建模词语的上下文关系 全局自注意力机制是 Transformer Encoder 的核心特性。它允许每个词与输入序列中的所有其他词进行关联,而不是像 RNN 那样只能逐步传递信息或像卷积网络那样局部化建模。 Encoder 的自注意力机制能够对句子中的长距离依赖进行精确建模。例如,在长句中,主语和谓语可能相隔较远,Encoder 的设计使得模型能够全局建模这种关系。 Decoder...
ChatGLM面试经验
ChatGLM是属于哪个类型 ChatGLM属于Prefix Decoder类型。LLM中的三大主流框架:Causal Decoder、Prefix Decoder及Encoder-Decoder。 Causal Decoder 结构特点 Causal Decoder,又称因果语言模型,其典型代表为GPT系列模型。该框架采用从左到右的单向注意力机制,确保每个输入token只能注意到过去的token和它本身。这种自回归(Auto Regressive)的方式使得模型能够根据历史信息逐步生成文本。 优点 训练效率高:Causal Decoder在所有token上计算损失,充分利用了训练数据,提高了训练效率。 Zero-shot能力强:由于遵循严格的单向注意力规则,模型在零样本学习(Zero-shot Learning)任务中表现出色。 涌现能力:随着模型规模的增大,Causal Decoder能够展现出一些令人惊讶的涌现能力(Emergent Abilities),如创作小说、编写代码等。 适用场景 Causal...
GPT面试经验
为什么GPT等LLM采用Only-Decoder模式 GPT(Generative Pre-trained Transformer)采用only-decoder(仅decoder)模式的主要原因与其设计目标和使用场景密切相关,以下是几个核心原因: 1. 专注于生成任务 任务特点:GPT的核心目标是生成连续的文本(例如回答问题、写作、总结等)。只需要基于输入的上下文生成输出,而不需要像encoder那样提取复杂的特征。 只用decoder:decoder具有自回归的特性(autoregressive),即它通过逐词预测下一步的输出,非常适合生成文本。 2. 自回归生成方式 decoder的工作方式:GPT的decoder通过掩码机制(masked self-attention)限制每个位置只能看到它之前的词,从而实现从左到右逐步生成文本。 不需要encoder的双向特性:encoder主要用于理解输入的全局信息(比如在BERT中使用双向注意力机制),而这对GPT不必要,因为它主要是逐步生成输出。 3....
AWQ归纳总结
介绍一下smoothquant 介绍一下AWQ量化 AWQ是一种对大模型仅权重量化方法。通过保护更“重要”的权重不进行量化,从而在不进行训练的情况下提高准确率。AWQ 发现,并非所有 LLM 权重都同等重要,仅保护 1% 的显著权重便能大幅减少量化误差。而要识别显著权重通道,应参考的是激活分布而非权重分布。尽管保留显著权重为 FP16 可以提升量化性能,且不会显著增加模型的总位数,但混合精度的数据类型会使推理系统实现复杂化。 为了避免硬件效率低下的混合精度量化,经过公式推导后,AWQ 采用等效变换来放大显著权重通道,权重W乘以缩放因子s,激活值X除以s,可以减少显著权重的量化误差。但是随着s的增大,非显著通道的相对误差将会增加,这可能会损害模型的整体精度。因此,在保护显著通道的同时还需要考虑非显著通道的误差,找到权重矩阵每一个通道的最佳缩放系数s,使得量化误差最小。 AWQ...
AWQ归纳总结
GPTQ简介 GPTQ 的思想最初来源于 Yann LeCun 在 1990 年提出的 OBD 算法,随后 OBS、OBC(OBQ) 等方法不断进行改进,而 GPTQ 是 OBQ 方法的加速版。在介绍 GPTQ 算法之前,需要先介绍 OBD -> OBS -> OBQ 的演进过程。 OBD: Optimal Brain Damage OBD 实际上是一种剪枝方法,用于降低模型复杂度,提高泛化能力。 如果要在模型中去除一些参数(即剪枝),直觉上,我们希望去除对目标函数 ( E ) 影响小的参数。于是我们可以对目标函数 ( E ) 做泰勒展开: ΔE=∑igiΔwi+12∑ihiiΔwi2+12∑i≠jhijΔwiΔwj+O(Δw3)\Delta E = \sum_i g_i \Delta w_i + \frac{1}{2} \sum_i h_{ii} \Delta w_i^2 + \frac{1}{2} \sum_{i \neq j} h_{ij} \Delta w_i \Delta w_j + O(\Delta...
大模型量化概述
量化简介 定义 模型量化是指以较低的推理精度损失将连续取值(通常为float32或者大量可能的离散值)的浮点型权重近似为有限多个离散值(通常为int8)的过程。 量化分类 根据应用量化压缩模型的阶段,可以将模型量化分为: 量化感知训练(Quantization Aware Training,QAT) 在模型训练过程中加入伪量化算子通过训练时统计输入输出的数据范围可以提升量化后模型的精度,适用于对模型精度要求较高的场景;其量化目标无缝地集成到模型的训练过程中。这种方法使LLM在训练过程中适应低精度表示,增强其处理由量化引起的精度损失的能力。这种适应旨在量化过程之后保持更高性能。 量化感知微调(Quantization-Aware Fine-tuning,QAF) 在微调过程中对LLM进行量化主要目标是确保经过微调的LLM在量化为较低位宽后仍保持性能,通过将量化感知整合到微调中,以在模型压缩和保持性能之间取得平衡。 训练后量化(Post Training...