【k8s APIServer 源码阅读(一)】-对象缓存 Cacher结构cacher的结构如下,已将注释翻译成了中文,关键的内容有 incoming chan watchCacheEvent:事件分发的管道 这里事件的结构如下: 123456789101112131415161718192021222324252627// watchCacheEvent is a single "watch event" that is s 2025-08-24 k8s > ApiServer #k8s
【k8s kubelet 源代码阅读(二)】-节点状态上报 主处理流程在kubelet的Run中会调用相应的代码进行节点状态更新,代码如下: 123456789101112131415161718192021222324252627282930if kl.kubeClient != nil { // Start two go-routines to update the status. // // The first will 2025-08-19 k8s > kubelet #k8s
【k8s kubelet 源代码阅读(一)】-Pod管理 关键组件介绍probeManager当一个pod被kubelet感知到之后,就会调用probeManager的AddPod来为各个容器启动探针,监控状态变化。具体执行如下: 获取所有的pod.Spec.Containers以及pod中支持重新启动的initContainers,然后逐个处理 如果这个容器配置了StartupProbe或者ReadinessProbe或者LivenessProbe 2025-08-11 k8s > kubelet #k8s
【pytorch-fsdp 源代码阅读(二)】-参数流转 初始化 获取module下需要展开的tensors 将tensors放入到一个数组中,然后使用cat拼接到一起。这部分展开的数据会放到FlatParamHandle.flat_param中 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555 2025-07-12 LLM > FSDP #LLM
【pytorch-fsdp 源代码阅读(一)】-全流程概览 专有名词解释 warp:对模型进行包裹,使其具备fsdp的相关的分布式能力 shard: 对参数进行切分,得到每个rank sharded的参数 unshard: 将切分的参数allgather,得到完整的参数 reshard:将完整的参数释放,只保留每个rank的sharded的参数 sharded:切分后的参数 unsharded:完整的参数 fsdp概览如下图所示,首先对于Ze 2025-07-02 LLM > FSDP #LLM
【Picotron-Tutorial】上下文并行 理论分析上下文并行的核心思想是将序列并行的方法(也就是沿序列长度进行拆分)的思路应用到已经采用张量并行的模块上。 对于上下文并行,就像序列并行一样,我们将沿序列维度拆分输入,但这次我们对整个模型进行拆分,而不仅仅是对之前Tensor+Sequence并行中涉及的部分模型。 拆分序列是横向的切割,所以不会影响大多数模块,如MLP和LayerNorm,因为它们对每个token的处理是独立的。 在计算梯 2025-06-28 LLM > Picotron-Tutorial #LLM
【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