u013250861
这个作者很懒,什么都没留下…
展开
-
大语言模型:LLM-2B、LLM-3B、LLM-7B模型结构【开源模型】
这些对比可帮助你根据目标硬件与任务(推理速度、上下文长短、推理质量)选型或自定义剪枝。如需进一步探讨某一模型的微调技巧或推理显存占用,欢迎继续交流!*Query 组数 = num_key_value_heads。<头数 代表 GQA;=头数 为普通 MHA。†Falcon-7B 未在 config 显式给出 FFN 宽度;论文与官方脚本默认按 4×hidden 近似 18 176。原创 2025-05-16 12:10:15 · 29 阅读 · 0 评论 -
Visualize Llama Inference Using Single and MultiGPUs
Inference using multiple GPUs involves splitting weight matrices by rows and columns, followed by operations like all-reduce or gather. This technique is commonly referred to as Tensor Parallelism (TP).Below are two visualizations of the LLaMA 3.1 8B model原创 2025-02-19 22:25:49 · 50 阅读 · 0 评论 -
深入浅出理解ViT(Vision Transformer)模型【预训练好的ViT模型是个有力的特征提取器,我们可以用它输出的特征,去做更多有趣的下游任务】【基于Transformer的Encoder】
ViT 全称VisionTransformer,不同于传统的基于CNN的网络结果,是基于transformer结构的cv网络。总结起来,ViT的训练其实就在做一件事情:把图片打成Patch,送入Transformer Encoder,然后拿对应位置的向量,过一个简单的softmax多分类模型,去预测原始图片中描绘的物体类别即可。你可能会想:“这个分类任务只用一个简单的softmax,真得能分准吗?原创 2024-12-09 16:46:50 · 157 阅读 · 0 评论 -
Llama 模型结构分析
Llama 模型结构分析原创 2024-11-29 18:45:10 · 99 阅读 · 0 评论 -
Transformer加速算法【KV-cache、GQA(Grouped-query attention)、投机采样、RWKV、Inifni-Transformer、FlashAttention】
在LLM的推理过程中,KVCache已经属于必备的技术了。然而,网上现有的解读文章并不够清晰。看了一些文章之后,我决定还是自己写一篇新的,以飨读者。原创 2024-05-17 22:18:53 · 520 阅读 · 0 评论 -
KAN网络技术最全解析——最热KAN能否干掉MLP和Transformer?(收录于GPT-4/ChatGPT技术与产业分析)
网络结构思路来自Kolmogorov-Arnold表示定理。MLP 在节点(“神经元”)上具有固定的激活函数,而 KAN 在边(“权重”)上具有可学习的激活函数。在数据拟合和 PDE 求解中,较小的 KAN 可以比较大的 MLP 获得更好的准确性。相对MLP,KAN也具备更好的可解释性,适合作为数学和物理研究中的辅助模型,帮助发现和寻找更基础的数值规律。MLP与KAN对比,KAN 有4个主要特点:1)激活函数位于“边”而不是节点(Node)上;2)激活函数是可学习的而不是固定的;原创 2024-05-06 20:37:06 · 777 阅读 · 0 评论 -
揭开 Mamba 模型的神秘面纱, Transformer的强力挑战者
Transformer架构自2017年提出以来,在人工智能领域特别是自然语言处理中占据了主导地位。它的核心是自注意力机制,允许模型在处理数据时动态地关注序列中的不同部分,从而捕捉复杂的依赖关系。然而,Transformer的一个显著局限是,其计算复杂度与序列长度的平方成正比,导致在处理长序列时效率低下。最近,一种名为Mamba的新架构引起了广泛关注,被视为Transformer的潜在竞争对手。原创 2024-04-01 00:09:32 · 330 阅读 · 0 评论 -
【LLM】浅谈 StreamingLLM中的attention sink和sink token
Softmax 通常用于多类别分类问题中的输出层。在这个公式中,给定一个输入向量 ( x = [ x 1 , x 2 , … , x N ] x = [x_1, x_2, \ldots, x_N]x=[x1,x2,…,xN] ),Softmax 函数将其转化为一个概率分布 ($ p = [p_1, p_2, \ldots, p_N]$ )。原创 2024-03-28 00:05:23 · 181 阅读 · 0 评论 -
Attention结构:①Bahdanau Attention;②Luong Attention
一、Bahdanau Attention二、Luong Attention原创 2022-05-03 20:07:48 · 462 阅读 · 1 评论 -
2020:ViT(Vision Transformer)【将Transformer应用在图像分类的模型】【当拥有足够多的数据进行预训练的时候,ViT的表现就会超过ResNets,反之不如】
ViT作者团队出品,在CNN和Transformer大火的背景下,舍弃了卷积和注意力机制,提出了MLP-Mixer,一个完全基于MLPs的结构,其MLPs有两种类型,分别是和,前者独立作用于image patches(融合通道信息),后者跨image patches作用(融合空间信息)。实验结果表明该结构和SOTA方法同样出色,证明了convolution和attention不是必要操作,如果将其替换为简单的MLP,模型依然可以完美work。原创 2023-02-19 18:00:46 · 2591 阅读 · 0 评论 -
RWKV:一种鱼和熊掌兼得的线性transformer模型
本文介绍了一种鱼和熊掌兼得的模型。既能和AFT一样兼具通用性和高效,distance位置编码的设计使得模型也具备面对超长文本的能力。实际实验效果可以去看原文的内容,本文只对其结构进行介绍。但总体而言,笔者测试过基于GPT的ai写小说和基于RWKV的ai写小说。相比较而言,RWKV的写出来的文章会更流畅,并且在训练时收敛速度页更快。参考文献。原创 2023-06-14 19:48:06 · 1290 阅读 · 0 评论 -
自然语言处理(NLP):使用 BERT 预训练模型对 Encoder 端的Transformer 参数进行初始化
人工智能-深度学习-自然语言处理(NLP)-Pytorch:构建Transformer模型【根据torch.nn提供的Transformer各模块搭建自己的Transformer模型】原创 2021-03-02 23:15:01 · 903 阅读 · 1 评论 -
NLP-2015:Attention机制用于CV领域【Attention机制:Hard Attention、Soft Attention】
《原始论文:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》参考资料:论文笔记 - Show, Attend and Tell: Neural Image Caption Generation with Visual Attention原创 2021-02-06 23:52:04 · 504 阅读 · 1 评论 -
NLP-生成模型-2017-Transformer(一):Encoder-Decoder模型【非序列化;并行计算】【O(n²·d),n为序列长度,d为维度】【用正余弦函数进行“绝对位置函数式编码”】
Transformer 概述2018年10月,Google发出一篇论文[《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》](https://arxiv.org/pdf/1810.04805.pdf), BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩!而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET,roBERT等模型击败了BER原创 2020-12-18 23:07:54 · 2245 阅读 · 1 评论 -
NLP-生成模型-2017-Transformer(二):Transformer各模块代码分析
一、WordEmbedding层模块(文本嵌入层)Embedding Layer(文本嵌入层)的作用:无论是源文本嵌入还是目标文本嵌入,都是为了将文本中词汇的数字表示转变为向量表示, 由一维转为多维,希望在高维空间捕捉词汇间的关系.文本中的单词在输入到文本嵌入层之前,已经通过word2index操作转换为数值【每个单词用该单词在所在词汇表中的序号表示】,将字符串形式的单词转为序号形式,然后输入到文本嵌入层。再通过文本嵌入层将每个单词的一维的数值型序号转为多维向量。import torch #原创 2022-05-03 19:55:16 · 2160 阅读 · 1 评论 -
NLP-生成模型-2017-Transfomer(三):基本测试【copy任务】【方式:①自定义构建Transformer模型、②使用Transformer官方组件构建】
一、Transfomer模型基本测试【copy任务】# copy任务:任务描述: 针对数字序列进行学习, 学习的最终目标是使输出与输入的序列相同. 如输入[1, 5, 8, 9, 3], 输出也是[1, 5, 8, 9, 3].# 任务意义: copy任务在模型基础测试中具有重要意义,因为copy操作对于模型来讲是一条明显规律, 因此模型能否在短时间内,小数据集中学会它,可以帮助我们断定模型所有过程是否正常,是否已具备基本学习能力.# 1 第一步: 数据集生成器# 1.1 构建数据集生成器def原创 2022-05-03 19:57:39 · 985 阅读 · 2 评论 -
NLP-生成模型-2017-Transformer(四):单个输入-输出样本的并行化计算【编码:训练预测都基于注意力机制来并行化】【解码:训练时基于掩码注意力机制、teach-forcing来并行化】
我们先看一个典型的基于RNN的Encoder-Decoder结构输入是:“机器学习“,输出是“machine learning”。模型的大概工作时序是:Encoder部分,输入序列逐个送进RNN,计算出最后时刻的隐藏状态c,作为上下文信息传给Decoder。Decoder部分,将c和t-1时刻的输出作为t时刻的输入,逐步计算预测得到t时刻的输出。这个结构中,Encoder和Decoder部分都是无法并行化的,这是由RNN结构本身决定的(t时刻计算依赖t-1时刻的输出)。值得注意的一点是,这里我们讨论的并原创 2022-02-26 22:45:00 · 806 阅读 · 1 评论 -
NLP-生成模型-2017-PGNet:Seq2Seq+Attention+Coverage+Copy【Coverage解决解码端重复解码问题;Copy机制解决解码端OOV问题】【抽取式+生成式】
Pointer Network(指针网络)属于生成式模型。- 仅用传统的 Seq2Seq 模型可以实现生成式摘要,但存在两个问题: 1. 可能不准确地再现细节, 无法处理词汇不足(OOV)单词/they are liable to reproduce factual details inaccurately; 2. 倾向于重复自己/they tend to repeat themselves。- 传统的 Seq2Seq 模型中 Decoder 输出的目标数量是固定的,例如翻译时 Decoder 预测原创 2020-12-24 23:44:02 · 3680 阅读 · 4 评论 -
NLP-生成模型-2016:CopyNet【Copy机制赋予seq2seq模型从源文本中复制词汇的能力,解决Decoder的OOV问题】
本文开篇,作者就提出他们的目标是解决seq2seq模型的复制问题,并且提供了一个例子:在这个例子中,我们要对用户提出的问题做出回答,显然,蓝色部分根本不需要理解语义,直接复制即可。针对这种情形,作者希望能赋予seq2seq复制的能力。解决方案其实和前一篇ACL17的文章有些类似。那么为什么先介绍17年的文章,后介绍16年的呢?这是因为ACL17的文章相对较为通俗易懂,我们在读过它后再来理解ACL16的文章会更容易。模型包含两个部分:Generation-Mode用来根据词汇表生成词汇,然后Copy-原创 2021-08-26 17:15:05 · 1049 阅读 · 1 评论 -
NLP-生成模型-2016:Seq2Seq+Attention+Coverage 【覆盖机制:解决编码端信息(词)的过使用/欠使用问题(Attention机制不能清楚地知道哪些信息被用过或没被用过)】
自然语言处理(NLP)原创 2021-02-28 22:19:23 · 1345 阅读 · 1 评论 -
NLP-生成模型-2015:Seq2Seq+Copy【 Pointer网络的Copy机制是对传统Attention机制的简化:输出针对输出词汇表的一个概率分布 --> 输出针对输入文本序列的概率分布】
NLP-自动摘要-2015:Pointer Networks原创 2021-08-25 21:08:06 · 673 阅读 · 1 评论 -
NLP-生成模型-2014:Seq2Seq+Attention(首次:利用QKV从大量信息中抽取对任务重要的信息;抽取文档中重要的句子;抽取句子中重要的单词)【案例:AttentionNMT用于翻译】
《原始论文:Neural Machine Translation by Jointly Learning to Align and Translate》:第一篇将Attention用于Seq2Seq模型的文献。Attention机制:从Encoder的输入序列的很多信息中根据当前时间步Decoder的状态选出“解码任务所需要的信息”。在普通的RNN结构中,Encoder需要把一个句子转化为一个向量,然后在Decoder中使用,这就要求Encoder把源句子中所有的信息都包含进去,但是当句子长度过长的时候,这原创 2021-04-08 12:39:20 · 1063 阅读 · 1 评论 -
NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】
我们之前遇到的较为熟悉的序列问题,主要是利用一系列输入序列构建模型,预测某一种情况下的对应取值或者标签,在数学上的表述也就是通过一系列形如 Xi=(x1,x2,...,xn)\textbf{X}_i=(x_1,x_2,...,x_n)Xi=(x1,x2,...,xn) 的向量序列来预测 YYY 值,这类的问题的共同特点是,输入可以是一个定长或者不定长的序列,但输出一般要求是一个固定长度的序列(单个标签较为常见,即长度为1的序列)。例如利用RNN网络的文本情感分类,输入的文本长度不固定,但输出是某一原创 2020-12-22 23:29:24 · 2082 阅读 · 1 评论 -
NLP-生成模型-2017:Transformer中的那些为什么
1、简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点?前馈神经网络采用了两个线性变换,激活函数为Relu,公式如下:FFN(x)=max(0,xW1+b1)W2+b2 FFN(x) = max(0, xW_1 + b_1) W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2优点:SGD算法的收敛速度比 sigmoid 和 tanh 快;(梯度不会饱和,解决了梯度消失问题)计算复杂度低,不需要进行指数运算;适合用于后向传播。缺点:原创 2022-02-13 22:30:03 · 566 阅读 · 1 评论 -
NLP-预训练模型-2019-NLG:MASS【Bert+GPT的泛化Seq2Seq模型】【文本片段中被掩码的部分替换为相同数量的[MASK]】
预训练模型(Pretrained model):一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型.在NLP领域,预训练模型往往是语言模型,因为语言模型的训练是无监督的,可以获得大规模语料,同时语言模型又是许多典型NLP任务的基础,如机器翻译,文本生成,阅读理解等,常见的预训练模型有BERT, GPT, roBERTa, transformer-XL等.2018年开始,预训练(pre-train) 毫无疑问成为NLP领域最热的研究方向。借助于原创 2021-08-03 22:48:09 · 1090 阅读 · 1 评论 -
NLP-预训练模型-2019-NLU+NLG:T5【Transfer Text-to-Text Transformer】【将所有NLP任务都转化成Text-to-Text任务】【 翻译、文本摘要..】
《原始论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》2019年10月,Google 在《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》这篇论文中提出了一个最新的预训练模型 T5(Text-To-Text Transfer Transformer),其参数量达到了 11原创 2021-12-30 22:45:00 · 18599 阅读 · 1 评论 -
NLP-预训练模型-2019-NLU+NLG:BART【Bert+GPT的泛化Seq2Seq模型】【噪声破坏后的原文本喂给编码器,解码器输出原文本】【噪音方案:文本填充(文本片段用单个掩码替换)】
《原始论文:BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》一、摘要BART是 Bidirectional and Auto-Regressive Transformers的简写。BART的训练主要由2个步骤组成:(1)使用任意噪声函数破坏文本;(2)模型学习重建原始文本。BART 使用基于 Transformer原创 2021-09-17 21:58:33 · 12918 阅读 · 1 评论 -
NLP-生成模型-2018:Vanilla Transformer【将长文本序列划截断为多个固定长度的段;段与段之间没有上下文依赖性;无法建模字符之间超过固定长度的依赖,关系导致上下文碎片化】
一、Vanilla Transformer的结构首先,作者要解决的问题是字级别的LM,相比词级别的LM,字级别LM明显需要依赖的距离特别长,比如说一句话某个位置是应该使用she还是he,是依赖于前面的主语情况,这个主语可能距离此单词位置的有十几个单词,每个单词7-8字母长度,那么这就将近100+个字符长度了,作者使用transformer的结构主要原因是他认为该结构很容易做到在任意距离上的信息传递,而相对RNN(LSTM)这种结构,就需要按照时间一步一步的传递信息,不能做到跨越距离。这篇文章虽然用到了.原创 2021-08-02 23:13:11 · 4745 阅读 · 1 评论 -
NLP-生成模型-2019:TransformerXL【对Vanilla Transformer的改进:片段级递归机制、相对位置编码】【超出固定长度上下文的注意力语言模型】
自然语言处理(NLP)-生成模型:TransformerXL【超出固定长度上下文的注意力语言模型】2019原创 2021-08-02 22:01:11 · 1122 阅读 · 1 评论 -
Transformers 加载预训练模型
Transformers 加载预训练模型。原创 2022-02-17 22:45:00 · 1118 阅读 · 0 评论 -
从零实现Transformer的简易版与强大版:从300多行到3000多行
关注比较多的是两个:一个LLaMA,一个ChatGLM,会发现有不少模型是基于这两个模型去做微调的,说到微调,那具体怎么微调呢,因此又详细了解了一下微调代码,发现微调LLM时一般都会用到Hugging face实现的Transformers库的Trainer类。开始,因此便开启了本文:从零实现Transformer的简易版与强大版:从300多行到3000多行,主要分为两个大部分。总之,一如既往的保持对初学者的足够友好,让即便没有太多背景知识的也能顺畅理解本文。最近一直在做类ChatGPT项目的部署。原创 2023-08-09 22:42:49 · 224 阅读 · 0 评论 -
Transformer Engine安装
1.确认您已经安装了 OpenCV 库。可以通过在命令行中输入。来检查您是否已经安装了该库。如果您还没有安装它,可以使用。原创 2024-01-07 21:37:48 · 2939 阅读 · 0 评论 -
TransformerEngine代码走读
在几个月前nv就发表过关于fp8数制训练和推理的白皮书,大概三四个月前公开了他们针对transformer模型的fp8训练的软件库TransformerEngine,由于最近在关注fp8训练,因此想了解一下他们的实现方案,但是由于没有H100的卡,目前还不能跑通te的代码,很多细节没办法验证,只能通过源码的阅读来观察它插入了什么功能实现fp8量化训练,特此记录一下。从这些层面来说,te的代码阅读难度还好,大部分工作是基于pytorch的一些数据结构,涉及底层的代码也不算多。原创 2024-01-07 21:19:15 · 1783 阅读 · 0 评论 -
牛叉!MIT 提出LongLoRA,微调LLaMA2,Token从4K扩展至100K
在一台 8× A100 机器上,微调后的LLaMA2-7B模型上下文长度可以达到100k,微调后的LLaMA2-70B模型上下文长度可以高达 32k。,无论是否采用 LoRA,随着上下文大小的扩展,计算成本都会急剧增加,这主要是由于标准的自注意力机制,如下图所示,即使使用 LoRA,当上下文窗口扩大时,标准 LLaMA2 模型的训练时间也会大幅增加。在半注意力头中,将token移动组大小的一半,这确保了相邻组之间的信息流。,它能够在资源受限的情况下,极大的扩展预训练大模型(LLMs)的上下文长度,原创 2024-01-06 23:15:08 · 820 阅读 · 0 评论 -
Megatron-LM:简单读读TransformerEngine(transformer_engine)
得益于PyTorch灵活的外部扩展形式,只要不去触碰框架底层运行机制,仅仅在算子层面上的修改还是相当简单。这其实就是PyTorch的一个拓展,为了利用FP8的特性,针对Transformer里面的Kernel进行了重写,包含了一系列LayerNorm, GeLU, ScaledSoftmax等。具体到每一个算子实现动态范围调整的原理其实很简单,通过记录历史的abs max值,来去调整最终缩放的范围。在FP16下,其数据范围还是足够大的,因此在AMP下,原创 2024-01-06 01:37:36 · 1994 阅读 · 1 评论 -
语言大模型100K上下文窗口的秘诀
上下文窗口(context window)是指语言模型在进行预测或生成文本时,所考虑的前一个词元(token)或文本片段的大小范围。在语言模型中,上下文窗口对于理解和生成与特定上下文相关的文本至关重要。较大的上下文窗口可以提供更丰富的语义信息、消除歧义、处理上下文依赖性,并帮助模型生成连贯、准确的文本,还能更好地捕捉语言的上下文相关性,使得模型能够根据前文来做出更准确的预测或生成。最新发布的语言大模型的上下文窗口越来越大。原创 2024-01-05 21:54:16 · 1151 阅读 · 0 评论 -
Transformer 基础系03:手推计算量FLOPS和训练时间
一句话省流太长不看版:浮点计算次数 FLOPS 和参数量、Token 数目关系约为 FLOPS \approx 6 \Phi N_{token} ,开了activation checkpoint 计算一般为 FLOPS = 8 \Phi N_{token} ,训练时间 时间 = \frac{总训练计算量}{总算力} = \frac{K \times tokens \times \Phi}{N_{GPU} \times F_{A100} \times discount}。原创 2023-11-28 00:16:33 · 1400 阅读 · 0 评论 -
Transformer 基础系04:手把手推导Ring All-reduce的数学性质
在第 1 步中,每个设备都负责某一块 \frac{V}{p} 的数据并向左边的设备发送这块数据,譬如在图 3 中,第 1 个设备负责第 2 片数据并向第 0 个设备发送(也就是第 4 个设备),第 2 个设备负责第 3 片数据并向第 1 个设备发送,第 3 个设备负责第 4 片数据并向第 2 个设备发送,第 4 个设备负责第 1 片数据并向第 3 个设备发送,每个设备收到右边设备的数据后,就把收到的数据累加到本地对应位置的数据上去(通过逐渐变深的颜色表示数据累加的次数更多)。原创 2023-11-28 00:15:09 · 1110 阅读 · 0 评论 -
Transformer 基础系列02:手推显存占用
本文试图以最清晰的方式手动推导 Transformers 每一步的参数量到显存、计算量问题。理解底层,才能更好的做训练和优化。可能是目前最全的大模型显存优化方案分析。本文内容包括(1)模型训练和推理过程中的显存占用(2)KV cache、中间激活值等显存占用(3)模型状态显存优化方案: Megatron(3D) + Deepspeed(ZeRO)(更新于2023-09-11)(4)激活值显存优化方案:重计算 + 3D 并行(更新于2023-08-11)原创 2023-11-27 23:01:20 · 1422 阅读 · 0 评论 -
Transformer 基础系01:模型参数量
如图所示,Transformers 结构的参数量包括 Embed 层,l 层 Attention + MLP 层,每层还有 layernorm 和 position embedding 参数,推理如下表。参考LLaMA模型打印参数名和 shape 以校验。原创 2023-11-27 22:56:51 · 856 阅读 · 0 评论