纸翼学术成果分享平台:平台展示
该平台为北航2024年秋软件系统分析与设计课程团队项目,致谢我的9位伙伴们,和Bug-捉迷藏小组。
平台演示
(function(){var player = new DPlayer({"container":document.getElementById("dplayer0"),"theme":"#FADFA3","loop":true,"video":{"url":"/posts/39315f07/1.mp4","pic":"1.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})()
系统架构图
alt text
模型并行计算
该篇摘自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源码解析
VLM-R1基于TRL框架。
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#06 缓存池
在冯诺依曼架构中,数据存储在磁盘上,但必须加载到内存中才能执行操作。因此,如果数据库管理系统希望处理大量数据,它就必须能够高效地在磁盘与内存之间移动数据。这个任务由缓冲池管理器(Buffer
Pool...
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,那么该元素肯定不在集合中;
*...