- 博客(44)
- 资源 (4)
- 收藏
- 关注
原创 MOE论文详解(4)-GLaM
2022年google在`GShard`之后发表另一篇跟MoE相关的paper, 论文名为`GLaM (Generalist Language Model)`, 最大的GLaM模型有1.2 trillion参数, 比GPT-3大7倍, 但成本只有GPT-3的1/3, 同时效果也超过GPT-3.
2024-10-18 06:00:00 1028
原创 MOE论文详解(3)-Switch Transformers
Switch Transformers也是google在2022年发表的一篇论文, 该论文简化了MoE的路由算法, 减少了计算量和通信量; 第一次支持bfloat16精度进行训练. 基于T5-Base和T5-Large设计的模型在相同的算力下训练速度提升了7x倍; 同时发布了1.6万亿(1.6 trillion)参数的MoE模型,相比T5-XXL模型训练速度提长了4x倍.
2024-10-17 06:00:00 1764
原创 MOE论文详解(2)-GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding
GShard是Google在2020年的一篇论文, 将MoE与 transformer结合, 支持了600B大小的参数量, 使用了2048块TPU v3训练了4天翻译任务(100种语言翻译为英文).
2024-10-16 06:00:00 987
原创 MOE论文详解(1)-OUTRAGEOUSLY LARGE NEURAL NETWORKS: THE SPARSELY-GATED MIXTURE-OF-EXPERTS LAYER
这是2017年Google Brain团队发表的一篇比较经典的论文, 可以做为MOE在大语言模型上应用的第一篇, MOE全称是混合专家(Mixture of Experts). 这里的每个Expert都是一个更小的神经网络, 比如最简单就是FC全连接网络, MOE整体不是一个完整的网络结构, 而是作为layer层嵌入到别的网络中.
2024-10-15 06:00:00 863
原创 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 2672 1
原创 Gemma模型论文详解(附源码)
Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型),Gemma这次发布了了2B和7B两个版本的参数,不仅提供了预训练的checkpoints,还提供了用于对话、指令跟随等fine-tune的checkpoints。
2024-02-23 22:53:21 3834 5
原创 Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2
Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2
2024-02-03 12:01:40 2212
原创 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 3300
原创 FP16数据格式详解
FP16数据格式详解浮点数的格式通常由三部分组成:符号位(Sign bit)、指数部分(Exponent)和尾数部分(Significand/Fraction)。整个浮点数占用的位数取决于不同的浮点数格式。
2023-12-23 21:50:27 3604
原创 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 4676
原创 Grouped Query Attention论文阅读
Google在2023年发表的一篇关于Transformer Attention的论文,整体论文写的清晰易读,思想简单但很好用。论文名字简写是GQA
2023-08-06 23:06:00 1579
原创 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 1789 2
原创 Megatron-LM源码系列(三):详解Pipeline模型并行训练实现
在【Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练】基础上增加了Pipeline模型并行训练的介绍,对于Pipeline模型并行思路可参考【详解MegatronLM流水线模型并行训练(Pipeline Parallel)】。pipeline并行中网络是按层的粒度进行纵向切分,在通信组通信上中在pipeline的不同stage中进行横向通信。
2023-07-28 20:42:03 2842
原创 Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练
模型并行训练实现的核心代码在`megatron/core/`目录下,按`README.md`介绍来说,`Megatron Core`是一个专门针对transformer类模型、效率高、可扩展的计算库。
2023-07-23 07:00:00 2656 2
原创 Transformer推理加速方法-KV缓存(KV Cache)
可以进行缓存后续复用;在Decoder中推理过程中,同样可以缓存计算出来的。在推理进程中与训练不同,推理进行时上下文输入Encoder后计算出来的。所以这里Decoder每次计算出来一组新的。向量都跟之前向量一起进行缓存,后续也可以重复复用。并进行缓存,后续推理都不用再计算了;,但计算Decoder过程中需要之前时刻。减少重复计算,这里注意在输入是。时刻通过输入的一个词计算出来。是固定不变的,对于这里的。计算时,输入仍需要前面。是Encoder,在。
2023-07-12 07:00:00 4000
原创 详解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 8555
原创 详解MegatronLM序列模型并行训练(Sequence Parallel)
MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。
2023-07-10 08:00:00 7485 8
原创 详解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 4736
原创 详解MegatronLM流水线模型并行训练(Pipeline Parallel)
MegatronLM的第二篇论文是2021年出的,GPT-3模型参数已经达到了175B参数,GPU显存占用越来越多,训练时间也越来越长, 在本文中,MegatronLM结合了tensor模型并行、pipeline模型并行和数据并行来提升整体的训练速度,以及解决大模型在多机上的扩展性问题。在pipeline模型并行上提出了方法,提升了10%的吞吐。
2023-07-08 10:30:00 4057 2
原创 配置Jekyll支持LaTeX(使用MathJax)
在_config.yml的# Build settings下加入配置markdown: kramdown在每篇博文头上加入 usemathjax: true在_includes/head.html中增加如下js脚本。对于新版本找不到_includes目录看第4点。<head><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML
2023-07-03 07:00:00 299 2
原创 Megatron-LM源码系列(一): 模型并行初始化
在本系列中,我们将探讨Megatron-LM的源代码。Megatron-LM是由Nvidia开发的一个大规模语言模型训练框架,它采用模型并行的方式实现分布式训练。在本篇文章中,我们将关注模型并行初始化的过程。
2023-07-01 10:36:06 3247 2
原创 LLM大模型训练加速利器FlashAttention详解
因为Transformer的自注意力机制(self-attention)的计算的时间复杂度和空间复杂度都与序列长度有关,所以在处理长序列的时候会变的更慢,同时内存会增长更多。通常的优化是针对计算复杂度(通过FLOPs数衡量), 优化会权衡模型质量和计算速度。在FlashAttention中考虑到attention算法也是IO敏感的,通过对GPU显存访问的改进来对attention算法的实现进行优化。
2023-06-29 10:14:57 5442 1
原创 详解大模型微调方法LoRA Adapter(内附实现代码)
以GPT-3 175B参数量为例,过大的参数量在Finetune的时候代价很大,Adapter适配器方法是进行大模型微调的方法之一。本文详细介绍了大模型微调方法LoRA和代码实现
2023-06-27 20:21:05 8375 4
原创 pytorch模型网络可视化画图工具合集(内附实现代码)
在PyTorch中,有几种不同的工具可以用于网络结构的可视化。下面将以ResNet-18为例,展示如何使用常用的PyTorch画图工具进行网络结构的可视化。
2023-06-26 10:10:51 5947 1
原创 详解大模型微调方法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 13295 2
原创 NVIDIA APEX安装完全指南及Megatron-LM/Pytorch运行问题解决(fused_layer_norm_cuda/packaging/amp_C/libc10.so)
NVIDIA APEX安装完全指南及Megatron-LM/Pytorch运行问题解决(No module named 'fused_layer_norm_cuda'/No module named 'amp_C'/ImportError: libc10.so)
2023-06-22 08:15:00 2823 9
原创 python程序中命令行解析布尔(bool)类型参数的最全实现
在python程序中,如何在命令行中传递布尔(bool)类型参数, 并在程序中解析使用?
2023-06-20 14:08:16 2592 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 253 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 433
原创 GPT2(Language Models are Unsupervised Multitask Learners)论文阅读
在GPT1的基础上,GPT2中在多种NLP任务表示、训练数据准备、输入表示、模型设计四个方面上进行了改进实现。
2023-06-16 09:15:00 469 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 496 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 576 1
原创 pytorch分布式训练使用Dataloader/WebDataset进行数据并行加载
pytorch分布式训练使用Dataloader/WebDataset进行数据并行加载1. 使用pytorch原生的DistributedSampler在pytorch DDP数据并行时会对数据集进行切分,每个rank节点只处理部分数据。使用DistributedSampler来会把dataset数据集采样为一个子数据集。定义如下:torch.utils.data.distributed.DistributedSampler(dataset, num_replicas=None, rank=None,
2023-06-12 20:16:08 3389
原创 Rotary Position Embeddings论文阅读
Transformer中模型不涉及RNN的循环和CNN的卷积,为了学习到sequence中的前后顺序关系,增加了, embedding的方法采用了sinine和cosine来进行。
2023-06-08 09:15:00 489 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 5160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人