- 博客(31)
- 收藏
- 关注

原创 深度强化学习(DRL)算法 2 —— PPO 之 GAE 篇
到这里,PPO 算法相关的细节就讲完了,但是 PPO 的代码实现上还有许多细节,可以参考cleanrl是目前我看过的可读性最好的 ppo 代码实现,对具体实现感兴趣的可以看下这个 repo。接下来的文章会介绍 DRL 其他的常用算法,如 DDPG、SAC 等。
2024-02-17 14:55:20
5393
1
原创 使用 optimum 使得 embedding 生成速度提高 5 倍(和原生 sentence transformer 模型对比)
今天偶然刷到了调用方式更为简单,就研究了下如何在 GPU 上加速。
2024-04-21 21:02:10
1401
原创 使用 onnx 使得 embedding 生成速度提高 4 倍(和原生 sentence transformer 模型对比)
记录下使用 onnx 提高向量生成速度的过程。。
2024-04-20 20:14:49
813
原创 深度强化学习(DRL)算法 附录 6 —— NLP 回顾之基础模型篇
NLP 的序列属性和 RL 天然适配,所以 NLP 里的一些模型也可以用到 RL 里面,如 Transformer。去年发表的 MATransformer 在一些多智能体任务上超过了 MAPPO,可见 Transformer 在 RL 上有巨大的发展潜力。这篇文章用来回顾 NLP 基础模型。
2024-04-13 12:45:20
1330
原创 深度强化学习(DRL)算法 附录 6 —— NLP 回顾之预训练模型篇
在另一半的时间里,第二个句子是从语料库中随机抽取的,标记为“假”。这是因为对于任何确定的位置偏移δ,位置 i+δ 处的位置编码可以线性投影位置 i 处的位置编码来表示。bert 开启了预训练模型的风潮,使用了带掩码的语言模型,具体就是通过大量的数据,模型获取了语言信息抽取的能力,从而可以通过 fine-tune 应用到各种 NLP 任务上。根据 self-attention 的模型结构,改变 X 的输入顺序,不影响 attention 的结果,所以还需要引入额外的位置信息,即位置编码。
2024-04-13 12:07:48
1430
原创 计算机基础系列合集
这个课程,上面的文章也是当时在学习这个课程记录的学习笔记,学到很多东西,很开心,遗憾的是当时没有上完这个课程,后面忙起来就没有时间接着学习了,后面关于 OS、高级语言、课程最后的大作业都没有时间,希望今年可以有时间补完这个系列。如果有人看到这个系列,希望你也能喜欢这个课程。
2024-04-09 21:57:51
581
原创 使用 Slurm 配置 Nvidia GPU 集群
记录下使用 slurm 搭建 gpu 集群的过程,以下命令都是用 root 用户执行,切记。
2024-04-04 13:13:39
2776
原创 计算机基础系列 —— 虚拟机代码翻译器(2)
但是最好还是自己学习课程实现一遍,理解更深刻。这篇文章我们来看 VM code 里的分支和函数调用。
2024-03-30 10:51:44
1181
原创 计算机基础系列 —— 虚拟机代码翻译器(1)
但是最好还是自己学习课程实现一遍,理解更深刻。课程的 Part I:被抽象成一块 Hack 器件,Part II 的重点在软件部分,包括高级语言(Jack)、操作系统、编译器(Jack Compiler)和 虚拟机翻译器(VM translator)。
2024-03-29 22:33:55
1033
原创 计算机基础系列 —— 汇编器
这里有些符号在后面的文章里会用到,对于预定义符号直接把 symbol 替换成 value,就和上面的指令翻译是一样的了。
2024-03-28 22:31:02
768
原创 计算机基础系列 —— CPU
但是最好还是自己学习课程实现一遍,理解更深刻。之前的文章里我们介绍了 Register、PC、RAM 和 ALU,这节课我们来介绍如何把这些芯片组合起来成一个 CPU 和一个能运行上篇文章介绍的汇编语言的电脑 —— Hacker。我们来看一看 Hacker 的架构。
2024-03-26 23:30:20
1085
原创 计算机基础系列 —— 汇编语言
接下来我们来看二进制版本的指令集,我们编程还是用汇编语言,但是汇编器会把汇编程序翻译成下面的二进制版本加载到 ROM 里运行。
2024-03-24 17:26:59
822
原创 计算机基础系列 —— 从 Nand 门、DFF 到 RAM
但是最好还是自己学习课程实现一遍,理解更深刻。之前的文章里实现了组合逻辑单元和 ALU,我们有了计算的能力。但是我们不能存储信息,只能处理 16bit 的数字,不能处理时序的信息(比如 x[t+1] = x[t])。有了处理时序信息的能力,我们才能构建强大的计算机,因为处理时序信息代表着我们可以把一个芯片的输出作为另一个芯片的输入,从而实现各种复杂的功能。所以我们需要时序逻辑单元 DFF(Data Flip-Flop),DFF 干了一件很简单的事情,就是实现了 x[t+1] = x[t]。
2024-03-23 21:04:30
1271
1
原创 计算机基础系列 —— 从 Nand 门到 ALU(2)
设计的 ALU 实在是太优雅了,只需要基础的几个组合逻辑单元,就可以实现计算机内部的一切复杂的运算。
2024-03-17 14:04:59
1175
1
原创 计算机基础系列 —— 从 Nand 门到 ALU(1)
文中提到的所有实现都可以参考:nand2tetris_sol,但是最好还是自己学习课程实现一遍,理解更深刻。
2024-03-16 20:32:43
728
1
原创 RLAIF(0)—— DPO(Direct Preference Optimization) 原理与代码解读
之前的系列文章:介绍了 RLHF 里用到 Reward Model、PPO 算法。但是这种传统的 RLHF 算法存在以下问题:流程复杂,需要多个中间模型对超参数很敏感,导致模型训练的结果不稳定。斯坦福大学提出了 DPO 算法,尝试解决上面的问题,DPO 算法的思想也被后面 RLAIF(AI反馈强化学习)的算法借鉴,这个系列会从 DPO 开始,介绍 SPIN、self-reward model 算法。而 DPO 本身是一种不需要强化学习的算法,简化了整个 RLHF 流程,训练起来会更简单。
2024-03-09 16:04:41
4590
原创 DeepSpeed-Chat RLHF 阶段代码解读(2) —— PPO 阶段
Critic model、Reward model: 开始的时候这两个模型是一样的,但是用途是不一样的,一个是用来产生 critic value,一个是用来产生 reward 的,虽然结构是一样的。整个流程下来,我的感觉,很繁琐,难训练,所以目前主流大模型很少使用原始的这套 RLHF 流程,更多使用 dpo 算法,而且 RLHF 的数据有限,很难对所有的 response 有一个公平的 rewar,所以下一个系列文章会介绍利用 dpo 的 RLAIF 算法,如 SPIN、self-reward etc。
2024-03-08 09:50:27
1842
1
原创 DeepSpeed-Chat RLHF 阶段代码解读(1) —— 奖励函数阶段
在一文中,我们了解了 PPO 的原理和实现。本篇文章,我们来看 RLHF 里 Reward Model 的实现,为 PPO 应用到 RLHF 里做好前置准备。我们知道在原始 PPO 里,采取某种策略产生的奖励是由环境决定的,可以理解为内置的。
2024-03-07 10:02:49
1726
1
原创 DeepSpeed-Chat RLHF 阶段代码解读(0) —— 原始 PPO 代码解读
为了理解 DeepSpeed-Chat RLHF 的 RLHF 全部过程,这个系列会分三篇文章分别介绍:原始 PPO 代码解读RLHF 奖励函数代码解读RLHF PPO 代码解读。
2024-03-03 11:27:32
1183
原创 深度强化学习(DRL)算法系列文章合集
这个系列介绍了常用的单智能体强化学习方法,也有些没有写到,比如 SAC,希望以后有时间可以回来补完。下个系列会开始介绍 RLXF(包括 RLHF、RLAIF)欢迎关注。奋斗,追求,不达目的,誓不罢休!
2024-02-26 23:11:49
1480
1
原创 深度强化学习(DRL)算法 附录 6 —— NLP 回顾之预训练模型篇
在另一半的时间里,第二个句子是从语料库中随机抽取的,标记为“假”。这是因为对于任何确定的位置偏移δ,位置 i+δ 处的位置编码可以线性投影位置 i 处的位置编码来表示。bert 开启了预训练模型的风潮,使用了带掩码的语言模型,具体就是通过大量的数据,模型获取了语言信息抽取的能力,从而可以通过 fine-tune 应用到各种 NLP 任务上。根据 self-attention 的模型结构,改变 X 的输入顺序,不影响 attention 的结果,所以还需要引入额外的位置信息,即位置编码。
2024-02-25 21:15:09
1041
1
原创 深度强化学习(DRL)算法 附录 5 —— CV 基础回顾篇
因为强化学习里面有些状态是图片表示的,需要用 CNN 抽取信息,所以对 CNN 要有基础的了解。
2024-02-24 08:00:00
1527
原创 深度强化学习(DRL)算法 附录 4 —— 一些常用概念(KL 散度、最大熵 MDP etc.)
Q 基于 P 的相对熵(以 P 为基准,看 Q 和 P 相差多少),描述了 Q 想要达到和 P 一样的概率分布中间还差了多少信息量,所以相对熵为 0 的时候,Q 和 P 概率同分布。熵和信息量类似,但是区别是熵衡量的是整个系统里的所有事件,所以得乘上每个事件发生的概率,做信息量的加权平均(信息量的期望)。那么这也是信息量用计算机的名次比特来做单位(计算机里 1bit 就是 0,1 两个信息,f(0) = log(1/2) )的原因。那么两个系统之间的熵怎么比较呢,自然而然就有了相对熵的概念。
2024-02-23 00:09:03
1160
原创 深度强化学习(DRL)算法 5 —— Twin Delayed Deep Deterministic Policy Gradient (TD3)
是高斯分布,和 Q 没有关系,而且 Q 使用的是确定性策略,实际上针对连续动作空间,采用随机策略,并且随机扰动和 Q 相关,才是更合理的,因为不但增加了探索性,而且探索性和 Q 的大小是相关的,Q 越大随机策略的探索性应该越小。介绍了期望 Sarsa 的方法,是一种比 Sarsa(DDPG 是本质上是 Sarsa)更稳定的方法,因为取了期望,相当于考虑了更多的动作,所以也可以用到 DDPG 里。所以为了减小这种误差,前者是为了经验回放采样数据的时候,获得更多的探索性,所以可以随心所欲的探索。
2024-02-22 00:20:55
1370
1
原创 深度强化学习(DRL)算法 4 —— Deep Deterministic Policy Gradient (DDPG)
就像 q-learning 的 td-target 使用的 max 操作使得模型的偏差更大,因为 q 的值被高估了(实际上这也是 double DQN 的改进),高估问题会影响模型的探索性,DDPG 虽然没有 max 操作,但是仍旧有高估问题的可能。lossq 和 lossa 同时更新不合理,下篇文章提出改进DQN 使用的是深度学习版本的 q-learning,我们都知道期望 Sarsa 是比 Q-learning 更稳定的算法,我们也可以从这个角度出发提出改进。),那么就增加了探索性。
2024-02-21 00:26:45
993
原创 深度强化学习(DRL)算法 3 —— Deep Q-learning(DQN)
所以我们需要固定一个 NN 的参数,训练一段时间,再把那个得到训练的 NN 的参数 copy 到那个固定参数的 NN。为什么这里没有用重要性采样,因为目标策略的序列和行动策略没关系,不像 MC off-policy 需要用行动策略的采样来评估目标策略的采样。,让 NN 逼近 td-target ,就可以达到减小 td-error 的目的,是不是有监督学习的味道了。所以可以直接采样一系列的 (s,a,r’,s’),用于神经网络的训练,这就是所谓的经验回放。Q-learning(离轨)这就是最原始的 DQN。
2024-02-20 00:02:08
1014
原创 深度强化学习(DRL)算法 附录 3 —— 蒙特卡洛方法(MC)和时序差分(TD)
状态转移概率一般是不知道的,所以我们需要 model-free 的方法,如 MC 和 TD。
2024-02-19 00:27:06
1382
1
原创 深度强化学习(DRL)算法 附录 2 —— 策略迭代和价值迭代
和贝尔曼方程一样,得到 v*(s) 和 v*(s‘)以及 q*(s,a) 和 q*(s’, a’) 的关系,这就是贝尔曼最优方程的核心思想。得到 v(s) 和 v(s‘)以及 q(s,a) 和 q(s’, a’) 的关系,这就是贝尔曼方程的核心思想。(这里不能把求和替换成 max 的原因是,我们只能让 v* 最优,因为 p 由系统决定,我们无法决定)(4)即把(2)带入(1),把 (1)带入(2)产生的两个等式。即把(3)带入(4),把 (4)带入(3)产生的两个等式。时刻的策略的好坏,我们定义在。
2024-02-18 19:50:21
995
1
原创 深度强化学习(DRL)算法 附录1 —— 贝尔曼公式
根据 Contraction mapping theorem 可知贝尔曼最优公式中的 v(state value) 存在唯一的最优解,并且可能有多种最优策略。
2024-02-17 14:46:23
1301
1
原创 深度强化学习(DRL)算法 2 —— PPO 之 Clipped Surrogate Objective 篇
在之前的文章里介绍了,提出了两个缺点,其中缺点一,在后续提出的 DRL 算法 PPO 解决了,今天我们就来看看大名鼎鼎的 PPO 算法。
2024-02-16 00:02:41
2334
1
原创 深度强化学习(DRL)算法 1 —— REINFORCE
就像引言里所描述的养成习惯的四个步骤,如果我们想让机器也有自己的“习惯”,去掉机器没有的渴求属性,就是强化学习所做的事情 —— 帮机器养成“习惯”,而 DRL 就是使用深度学习的技术去实现强化学习算法。今天是系列文章的第一篇,会介绍最基础的 policy-based 的算法 —— REINFORCE。
2024-02-15 10:11:45
1553
2
LLM Powered Autonomous Agents
2024-03-30
2023 RLHF standford lecture
2024-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人