大模型
文章平均质量分 91
MLTalks
这个作者很懒,什么都没留下…
展开
-
Megatron-LM源码系列(八): Context Parallel并行
megatron中的context并行(简称CP)与sequence并行(简称SP)不同点在于,SP只针对Layernorm和Dropout输出的activation在sequence维度上进行切分,CP则是对所有的input输入和所有的输出activation在sequence维度上进行切分,可以看成是增强版的SP。除了Attention模块以外,其他的模块(Layernorm、Dropout)由于没有多token的处理,在CP并行时都不用任何修改。原创 2024-05-28 09:00:00 · 1132 阅读 · 1 评论 -
Gemma模型论文详解(附源码)
Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型),Gemma这次发布了了2B和7B两个版本的参数,不仅提供了预训练的checkpoints,还提供了用于对话、指令跟随等fine-tune的checkpoints。原创 2024-02-23 22:53:21 · 3221 阅读 · 5 评论 -
Megatron-LM源码系列(六):Distributed-Optimizer分布式优化器实现Part1
Distributed-Optimizer分布式优化器的主要实现是通过连续的来进行的,中用于模型状态和优化器状态之间进行parameter参数和grad梯度的通信。中使用reduce-scatter和all-gather进行通信。在每个dp的rank上计算完grad后,组成待更新的grad buffer数组更新的时候通过reduce-scatter将grad buffer切分到各个rank上在每个rank上完成优化器的step操作。原创 2023-12-31 14:13:27 · 2381 阅读 · 0 评论 -
Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2
Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2原创 2024-02-03 12:01:40 · 1724 阅读 · 0 评论 -
FP16数据格式详解
FP16数据格式详解浮点数的格式通常由三部分组成:符号位(Sign bit)、指数部分(Exponent)和尾数部分(Significand/Fraction)。整个浮点数占用的位数取决于不同的浮点数格式。原创 2023-12-23 21:50:27 · 2508 阅读 · 0 评论 -
Megatron-LM源码系列(五): FP16使用
megatron使用FP16类型进行训练原创 2023-12-21 23:37:55 · 764 阅读 · 0 评论 -
Causal Attention论文详解
Causal Attention论文是一篇因果推断(causal inference)和注意力(attention)结合的一篇文章,主要用在视觉和文本结合的领域,如VQA(Visual Question Answering)视觉问答。VQA(Visual Question Answering)视觉问答的一个基本流程如下,对输入图进行self-attn编程得到K和V的向量,从文本得到Q的向量进行Attn计算,得到填空的结果(riding)。这个过程可以看成是一个因果推断的过程.原创 2023-10-17 09:11:24 · 2810 阅读 · 0 评论 -
Megatron-LM源码系列(四):重计算(recompute)
Megatron-LM源码系列(四):重计算(recompute)原创 2023-09-25 22:39:30 · 1920 阅读 · 4 评论 -
Grouped Query Attention论文阅读
Google在2023年发表的一篇关于Transformer Attention的论文,整体论文写的清晰易读,思想简单但很好用。论文名字简写是GQA原创 2023-08-06 23:06:00 · 1289 阅读 · 0 评论 -
LLaMA-2论文阅读
LLaMA-2是2023年7月24日Meta发布的LLaMA第二代,跟LLaMA-1几个显著区别:* 免费可商用版本的大模型* context上下文增加了一倍,从2K变为了4K* 训练的总token数从1.0T/1.4T增加为2.0T($2 \times 10^{12}$), 在1.4T基础上增加40%* 对于最大的模型参数量65B也增加到了70B原创 2023-07-29 22:58:38 · 1580 阅读 · 2 评论 -
Megatron-LM源码系列(三):详解Pipeline模型并行训练实现
在【Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练】基础上增加了Pipeline模型并行训练的介绍,对于Pipeline模型并行思路可参考【详解MegatronLM流水线模型并行训练(Pipeline Parallel)】。pipeline并行中网络是按层的粒度进行纵向切分,在通信组通信上中在pipeline的不同stage中进行横向通信。原创 2023-07-28 20:42:03 · 1921 阅读 · 0 评论 -
Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练
模型并行训练实现的核心代码在`megatron/core/`目录下,按`README.md`介绍来说,`Megatron Core`是一个专门针对transformer类模型、效率高、可扩展的计算库。原创 2023-07-23 07:00:00 · 1756 阅读 · 1 评论 -
详解PyTorch FSDP数据并行(Fully Sharded Data Parallel)
全切片数据并行(Fully Sharded Data Parallel,简称为FSDP)是数据并行的一种新的方式,FSDP最早是在2021年在中提出的,后来合入了PyTorch 1.11版本中。微软之前Deepspeed框架中提出过三种级别的ZERO算法,FSDP可以看成是ZERO-3的实现。传统的数据并行(DDP)是在每一个GPU卡上保存整个model的参数/梯度/优化器状态, 然后对数据集切分为NNN个shard分片给不同的GPU进行训练,计算完梯度后通过all-reduce通信来做梯度的融合。原创 2023-07-11 07:30:00 · 6132 阅读 · 0 评论 -
详解MegatronLM序列模型并行训练(Sequence Parallel)
MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。原创 2023-07-10 08:00:00 · 4425 阅读 · 7 评论 -
详解MegatronLM Tensor模型并行训练(Tensor Parallel)
`MegatronLM`的第一篇论文Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism是2020年出的,针对billion级别的模型进行训练,例如具有38亿参数的类GPT-2的transformer模型和具有39亿参数的BERT模型.。原创 2023-07-09 09:00:00 · 3196 阅读 · 0 评论 -
详解MegatronLM流水线模型并行训练(Pipeline Parallel)
MegatronLM的第二篇论文是2021年出的,GPT-3模型参数已经达到了175B参数,GPU显存占用越来越多,训练时间也越来越长, 在本文中,MegatronLM结合了tensor模型并行、pipeline模型并行和数据并行来提升整体的训练速度,以及解决大模型在多机上的扩展性问题。在pipeline模型并行上提出了方法,提升了10%的吞吐。原创 2023-07-08 10:30:00 · 2471 阅读 · 2 评论 -
Megatron-LM源码系列(一): 模型并行初始化
在本系列中,我们将探讨Megatron-LM的源代码。Megatron-LM是由Nvidia开发的一个大规模语言模型训练框架,它采用模型并行的方式实现分布式训练。在本篇文章中,我们将关注模型并行初始化的过程。原创 2023-07-01 10:36:06 · 2008 阅读 · 2 评论 -
LLM大模型训练加速利器FlashAttention详解
因为Transformer的自注意力机制(self-attention)的计算的时间复杂度和空间复杂度都与序列长度有关,所以在处理长序列的时候会变的更慢,同时内存会增长更多。通常的优化是针对计算复杂度(通过FLOPs数衡量), 优化会权衡模型质量和计算速度。在FlashAttention中考虑到attention算法也是IO敏感的,通过对GPU显存访问的改进来对attention算法的实现进行优化。原创 2023-06-29 10:14:57 · 4434 阅读 · 1 评论 -
详解大模型微调方法LoRA Adapter(内附实现代码)
以GPT-3 175B参数量为例,过大的参数量在Finetune的时候代价很大,Adapter适配器方法是进行大模型微调的方法之一。本文详细介绍了大模型微调方法LoRA和代码实现原创 2023-06-27 20:21:05 · 6447 阅读 · 3 评论 -
详解大模型微调方法Prompt Tuning(内附实现代码)
Prompt Tuning是现在大模型微调方法中的一种常用方法,本文通过解读5篇论文来了解Prompt Tuning方法演进的过程。分别是Prefix-Tuning、P-Tuning v1、Parameter-Efficient Prompt Tuning、P-Tuning v2。原创 2023-06-24 08:15:00 · 11769 阅读 · 2 评论 -
GPT-3(Language Models are Few-Shot Learners)论文阅读
GPT-2中虽然已经可以通过预训练和下游任务finetune实现不错的效果,但仍存在问题:下游任务finetune仍然需要成千上万的标注样本。为此提出了GPT-3,GPT-3也是一个自回归语言模型,但参数量更大,具有175B参数量,是GPT-2的117倍,大力出奇迹。原创 2023-06-19 08:15:00 · 208 阅读 · 1 评论 -
GPT1(Improving Language Understanding by Generative Pre-Training)论文阅读
在GPT(Generative pre-trained transformer)大火的今天回去重读了GPT在18年的开山之作【[Improving Language Understanding by Generative Pre-Training]】原创 2023-06-18 08:45:00 · 376 阅读 · 0 评论 -
Rotary Position Embeddings论文阅读
Transformer中模型不涉及RNN的循环和CNN的卷积,为了学习到sequence中的前后顺序关系,增加了, embedding的方法采用了sinine和cosine来进行。原创 2023-06-08 09:15:00 · 386 阅读 · 1 评论 -
GPT2(Language Models are Unsupervised Multitask Learners)论文阅读
在GPT1的基础上,GPT2中在多种NLP任务表示、训练数据准备、输入表示、模型设计四个方面上进行了改进实现。原创 2023-06-16 09:15:00 · 396 阅读 · 1 评论 -
CLIP(Contrastive Language–Image Pre-training)论文阅读
是OpenAI第一篇关于多模态的论文,在2021年1月跟DALL・E一起发布。其中DALL・E用于文本生成图像,CLIP用于图像分类。CLIP跟之前常用的有监督图像分类相比不同,学习中结合了文本的语义信息(),可以实现类似GPT-3的zero-shot的能力。大幅降低标注成本。之前标注都需要人手工标注大量高质量样本,现在通过搜索引擎自动构建4亿条图像-文本对用于训练。迁移泛化能力强。做为预训练模型,跟特定任务解耦(task-agnostic),可以实现类似zero-shot的效果。原创 2023-06-15 09:15:00 · 356 阅读 · 1 评论 -
ViT(Vision Transformer)论文阅读
ViT是2020年的一篇paper,目前(2023年2月)在google引用超11000次,CV图像领域中被广泛使用。在ViT出来之前,Transformer架构已经在NLP领域大显身手,在CV领域还是用的CNN,通过ViT这篇paper在CV中正式引入Transormer,且效果不错。ViT基本思路是把图像分为多个图像切片(每个小切片称为一个patch),类似NLP中的一个词,多个patch拼接起来做为输入类似NLP中的Sequence。一张大小为(H*W*C)的图切分为N个大小为P*P*C。原创 2023-06-14 09:15:00 · 504 阅读 · 1 评论 -
SwiGLU论文阅读
是2019年提出的新的激活函数,它结合了和两种者的特点。原创 2023-06-07 13:09:27 · 6099 阅读 · 1 评论 -
SentencePiece论文阅读
是用于NLP训练中对句子进行token化的工具,跟语言无关, SentencePiece中包含了和两种切分subword的算法。原创 2023-06-06 09:51:20 · 347 阅读 · 1 评论 -
RMSNorm论文阅读
RMS具有线性特征,所以提出可以用部分数据的RMSNorm来代替全部的计算,pRMSNorm表示使用前p%的数据计算RMS值。k=n*p表示用于RMS计算的元素个数。实测中,使用6.25%的数据量可以收敛BatchNorm:batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布。原创 2023-06-07 08:00:00 · 4475 阅读 · 0 评论 -
LLaMA论文阅读
训练了从7B到65B不同参数量的模型,从Hoffmann的论文【】中证明了在有限计算代价的情况下(给定总的FLOPs大小),表现最好的不是参数量最大的模型,而是在更多数据上训练的稍小的模型。原创 2023-06-06 09:42:27 · 442 阅读 · 0 评论