热门话题
#
Bonk 生态迷因币展现强韧势头
#
有消息称 Pump.fun 计划 40 亿估值发币,引发市场猜测
#
Solana 新代币发射平台 Boop.Fun 风头正劲
好吧,让我们谈谈框架、库、强化学习,以及为什么我可能不喜欢你最喜欢的强化学习代码库。是的,包括那个。
强化学习的不同之处在于,算法是简单的部分。GRPO 是一个关于某些对数概率的单行方程。如果你有数据,计算损失是微不足道的,然后你大概会使用你选择的反向传播库。
但这就是问题所在——获取数据。这真是个麻烦。在常规的强化学习中,你必须进行回合,可能会截断一些剧集,并相应地处理结束。如果你不想像蜗牛一样慢,你会想要对环境进行向量化,并为此调整算法。如果你想做一个大型语言模型,你需要做所有让大型语言模型适应内存的无聊事情。你需要小心你的提示,遮蔽损失的正确部分。你需要一个不错的生成引擎(vLLM),这会让更新权重变得麻烦。如果你想做多智能体多轮次的强化学习,干脆去做个数独吧。
虽然我们在几乎所有与强化学习相关的事情上都有很多分歧,但我认为 @jsuarez5341 的 Pufferlib 美妙地体现了这一点。毫无疑问,它在其所做的事情上非常出色——在模拟环境中非常快速地训练强化学习算法。
但它的大部分新颖性纯粹是基础设施。核心算法在很大程度上与多年来的相同,我敢打赌它们代表的整体工程工作量不到 10%。
自然,这对你需要编写的代码有影响,以便做任何超出运行内置示例的事情。我一次又一次发现,对于许多足够非平凡(即:有趣)的研究问题,花费的时间大致相同,(a) 从头开始/从简单原语编写,或 (b) 调整现有框架以适应疯狂的想法。
在前者中,你专注于编写实际逻辑。在后者中,你需要调整框架以允许你添加逻辑。我知道我更喜欢哪种。
这一切都是因为算法是简单的部分。
基础设施才是麻烦。因此,每当你有机会选择时——使用简化基础设施的工具,自己编写训练循环。不要构建框架,构建库。你会感谢自己。
特别感谢我以前的硕士导师,他是第一个告诉我放弃 rllib,直接在 PyTorch 中自己编写 PPO 的人。还有 @hallerite,感谢他激励我最终写下这篇抱怨。如果人们有需求,我可能会在未来某个时候写一篇带有示例的正式努力帖。
热门
排行
收藏

