网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了( 二 )


左边是示例,这里面这个东西跟行为树很像 。它里面每个节点有状态,有颜色代表不同的转移,跟行为树整体上比较类似 。支持一些异步的模式,这个是我们现在网易这边开发游戏很常用的一套工具 。
网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了
文章图片
第一个问题,他们开发好了很多AI,我们怎么能把强化学习结合进去,它也有很多其他逻辑在里面,不可能从头用强化学习 。我们的想法是,把强化学习的技术跟我们流程图工具结合起来,强化学习里加上两种新的节点,叫SendState和SendReward 。
这是一个真实游戏里的流程图,我们截出来,结合强化学习来跑 。这是游戏很复杂的时候——大型的吃鸡游戏,可能有很多AI,AI怎么跑毒,碰到人怎么打,里面有很多逻辑,强化学习跟它怎么结合呢?
因为强化学习技术本身并没有那么神奇,好像什么场景都能解决,它对计算量要求很高,跟它的结合点,是让它解决一些强化学习比较适合解决的问题,或者传统AI不太好做的问题 。比如说碰到对手怎么跟它打,这个事情AI不太好写——游戏比较复杂,技能比较多,打起来套路很多,你就不知道怎么应对对手的套路 。
针对这个我们把一部分功能替换成了强化学习的函数,对它来说调了一个接口 。我把当前的游戏信息发给你,你只要告诉我该放什么技能就行了,其他的我自己不管 。相当于我写了一段跟战斗相关的AI,但这个AI并不是他自己写的,而是交给我们强化学习训练出来的 。剩下的跑毒也好,大地图里面捡东西也好,这种不去训练 。因为这种逻辑很好写,没必要交给我们来做 。我们是通过这样的方式 。来结合传统的规则和强化学习的 。
另外,刚才讲了强化学习的技术门槛好像有点高,很多传统的写AI的不太懂 。我们希望开发一套东西能让这个强化学习变得简单一点,RLEase这套框架最重要的是简化环境的接入流程,能让游戏接入成本降低,降低强化学习的门槛,特别是让AI研究人员降低大规模强化学习的门槛,目前这些特性先不细讲了 。对于AI研究员来说我们提供了标准的接口,这个技术在日新月异地发展,很多时候有新的算法和新的方法尝试 。我们也是这套框架里面添加了标准的接口,这个框架本身是有很多特性,对于AI研究员来说只要新写一个算法,这些特性都已经集成好了 。
网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了
文章图片
我们这套RLEase整体上是这样,跟传统深度学习有一点不一样,是大规模的计算,对计算支援要求比较高,对于框架要求也比较高 。一个是面向游戏开发团队,能降低他们的难度,另外能让AI研究人员降低开发新算法的难度 。让所有的节点通信都交给我们底层通信来做 。
再上层一点就是我们深度学习的能力,另外就是深度学习,这些都是在我们框架里面比较好的支持 。另外我们在上层,为游戏开发团队来说提供了一个ISDK 。ISDK就是给游戏团队用的,用了这套SDK可以跑运算环境,他只要拿到上层的SDK就可以了 。对于AI研究人员来说,只需要关注算法和深度学习框架 。
网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了
文章图片
【网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了】我刚才讲了怎么支持这种能力,简单介绍一下我们这种分布式结构里面,精简的话会有几种概念 。第一种讲了三重类型的节点,一种是Leanre,模型训练 。第二是Worer,模型推心 。第三是Gome,游戏 (环境) 。这样分离的方式支持分布式,每个节点可以放在不同物理的服务器上的 。另外一个是所有节点之间都会有IBC通信,比如说一些高性能的模型分发相关的功能,能支撑我们把这个训练框架的规模提高到上千甚至上万这个级别 。
听了上半场觉得这东西好像特别费资源,我们自己做下来,对于很多场景,如果不想要追求职业选手这样水平的话,并不需要那么高,所以也没有那么大的硬件门槛 。
网易|网易的黑科技:以前策划写三四周AI,现在放那儿自己跑就行了
文章图片
讲个例子,我们上半年给《逆水寒》做五子棋 。但是玩家跟玩家之间玩五子棋的人不多,再有一点,玩家输了不太爽,有受挫感 。我们当时没有做围棋的的项目,我们从头开始集成算法框架 。在RLEase里面简单实现了几个模块,标准定了几个接口 。这个接口实现好了之后,我们的AlphaZero已经成功了,它自带大规模分布式的能力,我们可以做到好几个节点同时跑,大概跑到23000的样子,这个五子棋的AI就已经比市面上找到的所有传统搜索AI明显要强 。游戏里面不需要那么强的AI,我们为什么做这么强的AI,因为我们发现做了强AI后再做简单AI非常容易 。
另外一个是我们提供的SRA,常见的开发脚本,一般来说,传统端游里面会有C++,现在手游可能在集成脚本上的Lua来做 。为了让游戏方用我们的SDK,我们提供了多语言版本的支持 。举个例子,这个SDK是给研究员用的 。怎么用呢?你在游戏里面Input一下SDK,在你想要做请求,比如说这个AI写不清楚了,想交给AI做,这个时候插一个函数就行了 。Python这个游戏自己能学出来到底该怎么打 。