案例分享 | 分布式强化学习在网易大型 MMO 游戏中的应用

2020 年 8 月 5 日 TensorFlow

文 / 南北,网易伏羲实验室



业务场景概要

游戏场景

《逆水寒》是一款武侠题材的端游 MMO (Massively Multiplayer Online) 大作,玩家扮演古代侠客,在游戏世界中与其它玩家、NPC 进行交互,体验厚重的历史与多彩的江湖。


本次案例分享的场景,是《逆水寒》中的一个核心玩法“流派竞武”。“流派竞武”是单人 PK 玩法,玩家争夺排行榜名次,进攻方发起挑战,防守方无法应战时由机器人代为出战。传统机器人基于规则编写,一方面开发起来费时费力,另一方面水平有限难以满足玩家需要。而使用强化学习训练出来的 RLAI 机器人进行战斗,具有玩家适配、风格多样、水平高超、难度可控等特点。玩家角色的可选技能有几十个,战斗中携带的技能只有十个,实际玩家技能搭配的排列组合非常多,RLAI 机器人在各种技能组合下都有对应的策略,差异明显的搭配下也呈现不同的战斗风格,这是传统规则 AI 无法实现的。


Figure 1 逆水寒 流派竞武玩法示意


AI 建模
在该场景下,对强化学习算法而言,主要存在以下两个问题:
  1. 地图较大,AI 需要靠近对手后才能进攻并获得奖赏,存在探索困难的问题
  2. 随机技能组合,动作组合数共有  =44352种,AI 需学会在不同技能组合下存在的不同套路打法。


针对第一个问题,我们采用了课程学习的方式,对第二个问题,我们将是否携带了技能作为模型特征编码至网络原始输入状态中。


出于对训练速度的要求,未采用直接的图像输入,输入状态中的信息是通过游戏内置接口获得。

Figure 2 随机技能挑选示意


输入状态主要包含:
  • AI 自身及对手相对位置(包括距离及角度)
  • 表示当前可用动作的 0-1 向量
  • 表示当前装备技能的 0-1 向量
  • 状态信息(自身及对手的当前属性状态以及Buff信息)


动作主要包含:
  • 位移相关:移动、跳、躲避等
  • 技能相关(共 10 个)


奖励函数主要包括:
  • 胜/负,稀疏,仅在一局游戏结束后才给
  • 与 HP 有关的 Reward,包括进攻防守等,稠密


神经网络方面,我们使用的是简单的三层全连接网络。为了加速训练,减少无效动作的探索,我们将状态中的 legal action 信息作为 mask,在网络输出动作前将无效动作进行过滤。



训练框架及环境介绍

单机及多机训练构架

为了对比单机训练和分布式训练方式在本文所述的场景下的区别,我们分别配置了以下两种训练环境:


其中,Worker 模块和 Learner 模块上均会维护一套 TensorFlow 的神经网络计算图,区别在于 Worker 上的计算图仅进行推断而不进行训练,计算梯度和反向传播部分操作均在 Learner 模块上进行。Worker 模块在此处负责与游戏模块进行交互,收集训练样本。为了增加样本获取速率,我们会在单个节点上启动多个 Worker 模块。为了不阻塞 Learner 的训练,我们将模型分发模块独立出来,做成了 Router,专门用于分发模型到 Worker 模块。

Figure 3 单机训练构架


与单机训练模式不同的是,在分布式训练配置下,节点被区分为 Worker 节点与 Learner 节点。Worker 节点仅负责与游戏模块进行交互获取训练数据,Learner 节点仅负责模型训练。节点间的模型分发由各节点上的 Router 模块进行转发。

Figure 4 分布式训练构架


核心代码
网络定义部分
由于框架支持通过配置文件自动生成网络结构,此处对 TensorFlow 定义网络部分做了一定的包装
  • 创建图,Saver 以及对应的配置参数


  • 具体网络结构分步构建


  • 网络输入部分的 PlaceHolder 构建


  • 网络中间层构建方式


Learner 模块训练部分

核心其实就是一个循环,训练后把模型分发给 Worker 模块


Worker 模块

核心逻辑为将交互的得到的训练数据发送给 Learner 模块,更新 Learner 模块发送来的模型



实验设置和结果

实验设置

本次实验对比了单机模式下及分布式(3 节点)模式下训练逆水寒流派竟武 1v1 对战的场景。实验通过对比达到相同测试指标下所消耗的时间差异,来评判分布式训练方式相对于单机的提升效果。


硬件及框架配置:
  • 单个节点硬件配置:

    • CPU:Intel Xeon Gold 6266C@3GHz

    • 内存:192GB

  • 单机模式下,框架配置的Worker数量为 40 个

  • 分布式模式下,使用四个节点,其中三个为 Worker 节点,每个节点上配置 40 个 Worker(共 120 个Worker),剩余的一个节点为 Learner 节点


算法配置:
  • 使用算法: IMPALA [1]
  • Batch Size: 256
  • Learning Rate: 2.5e-4
  • # 优化器参数
  • Optimizer: Adam
  • Adam Beta_1:0.9
  • Adam Beta_2: 0.999
  • Adam Epsilon 1.0e-8
  • # IMPALA算法计算V-Trace参数
  • Rho: 1.0
  • C: 1.0


游戏配置:
  • 训练角色:血河(近战角色)
  • 训练方式:RLAI vs 内置流程图 AI


测试评估方式:双方均配置随机血量/随机技能组合情况下,测试 100 局对战后各项指标取平均值(采用此种方式进行评估是为了能够综合评价 RLAI 在不同情况下对于内置流程图AI的测试指标情况,如:出生时血量较对手少,技能组合较对手差等劣势情况)。


结果分析

首先,我们对比了不同配置下,训练样本产生速率及消耗速率的差异,从图上看,分布式配置下,样本产生和消耗速率的提升基本与 Worker 个数增加成正比。


此外,我们还对比了游戏中相关的指标(包括测试胜率,技能失败率,战斗结束剩余血量比例,平均死亡率);可以看出,达到相同的指标,分布式训练耗时差不多是原有 40% 左右。

Figure 5 测试胜率对比


Figure 6 技能失败率对比


Figure 7 战斗结束胜率血量百分比对比


Figure 8 平均战斗结束死亡率对比


由此,可以说明借助 TensorFlow 实现的分布式强化学习训练方案,在训练逆水寒 1v1 的 RLAI 过程中,能够较为有效的缩短训练时长,同时模型依旧保持较高的水准



总结

本文以逆水寒游戏场景为例,介绍了网易伏羲实验室如何使用 TensorFlow 实现分布式训练,生产用于线上使用的 RL-GameAI。上线后,AI 对战玩家的胜率可以达到 90% 以上,其效果已接近人类顶尖高手操作水平。


后续我们将继续探索,将前沿技术、先进算法、TensorFlow 框架与实际游戏工业场景相结合,更高效优质的生产游戏 AI,提供人工智能在游戏场景中的解决方案。



— 参考文献 —

[1]  Espeholt, Lasse, et al. "Impala: Scalable distributed deep-rl with importance weighted actor-learner architectures." arXiv preprint arXiv:1802.01561 (2018).

— 推荐阅读 —



加入案例分享,请点击 “阅读原文” 填写您的用例与相关信息,我们会尽快与你联系。


登录查看更多
3

相关内容

【康奈尔】最新《强化学习基础》CS 6789课程
专知会员服务
68+阅读 · 2020年9月27日
【ICML2020】对比多视角表示学习
专知会员服务
53+阅读 · 2020年6月28日
多智能体深度强化学习的若干关键科学问题
专知会员服务
190+阅读 · 2020年5月24日
《强化学习》简介小册,24页pdf
专知会员服务
274+阅读 · 2020年4月19日
【强化学习】深度强化学习初学者指南
专知会员服务
182+阅读 · 2019年12月14日
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
119+阅读 · 2019年9月24日
无人机集群对抗研究的关键问题
无人机
56+阅读 · 2018年9月16日
零基础搞懂强化学习?这份视频攻略不算迟
AI研习社
6+阅读 · 2018年4月25日
word2vec在工业界的应用场景
全球人工智能
5+阅读 · 2018年1月7日
迁移学习在深度学习中的应用
专知
23+阅读 · 2017年12月24日
【强化学习】强化学习+深度学习=人工智能
产业智能官
54+阅读 · 2017年8月11日
Generalization and Regularization in DQN
Arxiv
6+阅读 · 2019年1月30日
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
相关VIP内容
【康奈尔】最新《强化学习基础》CS 6789课程
专知会员服务
68+阅读 · 2020年9月27日
【ICML2020】对比多视角表示学习
专知会员服务
53+阅读 · 2020年6月28日
多智能体深度强化学习的若干关键科学问题
专知会员服务
190+阅读 · 2020年5月24日
《强化学习》简介小册,24页pdf
专知会员服务
274+阅读 · 2020年4月19日
【强化学习】深度强化学习初学者指南
专知会员服务
182+阅读 · 2019年12月14日
神经网络与深度学习,复旦大学邱锡鹏老师
专知会员服务
119+阅读 · 2019年9月24日
Top
微信扫码咨询专知VIP会员