在下一阶段,随着模型自主完成任务能力的增强,端到端的强化学习,如 Deep Research 这种更具自主性的模式,将在业务场景中得到更广泛的探索。这与单纯的做题有很大区别,因为做题是单次交互,通过不断自我思考最终得出答案,然后由强化学习的验证器给出信号,再继续迭代和提升。而强化学习的目的是更宏观的,即希望深入研究某一领域,这是一个开放型的、长期的决策问题,需要多次与互联网、代码执行器甚至更专业的工具进行结合。
另外,还有一些细节需要考虑。在训练过程中,GPU 卡可能会被复用,既用于推理,也用于训练。我们如何让两者和谐共处,尽量减少权重传递带来的额外时间消耗?下图右侧展示了一个实案例,使用了 CUDA 中的一些先进技术,如 CUDA IPC(Zero copy)的方式,在内存中进行权重同步。在分离式的情况下,服务集的管控和同步也是一个较大的问题。目前,强化学习系统尚未达到超大并发的 PD 分离模式,但随着系统规模的增大,我们很快就会发现瓶颈出现在推理侧。因此,如何将现有的推理系统中与强化学习相关的优化复用起来,并形成一个高效的系统,是我们未来超大规模长期系统中一个非常重要的部分。总体的调优倾向是优先考虑并发,而不是时延,因为这并不是直接面向用户的系统。如果能够通过优化运营策略和算法调整,提高系统的并发能力,那么我们在训练侧的瓶颈就会更小一些。
这种模式在当前较为常见的推理框架中较为典型,例如类似 vLLM 的框架就是如此操作的:等待一批推理完成后再进行收集和训练,训练结束后将所有权重更新至模型,随后继续推进。为了缓解这种时间浪费问题,有一种方法被称为“一步离策略”(one step off policy)。具体而言,就是先完成推理,然后开始训练,在训练的同时,让另一组 CPU 继续进行推理。然而,即便如此,仍会存在一些空跑现象,因为数据本身的结束时间是无法预测的,这是大语言模型自回归特性所导致的。
除了推理部分,评估环节也是我们目前重点探索的领域。目前,我们的评估方式相对简单,主要基于 CPU 进行推理。然而,从行业发展趋势来看,随着应用场景的日益复杂,未来必然需要更多 GPU 的参与,因为我们需要模拟的场景将变得越来越复杂。目前,我们仅使用简单的规则来进行评分,这并不需要 GPU 的强大计算能力,CPU 就足以胜任。但展望未来,比如让模型玩游戏或在元宇宙中进行模拟,评估场景将需要同时使用 CPU 和 GPU,构建一个庞大的评估系统。
我简单列举了一些相关内容,这些其实都是为了让我们在超大规模强化学习中更贴近现实场景而做的前期准备。在评估部分,有两篇比较前沿的论文值得大家关注。第一篇是由 OpenAI 研究员姚顺宇撰写的《The Second Half》,其中提到,未来大语言模型的竞争将不再仅仅是预训练数据量的比拼,而是看谁能收集到更多现实交互中的经验。这些经验以及相应的演变过程,其实与我之前提到的是相对应的。如果大家认同我们的模型将越来越自主地与世界进行交互,那么下一步评估部分的需求肯定会不断增加。
我最早参与的开源社区项目名为 Open RLHF,当时我们的第一版叫 Open LLaMA2。那时 LLaMA2 刚刚推出,表现十分出色,我们觉得有必要打造一个类似的项目,以便国内社区能够有所借鉴和使用。因为当时确实缺乏相关的框架,大家都不清楚该如何入手,可以说是“不识庐山真面目”。于是,我们开发了一套非常简单的系统,它基于 Ray 调度框架,结合了当时在所有领域中效率最高且兼容性最好的调度方式。我们采用了 vLLM 作为推理引擎,DeepSpeed 作为训练引擎,并兼容了 Hugging Face 的整个生态系统,就这样启动了强化学习项目。直到后来,强化学习领域发展迅猛,字节跳动推出了一个名为 VeRL 的框架。VeRL 是基于一篇论文的开源实践,它融合了单控制器的核心优势以及多控制器的灵活性和效率。目前,这一领域生态良好,得到了广泛的应用。此外,还有 AReaL 框架,它侧重于性能优先的异步性,性能表现极为出色。其设计思路与手动拆分模型的方法有所不同,更多地采用了类似“货柜”的方式,将开源社区中的优质资源进行整合。