在深度学习领域,算力从来都是我们关心的一个重点,也是影响人工智能算法落地的一个关键因素。在很多应用场景里面,足够的算力支持可以显著加快算法从提出、训练到落地的效率,像是 OpenAI Five 的亿级参数量的使用,其每天的 GPU 计算用量在 770±50~820±50 PFlops/s。而在深度强化学习领域,随着应用场景从单智能体扩展到多智能体,算法的求解复杂度也呈现指数级增长,这也对算力要求提出了新的挑战,要求更多的计算资源能够被调用。特别是当所要处理的问题规模,涉及的智能体数量较多时,单机训练算法的可行度显著下降。
多智能体强化学习要解决群体智能相关的问题,其研究往往涉及群体内智能体之间的协作与对抗。目前已有众多现实任务应用涉及大规模智能体和复杂多样化交互,例如人群模拟、自动驾驶以及军事场景中的无人机集群控制:
人群模拟(http://gamma.cs.unc.edu/CompAgent/imgs/sitterson3.jpg)。
自动驾驶(https://github.com/huawei-noah/SMARTS/blob/master/docs/_static/smarts_envision.gif)。
无人机集群(https://defensesystems.com/-/media/GIG/Defense-Systems/Web/2015/JanFeb/CODEdrones.png)。
在算法方面,解决此类群体问题的一个重要的途径是基于群体的多智能体强化学习方法,也是 MALib 目前阶段的重点瞄准方向。基于群体的多智能体强化学习(Population-based MARL, PB-MARL)涉及多个策略集合交互问题,下图展示了通常意义上基于群体的多智能体强化学习算法的主要流程。PB-MARL 算法是结合了深度强化学习和动态种群选择方法(例如,博弈论,进化策略)以自动拓展策略集。PB-MARL 能够以此不断产生新的智能,因而在一些复杂任务上都取得了不错的效果,如实时决策游戏 Dota2 、StrarCraftII,以及纸牌任务 Leduc Poker。但在实际问题中,目前的多智能体强化学习算法与应用尚有差距,一个亟待解决的问题便是算法在大规模场景下的训练效率。由于种群算法内在耦合了多智能体算法,致使其训练过程对数据的需求量极大,因而也需要一个灵活、可扩展的训练框架来保证其有效性。
如何提高算法训练效率?对于依赖深度学习技术的很多领域,在面临任务规模变大,模型参数变多的情况下,都需要引入额外的技术来提高训练效率。分布式计算是一个最直接考虑的方法,通过多进程或者多机的方式,提高算法对计算资源的使用效率从而提升算法训练效率。而分布式技术在深度强化学习领域的应用,也催生了分布式深度强化学习这个领域的产生,其研究的重点包括计算框架的设计,以及大规模分布式强化学习算法的开发。
近年来,为了更好地进行大规模深度强化学习算法的训练,研究人员发展了更加专用的训练框架,通过在算法接口和系统设计上进行抽象,来支持更为复杂的实时数据采样、模型训练和推理需求。然而,分布式强化学习技术的发展似乎还未触及群体智能这一问题。实际上,现有分布式强化学习框架对于一般多智能体强化学习算法的分布式计算支持是完全不够的,像 RLlib、Sample-Factory、SEED RL 这样的典型分布式强化学习框架,在设计模式上都是将多智能体任务当作单智能体任务来处理,而忽略了多智能体算法之间的异构性。对于其他强调智能体交互的学习范式,如中心化训练(centralized training)、基于网络的分布式算法以及带有通信功能的协作性算法都没有进行显式支持,缺乏对应的统一接口来简化算法实现和训练流程。因此,研究人员想要进行更多类型多智能体强化学习算法的分布式训练探索时,往往需要进行大量额外的编码工作。而对于多智能体强化学习算法框架方面的发展,现有的工作更多聚焦在算法实现,并不太注重算法在大规模场景下的扩展性,或者更多的是专为某些场景设计的算法库,像 PyMARL、SMARTS 这样的框架,其作用更偏向于服务专门领域内的 benchmark,在算法类型上,大部分框架也做得并不全面。因此对于多智能体强化学习算法框架支持这一块,也一直是缺乏一套比较全面的框架来打通算法实现、训练和部署测试这一套流程。
我们认为以上两个发展现状的主要原因至少会有两点:(1)一个是因为多智能体算法本身在结构上具有的异构性较高,导致算法在接口实现的一致性和复用性上不是太高;(2)另一方面也是因为多智能体分布式算法依然处于早期探索阶段。此外,在分布式部署方面,现有分布式强化学习框架对 independent learning 算法的支持更友好,也更自然和直接。就像通常分布式技术在机器学习领域的应用一样,要解决目前分布式技术在大规模多智能体强化学习领域的更深层次的应用,算法和框架都必不可少,两者相辅相成。
在算法方面,一个重要的途径是基于群体的多智能体强化学习方法,也是 MALib 目前阶段所重点瞄准的方向。基于群体的多智能体强化学习(Population-based MARL, PB-MARL)涉及到多个策略集合交互问题,下图展示了通常意义上基于群体的多智能体强化学习算法的主要流程。PB-MARL 算法特点是结合了深度强化学习和动态种群选择方法(例如,博弈论,进化策略)来进行自动策略集扩展。通过这种方式,PB-MARL 能够不断产生新的智能,并且在解决一些复杂任务上都取得了不错的效果,如实时决策游戏 Dota2 、StrarCraftII,以及纸牌任务 Leduc Poker。
然而,也正是由于种群算法内在耦合了多智能体算法,导致这一类算法在训练过程对数据的需求极大,因此也需要一个灵活的、可扩展的训练框架来保证其有效性。
MALib框架图
为了应对这些需求,我们提出了 MALib,从三个方面提出了针对大规模群体多智能体强化学习算法的解决方案:(1)中心化任务调度:自动递进式生成训练任务,作业进程的半主动执行能够提高训练任务的并行度;(2)Actor-Evaluator-Learner 模型:解耦数据流,以满足多节点灵活的数据存储和分发;(3)从训练层面对多智能体强化学习进行抽象:尝试提高多智能体算法在不同训练模式之间的复用率,比如 DDPG 或者 DQN 可以很方便地嫁接到中心化训练模式中。
中心化任务调度模型 (c) 与以往分布式强化学习框架调度模型的对比:(a)完全分布式;(b)层级式
具体而言,MALib 的框架特点如下:
- 支持大规模基于种群的多智能体强化训练。星际争霸 2,Dota2,王者荣耀等游戏上超越人类顶尖水平的 AI,都得益于大规模基于种群的多智能体强化学习训练,但现在没有一个开源通用的框架支持相关研究与应用。针对这一场景,MALib 基于 Ray 的分布式执行框架,实现了一个灵活可自定义的多智能体强化学习并行训练框架,并且对基于种群的训练做了特别优化,不仅仅可以实现类似于星际争霸 2 中的 League 机制,也支持更灵活的 PSRO(策略空间应对预言机)等算法。同时,除了电子竞技游戏之外,MALib 也将提供体育(Google Football),自动驾驶等场景的支持。
- MALib 的采样吞吐量较现有多智能体强化学习框架大幅度提升。通过利用所提出的中心化任务分发模型,MALib 的吞吐量在相同 GPU 计算节点情况下,最大采样效率相较于 UC Berkeley RISELab 开发的著名通用框架 RLlib 可提升 15 倍,系统吞吐量较高度优化的 SOTA 框架 SampleFactory 提升近 100%;纯 CPU 环境 MALib 的吞吐量优势较进一步扩大至近 450%;同类算法训练速度较 DeepMind 开发的 open spiel 提升三倍以上。
- 最全的多智能体强化学习算法的支持。在训练范式层面,MALib 使用同步 / 异步,中心化 / 去中心化等模式,对不同类型的多智能体强化学习算法的训练进行抽象,并通过统一的 AgentInterface,实现了包括独立学习者,中心化训练去中心化执行,自对弈,策论空间应对预言机(PSRO)等算法。同时,对原先不支持并行异步训练的算法,也可以使用 MALib 进行并行采样与训练的加速。
部分训练效果
我们和一些现有的分布式强化学习框架进行了对比,以 MADDPG 为例,下图展示的是在 multi-agent particle environments 上使用不同并行程度训练 simple-spread 任务的学习曲线。
与 RLlib 对比训练 MADDPG 的效果。
对照框架是 RLlib。随着 worker 的数量增多,RLlib 的训练越来越不稳定,而 MALib 的效果一直表现稳定。包括更复杂的环境,比如 StarCraftII 的一些实验,我们对比 PyMARL 的实现,比较 QMIX 算法训练到胜率达到 80% 所花费的时间,MALib 有显著的效率提升(worker 数量都是设置成 32)。
与 PyMARL 在星际任务上的效率对比。
另一方面,我们比较关注的是训练过程的采样效率。我们也对比了与其他分布式强化学习框架的吞吐量对比,在多智体版本的 Atari 游戏上,MALib 在吞吐量和扩展性上都表现了不错的性能。
在星际及多智能体 Atari 任务上不同框架的吞吐量对比。
目前,我们的项目已经开源在 GitHub 上(https://github.com/sjtu-marl/malib),更多的功能正在积极开发中,欢迎使用并向我们提出宝贵的改进意见!同时如果有兴趣参与项目开发,欢迎联系我们!联系方式:ying.wen@sjtu.edu.cn。
团队介绍
本项目由上海交通大学与伦敦大学学院(UCL)联合的多智能体强化学习研究团队开发。MALib 项目主要由上海交通大学温颖助理教授指导下进行开发,核心开发成员包括上海交通大学三年级博士生周铭,ACM 班大四本科生万梓煜,一年级博士生王翰竟,访问学者温睦宁,ACM 班大三本科生吴润哲,并得到上海交通大学张伟楠副教授和伦敦大学学院的杨耀东博士、汪军教授的联合指导。
团队长期致力于从理论算法、系统与应用三个层面入手,针对开放、真实、动态的多智能场景下的智能决策进行研究。理论团队核心成员在人工智能和机器学习顶会发表多智能体强化学习相关论文共计五十余篇,并获得过 CoRL 2020 最佳系统论文、AAMAS 2021 Blue Sky Track 最佳论文奖。系统方面,除了面向多智能体强化学习种群训练的系统 MALib,本团队研发 SMARTS、CityFlow、MAgent 等大规模智能体强化学习仿真引擎,累计在 Github 上获得了超过 2000 加星。此外,团队在游戏、自动驾驶、搜索与推荐等场景下具有强化学习技术的真实应用落地的经验。