CoMLRL 与其他多 LLM 训练框架的区别是什么?
许多框架支持基于 LLM 的多智能体系统,其中每个智能体都有自己的奖励 (例如:PettingLLMs, Dr. MAS, MARTI)。 这些框架通常被表述为部分可观测的随机游戏 (例如:POSGs),其中每个智能体都有自己的奖励。 手工设计的奖励规则可以使训练信号更加密集,但设计起来比较困难。
Cooperative MARL 经过长时间研究,通常被表述为 Dec-POMDP。 在一个 Dec-POMDP 中,所有智能体共享一个奖励,因此,在理论上,最优的联合策略对于协作来说是全局最优的。 这种表述还允许智能体从松散划分的角色中找到更具体的任务(参见 CoopHumanEval 编码领域)。 此外,与参数共享方法不同,CoMLRL 主要支持优化由真正不同的 LLM 智能体组成的系统,这更好地代表了具有不同能力和直接反映多智能体设置的异构 LLMs。
CoMLRL 是否支持单智能体 RL 后训练?
是. 用户可以设置 num_agents=1 用于单智能体 RL 训练后,请按照 训练初始化 指南。 但是,CoMLRL 优先考虑简单的多智能体训练,并省略了针对单智能体的特定优化。 对于单智能体训练,LLaMA-Factory、trl、OpenRLHF 和 verl 是更好的选择。
CoMLRL 是否支持自对弈或 RSI 与 RL 后训练?
是. CoMLRL 支持 多轮 RL 在训练后, 以便可以自定义这些流程的环境交互.
自玩 (Spiral、SPADE) 和自改进 (MAFT) 可以在单个 trainer (num_agents=1) 中实现,该外部转换会调整自玩风格的提示,例如通过切换智能体的角色或要求其修改之前的答案。
多智能体递归自改进 (RSI) 更加复杂:每个智能体都在自己的 trainer 中运行,并且系统协调这些 trainers。 在每个回合中,系统向一个或多个 trainers 发送不同的提示,以收集它们的智能体的响应,并且它会按照计划的步骤对每个 trainer 进行训练,例如通过轮流使用智能体。
CoMLRL 是否支持分布式训练?
CoMLRL 可以将整个模型,例如 actors、critics,以及奖励模型,放置在单个机器上的不同 GPUs 上,并使用 parallel_training="mp"。 它不提供多进程数据并行训练或将单个模型在设备上进行分片。 训练并行化 描述了设备配置。
我可以利用参数共享来保存 VRAM 吗?
是. 如 训练实体所述,agents 接受已加载的模型对象,因此可以传递一个已加载的模型给每个智能体。 智能体然后共享其权重,并且格式化程序可以为它们分配不同的角色。 每个智能体仍然保持自己的优化器状态,因此共享可以节省权重和梯度的内存,但不能节省优化器状态。
我可以利用 LoRA 或低精度训练来保存 VRAM 吗?
不推荐. 在我们的广泛实验中,两者 PEFT 方法,例如 LoRA 或使用低精度训练,效果都不理想. LoRA 无法完全调整模型,并且有效的更改甚至可能需要更大的 LoRA 适配器,这可能会增加内存使用。相反,当智能体从具有相似初始性能的模型开始时,可以使用参数共享,并且梯度检查可以减少激活内存,尽管这些方法尚未得到广泛测试。用户欢迎测试并分享他们的发现于 CoMLRL 问题.