LLM-Training-Overview
1.Pre-training Pre-training 阶段主要是通过大量互联网语料,构建一个能够“记住”大量知识的基础模型。基础模型就是一个互联网 token 模拟器,并不具备 “根据问题,吐出对应答案” 的能力。 Step 1: download and preprocess the internet. Hugging face 开源了一个 44 TB 的 Pre-training...
1.Pre-training Pre-training 阶段主要是通过大量互联网语料,构建一个能够“记住”大量知识的基础模型。基础模型就是一个互联网 token 模拟器,并不具备 “根据问题,吐出对应答案” 的能力。 Step 1: download and preprocess the internet. Hugging face 开源了一个 44 TB 的 Pre-training...
强化学习是一种通过智能体与环境交互来学习策略的机器学习范式。智能体通过探索(采取动作)获得经验(样本),并根据环境反馈的奖励(reward)来优化行为选择,最终目标是最大化累积奖励。 强化学习擅长解决序列决策问题,尤其是状态空间大、规则复杂的任务。大致过程描述为:智能体在一个状态下采取动作,影响未来状态和奖励,目标是找到最优策略, 如 Fig 1 所示。 Fig 1. 强化学习交互过程...
1.Cumsum 理论 Prefix Sum 定义为:$y_i = \sum_0^i x_i$,在 CPU 上简单实现如下所示。 void PrefixSum(const int32_t* input, size_t n, int32_t* output) { int32_t sum = 0; for (size_t i = 0; i < n; ++i) { sum ...
1.RMSNorm RMSNorm 是一种归一化操作,使用 均方根(Root Mean Square, RMS)实现归一化,计算公式为:$RMSNorm(x)=\frac{x}{\sqrt{\frac{1}{d}\sum_{i=1}^{d}x_i^2} +\epsilon }$,代码表示如下。 x = x / torch.sqrt(torch.mean(x ** 2, dim = 1, ...
1. Softmax 基本实现 Softmax 将一个数值向量归一化为一个概率分布向量,且各个概率之和为 1。Softmax 可以用来作为神经网络的最后一层,用于多分类问题的输出。 原始 Softmax 中 $\sum e^{x_i}$ 容易导致数值溢出,通常使用 Safe Softmax,即让 $x_i - max(x)$,以防止数值溢出,具体公式表达如下所示。 [m = max(x)...
本系列文章重点阐述了各类算子的逐步优化过程,涵盖 CUDA 常用算子,并对不同算子的性能瓶颈进行分析。各类算子完整代码请参考个人仓库 OpenKernels。 SGEMM 通用矩阵乘(GEMM)计算公式为:$C=\alpha AB + \beta C$,核心部分是矩阵 A 和 $B$ 相乘。下面进行计算复杂度分析,矩阵 A 维度通常为 (M, K),矩阵 B 维度通常为 (K, N),则...
1. Permute Reference [1] DefTruth, Many Others. LeetCUDA: A Modern CUDA Learn Notes with PyTorch for Beginners. 2025. https://github.com/xlite-dev/LeetCUDA.git.
本系列文章重点阐述了各类算子的逐步优化过程,涵盖 CUDA 常用算子,并对不同算子的性能瓶颈进行分析。各类算子完整代码请参考个人仓库 OpenKernels。 1.SGEMV SGEMV 表达式为:$Y = A * X$,其中 A(M, K),X(K, 1),Y(M,1)。本文展示了 K=32,K=128,K=16 和 Large K 四种情况下,优化 GEMV 算子的思路和方法。 最 ...
1. C/C++ 语言特性 1.1 const 常量修饰符,能够作用于:(1)变量;(2)指针;(3)引用,用于形参类型,即避免了拷贝,又避免了函数对值的修改;(4)成员函数,说明该成员函数内不能修改任何成员变量(常对象只能调用常函数)。 // const 修饰右侧紧邻的符号 const int* x; // 修饰int,指向的内容不能改变 int* const x; // 修饰 ...