【Picotron-Tutorial】流水线并行 Afab并行理论分析最简单的pipeline并行就是将模型划分为好几层,然后分别放置在不同的GPU上依次进行前向传播和后先传播,如下图所示。但是这带来的最大的问题是效率过低,存在很多空闲时刻。 一个16层模型的流水线并行示例,该模型分布在4块GPU上。数字表示层编号。 假设$t_f$ 和$t_b$ 分别是单个微批次在流水线的一个阶段上进行前向传播和反向传播所需的时间(通常假设 $t_b\ap 2025-06-24 LLM > Picotron-Tutorial #LLM
【Picotron-Tutorial】数据并行 原生数据并行理论分析在原生的数据并行中,每个数据并行的组都会自己处理自己的数据,这带来的一个问题在于我们需要及时同步训练过程中的梯度以及优化器的状态。 最原生的方法就是我们在前向传播后,在对每一个层进行反向传播后进行一次同步,如下图所示。由于梯度得到了及时的同步,所有优化器的状态自然也就会变得相同。 代码分析 修改dataloader为分布式,从而使得每个dp进程每次获取到的数据batch是不相 2025-06-14 LLM > Picotron-Tutorial #LLM
【Picotron-Tutorial】Tensor并行 理论分析分析的对象 $$Y=X@W$$ 列并行需要给每个GPU都复制一份X(往往都是早就有了),然后对于W进行列维度的切分。最后每个GPU会有不同列的结果,最后会对其进行all_gather拼接得到结果。 行并行对于行并行,由于W的行数减小了,所以X的列数也要跟着变,所以首先需要将X进行列维度的拆分,划分到各个GPU卡上,然后与W进行相乘,得到的结果再进行all_reduce。 ML 2025-06-07 LLM > Picotron-Tutorial #LLM
深度学习中反向传播及优化器使用详解 反向传播偏导数参考资料: https://wuli.wiki/online/ParDer.html 简要说明: 对于复合函数,如果要求其对于某一个参数的偏导数,那么就需要把其他参数看为常数,然后求导。 几何意义:可以认为是沿着某一个轴的导数。如下图所示,对于曲面 $$z=f(x,y)$$对x的偏导就是求这个曲面上的某点对于x轴的斜率。 全微分参考资料: https://w 2025-06-01 LLM > 基础知识 #LLM
Pytorch torch.distributed 及NCCL初探 Pytorch torch.distributed 举例学习单机通信12345678910111213141516171819202122232425262728293031323334353637import osimport torchimport torch.distributed as distimport torch.multiprocessing as mpdef setup(rank 2025-05-25 LLM > 基础知识 #LLM
GPU架构概览 GPU架构概览物理体系架构下图是A100的物理体系架构: 绿色部分是计算核心 在 NVidia 的 GPU 里,最基本的处理单元是SP(Streaming Processor),A100中,64SP会组成一个SM(streaming Multiprocessor),SM是GPU中调度的基础单元,A100中总共具有108个SM,所以得到共有108*64=6192个计算核心。 中间 2025-05-10 LLM > 基础知识 #LLM
【从零构建大模型】四、对模型进行无监督训练 概览构建大模型的全景图如下,本文介绍了如何训练大模型以及如何重加载已有的预训练过的大模型参数。 介绍的脉络如下: 介绍Evaluating generative text modelsUsing GPT to generate text简单回顾一下GPT模型,其结构的关键参数如下所示: 123456789101112131415161718192021import torchfrom prev 2025-05-04 LLM > Build a Large Language Model (From Scratch) #LLM
【从零构建大模型】三、从零实现一个 GPT 模型以生成文本 概览构建大模型的全景图如下,本文介绍了基础GPT-2系列的模型架构。 介绍的脉络如下: 介绍Coding an LLM architecture一个参数量为124 million的GPT-2模型包括了以下的定义参数: 123456789GPT_CONFIG_124M = { "vocab_size": 50257, # Vocabulary size 2025-05-03 LLM > Build a Large Language Model (From Scratch) #LLM
【从零构建大模型】二、编码Attention机制 概览构建大模型的全景图如下,本文介绍了基础的attention处理。 介绍的脉络如下: 介绍The problem with modeling long sequences对于类似翻译的任务,由于不同语言的语法问题,所以难以做到一对一的逐字翻译,需要提前对原本的字符串进行encoder提取信息,然后使用decoder模块进行翻译。 而传统的encoder-decoder RNNs方法在enco 2025-05-02 LLM > Build a Large Language Model (From Scratch) #LLM
【从零构建大模型】一、文本数据处理 概览构建大模型的全景图如下,本文介绍了最开始的数据处理。 数据处理的全景图如下所示,大致流程为: 将原文本,一般为一个string,进行分割。 对分割后的词转化为id。 生成一个embeddings层,然后id作为序号去embeddings层中取对应的行作为自己的表征。 如此转化后就将原本深度学习模型不能处理的原始数据转化为了可以处理的矩阵,同时我们希望这最后表示原始数据的矩阵中也能 2025-05-01 LLM > Build a Large Language Model (From Scratch) #LLM