自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享机器学习、深度学习、分布式计算、MLSys相关领域知识

分享机器学习、深度学习、分布式计算、MLSys相关领域知识

  • 博客(39)
  • 资源 (4)
  • 收藏
  • 关注

原创 Gemma模型论文详解(附源码)

Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型),Gemma这次发布了了2B和7B两个版本的参数,不仅提供了预训练的checkpoints,还提供了用于对话、指令跟随等fine-tune的checkpoints。

2024-02-23 22:53:21 2503 5

原创 Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2

Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2

2024-02-03 12:01:40 1423

原创 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 1767

原创 FP16数据格式详解

FP16数据格式详解浮点数的格式通常由三部分组成:符号位(Sign bit)、指数部分(Exponent)和尾数部分(Significand/Fraction)。整个浮点数占用的位数取决于不同的浮点数格式。

2023-12-23 21:50:27 1477

原创 Megatron-LM源码系列(五): FP16使用

megatron使用FP16类型进行训练

2023-12-21 23:37:55 551

原创 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 1627

原创 Megatron-LM源码系列(四):重计算(recompute)

Megatron-LM源码系列(四):重计算(recompute)

2023-09-25 22:39:30 1129 4

原创 Pytorch LayerNorm源码详解

Pytorch LayerNorm源码详解

2023-08-15 23:05:14 2969

原创 Grouped Query Attention论文阅读

Google在2023年发表的一篇关于Transformer Attention的论文,整体论文写的清晰易读,思想简单但很好用。论文名字简写是GQA

2023-08-06 23:06:00 991

原创 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 1424 2

原创 Megatron-LM源码系列(三):详解Pipeline模型并行训练实现

在【Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练】基础上增加了Pipeline模型并行训练的介绍,对于Pipeline模型并行思路可参考【详解MegatronLM流水线模型并行训练(Pipeline Parallel)】。pipeline并行中网络是按层的粒度进行纵向切分,在通信组通信上中在pipeline的不同stage中进行横向通信。

2023-07-28 20:42:03 1213

原创 Megatron-LM源码系列(二):Tensor模型并行和Sequence模型并行训练

模型并行训练实现的核心代码在`megatron/core/`目录下,按`README.md`介绍来说,`Megatron Core`是一个专门针对transformer类模型、效率高、可扩展的计算库。

2023-07-23 07:00:00 1120

原创 Transformer推理加速方法-KV缓存(KV Cache)

可以进行缓存后续复用;在Decoder中推理过程中,同样可以缓存计算出来的。在推理进程中与训练不同,推理进行时上下文输入Encoder后计算出来的。所以这里Decoder每次计算出来一组新的。向量都跟之前向量一起进行缓存,后续也可以重复复用。并进行缓存,后续推理都不用再计算了;,但计算Decoder过程中需要之前时刻。减少重复计算,这里注意在输入是。时刻通过输入的一个词计算出来。是固定不变的,对于这里的。计算时,输入仍需要前面。是Encoder,在。

2023-07-12 07:00:00 2800

原创 详解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 4157

原创 详解MegatronLM序列模型并行训练(Sequence Parallel)

MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。

2023-07-10 08:00:00 2689 4

原创 详解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 2223

原创 详解MegatronLM流水线模型并行训练(Pipeline Parallel)

MegatronLM的第二篇论文是2021年出的,GPT-3模型参数已经达到了175B参数,GPU显存占用越来越多,训练时间也越来越长, 在本文中,MegatronLM结合了tensor模型并行、pipeline模型并行和数据并行来提升整体的训练速度,以及解决大模型在多机上的扩展性问题。在pipeline模型并行上提出了方法,提升了10%的吞吐。

2023-07-08 10:30:00 1429

原创 配置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 183 2

原创 Megatron-LM源码系列(一): 模型并行初始化

在本系列中,我们将探讨Megatron-LM的源代码。Megatron-LM是由Nvidia开发的一个大规模语言模型训练框架,它采用模型并行的方式实现分布式训练。在本篇文章中,我们将关注模型并行初始化的过程。

2023-07-01 10:36:06 1166 2

原创 LLM大模型训练加速利器FlashAttention详解

因为Transformer的自注意力机制(self-attention)的计算的时间复杂度和空间复杂度都与序列长度有关,所以在处理长序列的时候会变的更慢,同时内存会增长更多。通常的优化是针对计算复杂度(通过FLOPs数衡量), 优化会权衡模型质量和计算速度。在FlashAttention中考虑到attention算法也是IO敏感的,通过对GPU显存访问的改进来对attention算法的实现进行优化。

2023-06-29 10:14:57 3746 1

原创 详解大模型微调方法LoRA Adapter(内附实现代码)

以GPT-3 175B参数量为例,过大的参数量在Finetune的时候代价很大,Adapter适配器方法是进行大模型微调的方法之一。本文详细介绍了大模型微调方法LoRA和代码实现

2023-06-27 20:21:05 3998 3

原创 pytorch模型网络可视化画图工具合集(内附实现代码)

在PyTorch中,有几种不同的工具可以用于网络结构的可视化。下面将以ResNet-18为例,展示如何使用常用的PyTorch画图工具进行网络结构的可视化。

2023-06-26 10:10:51 3021 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 9382

原创 python中符号‘*‘和‘**‘的最全用法

python中符号'*'和'**'的最全用法

2023-06-23 08:15:00 2910 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 2016 9

原创 python程序中命令行解析布尔(bool)类型参数的最全实现

在python程序中,如何在命令行中传递布尔(bool)类型参数, 并在程序中解析使用?

2023-06-20 14:08:16 1494 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 171 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 328

原创 GPT2(Language Models are Unsupervised Multitask Learners)论文阅读

在GPT1的基础上,GPT2中在多种NLP任务表示、训练数据准备、输入表示、模型设计四个方面上进行了改进实现。

2023-06-16 09:15:00 358 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 298 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 425 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 1987

原创 Rotary Position Embeddings论文阅读

Transformer中模型不涉及RNN的循环和CNN的卷积,为了学习到sequence中的前后顺序关系,增加了, embedding的方法采用了sinine和cosine来进行。

2023-06-08 09:15:00 308 1

原创 SwiGLU论文阅读

是2019年提出的新的激活函数,它结合了和两种者的特点。

2023-06-07 13:09:27 5208 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 3772

原创 SentencePiece论文阅读

是用于NLP训练中对句子进行token化的工具,跟语言无关, SentencePiece中包含了和两种切分subword的算法。

2023-06-06 09:51:20 286 1

原创 LLaMA论文阅读

训练了从7B到65B不同参数量的模型,从Hoffmann的论文【】中证明了在有限计算代价的情况下(给定总的FLOPs大小),表现最好的不是参数量最大的模型,而是在更多数据上训练的稍小的模型。

2023-06-06 09:42:27 385

原创 对于协程(coroutine),你必须知道事情都在这里了(内附代码)

什么是协程*协程(coroutine)*的概念根据Donald Knuth的说法早在1958年就由Melvin Conway提出了,对应wikipedia的定义如下:Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowi...

2020-03-29 14:48:07 539

原创 第一次接触深度学习/机器学习?这些基本概念你必须要掌握!

第一次接触深度学习/机器学习?这些基本概念你必须要掌握!写在前面本文作为入门讲解,适合于首次接触机器学习/深度学习的新人以及从事相关人工智能行业的初级从业人员,对深度学习和机器学习已经有相当了解的朋友请绕行。:)本文简单,仅需要掌握初中数学即可,请放心阅读。基本概念一箩筐什么是样本? 什么是训练?什么是预测?什么是算法?什么是特征?什么是标签?什么是模型文件?什么是模型参数?一下...

2020-03-29 14:47:54 464

企业AIGC-商业落地应用研究报告

企业AIGC-商业落地应用研究报告

2023-07-08

首届中文NL2SQL挑战赛数据集

首届中文NL2SQL挑战赛数据集

2021-01-04

Python Programming for Biology

Python Programming for Biology_ - Tim J. Stevens

2015-04-17

R语言实战pdf

R语言实战pdfR语言实战pdfR语言实战pdf

2014-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除