Liuyi Wen's Blog
搜索

Liuyi Wen's Blog

verl框架:2. 对比OpenRLHF+colocate思路解析
发表于2025-05-06|verl
SPMD->MPMD SPMD设计范式:单程序多数据,所有进程/线程执行同一个程序的拷贝,通过环境变量差异自主确定行为模式,无需中心调度节点。主流并行框架(DDP/DeepSpeed/Megatron)均基于SPMD范式。 优点:SPMD由于没有controller,完全由worker自驱,在运行时更为高效; 缺点:由于各个worker上需要运行相同程序,灵活性不如single-controller模式;需要考虑各个rank之间的通信,增加编程复杂度。 经典代码如下: 123456import torchimport osprint(os.environ['RANK'], os.environ['WORLD_SIZE'], os.environ['MASTER_ADDR'],...
verl框架:1. Ray 集群介绍 + verl 中基于 Ray 的执行流程解析
发表于2025-05-03|verl
现代计算机体系结构 现代计算机体系结构如下: 多核:一台计算机上有多颗CPU,每个 CPU 有多个计算核心。CPU内部有缓存结构,外部有主存。 集群:多台计算机通过高速网络互联,每台计算机上配有至少一块高速网卡。使得不同节点之间互相访问数据就像在单个节点一样。 异构计算:CPU 和主存通常被称为主机(Host),各类专用的加速器被称为设备(Device)。当前基于 GPU 的异构计算是主流,GPU 有区别于 CPU 的芯片微架构和编译软件栈。 软件层面:GPU 提供了 CUDA编程接口; 硬件层面:GPU 有很多个专用计算核心,和 GPU...
大模型推理框架vLLM:paper + code 解析
发表于2025-04-10
论文解读:Efficient Memory Management for Large Language Model Serving with PagedAttention 论文原文 Abstract 为了提供LLM的高吞吐量服务,每次需要批量处理足够多的请求。然而现有系统面临KV缓存内存不足的挑战:每个请求的KV缓存内存占用巨大,且动态增减。当内存管理效率低下时,碎片化和冗余复制会造成显著的内存浪费,从而限制批处理规模。为解决这一问题,我们提出PagedAttention,这是一种受经典操作系统虚拟内存与分页技术启发的注意力算法。基于此,我们构建了vLLM这一LLM服务系统,其实现了:(1) KV缓存内存接近零浪费;(2) 支持请求内及跨请求的KV缓存灵活共享,进一步降低内存占用。评估表明,在相同延迟水平下,vLLM将主流LLM的吞吐量较FasterTransformer、Orca等最先进系统提升了2-4倍。当处理更长序列、更大模型及更复杂解码算法时,性能提升尤为显著。 Introduction 当前LLM...
verl 框架:3. 加载数据与创建 batch
发表于2025-11-24|verl
verl 框架:3. 加载数据与创建 batch run_ppo()函数完成 Ray 集群初始化之后,创建一个TaskRunner将整个 RL 训练流程封装在一个独立的 Ray Actor 中,提交到远程执行,以支持分布式调度。 TaskRunner.run运行在远程 Ray Actor 中,流程如下(重点关注 PPO 训练器RayPPOTrainer中的 dataset 来源): 1234567891011121314151617181920212223242526272829303132333435363738394041424344def run(self, config): # 0. 注册各种 Worker 角色,初始化资源池管理器 ...... from verl.utils.dataset.rl_dataset import collate_fn # Create training and validation datasets. train_dataset = create_rl_dataset( ...
RL 系列:4. 策略梯度算法
发表于2025-11-17|RL
RL 的三个组成部分为:Actor, Environment 和 Reward. Environment 和 Reward 在 RL 学习开始前已经决定,要求是寻找 Actor 的最优策略以最大化 Reward. 假设轨迹为: \[ \tau=\{s_1, a_1, s_2, a_2, ..., s_t, a_t\} \] 给定 Actor 的参数\(\theta\)(策略\(\pi\)中的网络参数\(\theta\)),某个轨迹\(\tau\)发生的概率为: \[ p_{\theta}(\tau)=p(s_1)\prod_{t=1}^Tp_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t) \] 其中\(p(s_{t+1}|s_t,a_t)\)由环境决定;\(p_{\theta}(a_t|s_t)\)由策略\(\pi\)决定,也即 RL 的优化目标。 期望奖励为: 使用梯度上升最大化期望奖励: \[ \nabla\overline{R_{\theta}}=\sum_\tau R(\tau)\nabla...
RL 系列:3. 时序差分算法
发表于2025-11-10|RL
有模型 vs 免模型 有模型的强化学习:知晓状态转移函数(\(P[s_{t+1}, r_t|s_t, a_t]\))和环境的奖励函数(\(R[s_t, a_t]\)),可通过策略迭代或价值迭代寻找最佳策略;智能体与环境无交互。 免模型的强化学习:状态转移函数和概率函数未知,非马尔可夫决策过程,无法直接采用动态规划。智能体和环境交互,通过采样到的数据学习。 免模型预测方法 蒙特卡洛策略评估 蒙特卡洛方法是一种基于概率统计的数值计算方法。一个例子是计算圆的面积:在正方形内部随机产生若干个点,细数落在圆中点的个数,圆的面积与正方形面积之比就等于圆中点的个数与正方形中点的个数之比。 在马尔可夫决策过程中,状态的价值是其期望回报;利用蒙特卡洛方法在...
深入 Parquet:从 Dremel 论文到列式存储的工程权衡
发表于2025-09-30|Database
parquet(列式存储)在 OLAP 场景广泛使用,空闲时间阅读了 paper 和相关源码。 paper 原文阅读:Dremel Dremel是一个可扩展的交互式查询系统,专门用于分析 read-only 的嵌套数据。它结合了多级执行树和列式数据布局,能够在几秒钟内对万亿行的表运行聚合查询。Dremel 可以扩展到数千个 CPU 和 PB 级数据,并且在 Google 内部有数千名用户。Dremel 并不是用来替代 MapReduce的,而是经常与 MR 结合使用,用于分析 MR 管道的输出或快速原型化更大的计算。 数据模型 Dremel 的数据模型是基于强类型的嵌套记录,抽象语法: \[ t = dom | <A1:t[*|?], ..., An:t[*|?]> \] t 是原子类型或一个记录类型,原子类型包括整型、浮点数、字符串等;Ai 为记录的第 i 个字段,其后的 [*|?] 表示其重复类型。 * 表示该字段为 Repeated; ?表示该字段为 Optional; 无标记则表示该字段为...
Transformer 系列:3. Encoder 和 Decoder 的架构
发表于2025-09-29|Transformer
背景 此前的模型(如ByteNet, ConvS2S)使用 CNN 并行计算,但处理长距离依赖关系的能力随着位置间距的增加而减弱(线性或对数增长)。 Transformer 利用自注意力机制,使得关联任意两个位置所需的操作次数降至常数级,极大改善了处理长距离依赖的能力;引入 Multi-Head Attention 抵消因注意力位置平均化可能导致的"有效分辨率"下降问题。 Transformer 是第一个只依赖 Self-Attnetion 来实现 Encoder-Decoder 架构的模型。 模型架构 在 GPT 之前,大部分神经序列转换模型都采用 Encoder-Decoder 结构,Transformer 模型也不例外。Encoder 将输入的符号序列\((x_1,...,x_n)\)映射为一个连续序列\(z=(z_1,...,z_n)\);得到编码后的序列\(z\),Decoder 逐个元素生成输出序列\((y_1,...,y_m)\)。Decoder 每一步输出是 auto-regressive 的,将当前 step 的输出和输入拼接,作为下一个 step 的输入。 ...
幂等性设计
发表于2025-09-28|Distributed System
幂等性定义 幂等性设计用数学的语言来表达是:f(x) = f(f(x))。在计算机中幂等性指一个操作多次执行的结果与其执行一次的结果相同。 注意:这里强调的是结果,而非响应。 Wiki 上幂等性的定义:https://zh.wikipedia.org/zh-cn/%E5%86%AA%E7%AD%89 在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和1。 设计具有幂等性的分布式系统可以有效避免数据不一致和重复处理的问题。非幂等性产生的原因如下: 前端设计不合理,用户主动多次请求; 网络库超时重试机制; 弱一致性分布式系统中,不合理的查询判断。 支付是一个需要强幂等性的典型场景:用户点击支付按钮后,可能因为网页响应慢而重复点击,或者网络问题导致客户端重试。需要避免重复支付。 幂等性 &...
从 TCP 粘包到分帧
发表于2025-09-26|Network
TCP/ IP 协议簇中: IP 协议解决了数据包(Packet)的路由和传输,上层的 TCP 协议无需关注路由和寻址; 传输层的 TCP 协议解决了数据段(Segment)的可靠性和顺序问题,上层无需关心数据能否传输到目标进程,只要写入 TCP 协议的缓冲区的数据,协议栈几乎都能保证数据的送达。 当应用层协议使用 TCP 协议传输数据时,TCP 协议可能会将应用层发送的数据分成多个包依次发送;当应用层从 TCP 缓冲区中读取数据时发现粘连的数据包时,需要对收到的数据进行拆分。 TCP 协议之所以存在所谓的"粘包"问题,本质上源于对 TCP 协议特性的误解和不当应用层协议设计。现在分析 TCP 协议中的粘包是如何发生的: TCP 协议是面向字节流的协议,它可能会组合或者拆分应用层协议的数据; 应用层协议的没有定义消息的边界导致数据的接收方无法拼接数据。 面向字节流 TCP 是一种面向字节流的传输层协议,其核心设计不包含数据包或消息的概念,而是将数据视为连续的字节流进行传输。TCP 协议本身的传输机制会对待发送数据进行组合或拆分。 Nagle...
12…5
avatar
Liuyi Wen
文章
47
标签
5
分类
9
Follow Me
公告
The Journey Is the Reward.
最新文章
verl 框架:3. 加载数据与创建 batch2025-11-24
RL 系列:4. 策略梯度算法2025-11-17
RL 系列:3. 时序差分算法2025-11-10
深入 Parquet:从 Dremel 论文到列式存储的工程权衡2025-09-30
Transformer 系列:3. Encoder 和 Decoder 的架构2025-09-29
分类
  • Database6
  • Distributed System1
  • High Concurrency2
  • Network1
  • OS3
  • Parallelism6
  • RL4
  • Transformer4
标签
Go Web Platforms Display C++ KV Cache OOP
归档
  • 十一月 2025 3
  • 九月 2025 11
  • 七月 2025 5
  • 六月 2025 1
  • 五月 2025 4
  • 四月 2025 7
  • 三月 2025 16
网站信息
文章数目 :
47
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2019 - 2025 By Liuyi Wen
框架 Hexo 7.3.0|主题 Butterfly 5.3.5
搜索