文 / 南北,网易伏羲实验室
业务场景概要
《逆水寒》是一款武侠题材的端游 MMO (Massively Multiplayer Online) 大作,玩家扮演古代侠客,在游戏世界中与其它玩家、NPC 进行交互,体验厚重的历史与多彩的江湖。
本次案例分享的场景,是《逆水寒》中的一个核心玩法“流派竞武”。“流派竞武”是单人 PK 玩法,玩家争夺排行榜名次,进攻方发起挑战,防守方无法应战时由机器人代为出战。传统机器人基于规则编写,一方面开发起来费时费力,另一方面水平有限难以满足玩家需要。而使用强化学习训练出来的 RLAI 机器人进行战斗,具有玩家适配、风格多样、水平高超、难度可控等特点。玩家角色的可选技能有几十个,战斗中携带的技能只有十个,实际玩家技能搭配的排列组合非常多,RLAI 机器人在各种技能组合下都有对应的策略,差异明显的搭配下也呈现不同的战斗风格,这是传统规则 AI 无法实现的。
随机技能组合,动作组合数共有 =44352种,AI 需学会在不同技能组合下存在的不同套路打法。
针对第一个问题,我们采用了课程学习的方式,对第二个问题,我们将是否携带了技能作为模型特征编码至网络原始输入状态中。
出于对训练速度的要求,未采用直接的图像输入,输入状态中的信息是通过游戏内置接口获得。
Figure 2 随机技能挑选示意
状态信息(自身及对手的当前属性状态以及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 分布式训练构架
创建图,Saver 以及对应的配置参数
具体网络结构分步构建
网络输入部分的 PlaceHolder 构建
网络中间层构建方式
核心其实就是一个循环,训练后把模型分发给 Worker 模块
核心逻辑为将交互的得到的训练数据发送给 Learner 模块,更新 Learner 模块发送来的模型
实验设置和结果
本次实验对比了单机模式下及分布式(3 节点)模式下训练逆水寒流派竟武 1v1 对战的场景。实验通过对比达到相同测试指标下所消耗的时间差异,来评判分布式训练方式相对于单机的提升效果。
单个节点硬件配置:
CPU:Intel Xeon Gold 6266C@3GHz
内存:192GB
单机模式下,框架配置的Worker数量为 40 个
分布式模式下,使用四个节点,其中三个为 Worker 节点,每个节点上配置 40 个 Worker(共 120 个Worker),剩余的一个节点为 Learner 节点
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,提供人工智能在游戏场景中的解决方案。
— 参考文献 —
加入案例分享,请点击 “阅读原文” 填写您的用例与相关信息,我们会尽快与你联系。