模型并行计算
该篇摘自The
Ultra-Scale Playbook: Training LLMs on GPU Clusters.
在单个GPU上训练
在单个GPU上训练,通常包括三个步骤: 1. forward
pass:将输入传入模型,产生输出; 2. backward pass:计算梯度; 3.
optimization:使用梯度更新参数。
batch size的影响
超参数batch size:小的batch
size在训练初期有助于快速完成训练过程,达到一个较优learning
point;但在训练后期,小的batch
size导致梯度噪声增大,模型难以收敛至最优性能点;大的batch
size虽然能给出精确的梯度估计,但会降低每个训练样本的利用效率,从而导致收敛变慢,并可能浪费计算资源。
batch...
C++泛型算法
本篇隶属C++
Primer中C++标准库专题,当前关注范型算法。
标准库容器只定义了很少的操作;因此提供了一组范型算法,其中大多数独立于特定的容器,具备通用性。
范型算法
概述
大多数算法在头文件algorithm中;头文件numeric中定义了一组数值范型算法。
范型算法本身不会执行容器的操作;只会运行于迭代器之上,执行迭代器的操作。
只读算法
只读取输入范围的元素,从不改变元素
find
12int val=42;auto result=find(vec.cbegin(), vec.cend(), val);
find前两个参数:表示元素范围的迭代器;第三个参数:一个值。将范围中每个元素与给定值比较:
返回指向第一个等于给定值元素的迭代器;
若范围内无匹配元素,返回第二个参数,表示搜索失败。
accumulate
1int sum=accumulate(vec.cbegin(), vec.cend(), 0); //...
VLM-R1源码解析
GROP方法
GRPO
是一种在线学习算法,它通过使用训练模型本身在训练期间生成的数据进行迭代改进。其理念是:最大程度利用生成补全,同时确保模型始终接近参考策略。
分为4个步骤:生成补全、计算奖励、估计KL散度、计算损失。
要点
引入critic:使用预测baseline改进奖励
使用绝对奖励,单纯比较大小,会导致:奖励波动大,以及对部分改进的激励不足;因此引入Critic:使用“预测baseline”来改进奖励
对于给定状态(\(s_t\))和动作(\(o_t\)),该baseline为价值函数\((V_\psi(s))\);训练目标由单纯的reward,转为超过该baseline的程度,由优势函数表示为:
\[
A_t=r_t-V_\psi(s_t)
\] 即训练中优化内容为: \[
\mathcal{J}_{adv}(\theta)=\mathbb{E}[A(o)]
\\
where...
详解变分自编码器
VAE
信息论
信息量
\(I(x)=-\log{P(x)}\),描述事件x中包含的信息量。
### 信息熵 设随机变量X~p(X),则X的熵被定义为: \[
H(p)=\mathbb{E}_{X\sim p(X)}[-\log p(X)].
\] 当X为离散随机变量时, \[
H(p)=-\sum_{i=1}^{n}p(x_i)\log p(x_i)
\] 熵的数学化理解:
编码随机变量所需的最短平均编码长度
即对于更大概率的事件,采用更短的编码(同Huffman编码思路一致)。
证明: 假设编码的字符集大小为\(D\),若采用二进制编码,则\(D=2\). 假设存在需要编码的\(m\)个事件,每个事件的编码长度为\(l_i\). 根据编码理论中的Kraft–McMillan
Inequality,在给定的码字字长下能够成功编码,当且仅当: \[
\sum_{i=1}^{m}D^{-l_i}\leq 1.
\] 转为如下优化问题: \[
\min_{l_i}\sum_{i=1}^{m}p(x_i)l_i
\]...
AI导论-2024春-总笔记
这是北航2024春《人工智能导论》课的理论笔记,由笔者整理。
绪论
三种主流方法:符号主义、联结主义、行为主义
机器学习
从数据中学习知识:f(x)=y...
CMU15-445 Lecture#05 存储模型和压缩
本篇博客为CMU15-445(2024
Fall)中存储模型与压缩技术部分的理论学习笔记。 ## 数据库工作负载 ###
OLTP(在线事务处理):写操作密集
快速、短时间运行的操作,重复操作和简单查询,每次操作只处理一个实体。OLTP
工作负载通常写操作比读操作多,每次只读/更新少量数据。
*
示例:亚马逊商店。用户可以将物品添加到购物车并进行购买,但这些操作只影响他们自己的账户。
OLAP(在线分析处理):读操作密集
长时间运行的复杂查询(通常涉及计算聚合)和对大量数据的读取。在
OLAP 工作负载中,数据库系统通常会分析和推导来自 OLTP 端的数据。 * 示例:
个性化的亚马逊购物广告。网站分析用户购物车和购买的数据,然后为不同的用户选择不同的广告。
HTAP(混合事务和分析处理)
OLTP 和 OLAP 工作负载在同一数据库实例中共存。
存储模型
DBMS的存储模型决定:元组在磁盘或内存上等物理介质上的组织形式。 ###
N-元存储模型(NSM):行存储 在...
详解布隆过滤器(Bloom Filter)
背景
如果有一组结构化数据(通过记录ID标识),存储在一组数据文件中,如何确定哪个文件可能包含我们所需的数据呢?如果逐个读取文件,速度会极慢(尤其是要不断从磁盘将数据移入内存)。
一种解决方案是:构建一个索引表,其中每个数据文件对应一个索引,即将每个记录ID映射到数据文件中的偏移量(索引文件根据记录ID进行排序)。要搜索指定记录ID时,使用二分查找。但是,我们能做得更好吗?
算法描述
使用Bloom过滤器快速测试元素是否为集合的成员。返回结果为:可能在集合中,或绝对不在集合中。可能误报(即搜索一个不存在的元素,返回值为“存在”);不会出现漏报。随着过滤器中元素数量的增加,错误率也会增加。
一个空的Bloom过滤器是一个位数组,包含m位,全部设置为0。还有k个不同的哈希函数:每个函数都将集合中的元素映射到m位位置中的一个。
*
添加元素:将其输入到哈希函数中,得到k个位位置,并将这些位置的位设置为1;
* 测试元素是否在集合中:将其输入到哈希函数中,得到k个位位置。 *
如果这些位置中的任何一个位是0,那么该元素肯定不在集合中;
*...
CMU15-445 Lecture#03,#04 数据库存储
本篇博客为CMU15-445(2024 Fall)中数据库存储部分的理论学习笔记。
存储结构
存储层次结构的最上面是离 CPU
最近的设备。这些设备速度最快,但也是最小且最贵的;随着距离 CPU
的增加,存储设备变得更大,但更慢。每 GB 存储的成本也会下降。
易失性设备
易失性:如果拔掉机器的电源,数据将丢失;
易失性存储支持快速的随机访问,具有字节可寻址的地址。这意味着程序可以跳到任何字节地址并获取数据。
非易失性设备
非易失性:该存储设备不需要持续供电,就能保持它存储的位;
块/页面可寻址:要读取某个特定偏移位置的值,程序必须先加载包含该值的
4 KB 页面到内存中;
适合顺序访问(一次读取多个连续的数据块)。
我们将其称为“磁盘”,暂时不会区分固态存储(SSD)和旋转硬盘(HDD)。
持久内存
介于DRAM和磁盘之间,结合了 DRAM 的快速性和磁盘的持久性。 >
持久内存的设计目标是达到两者的最佳平衡。最著名的例子是 Optane。 >
> NVMe 表示非易失性内存快车。这些 NVMe...
C++顺序容器
本篇隶属C++...