当前您所在的位置:首页>新闻中心>行业动态>

Unity ML-Agents Toolkit v0.7:跨平台推理功能!

发布时间:2019/06/18 浏览量:930

前言:我们对ML-Agents Toolkit进行了一项重大更新,让开发人员可以使用支持跨平台推理的新功能库Unity Inference Engine(推理引擎)。此次更新使开发人员能在Unity支持的所有平台上运行由ML-Agents Toolkit制作的神经网络模型。

 

本文将介绍Unity Inference Engine和ML-Agents Toolkit工作流程的变化。我们也会展示由WhatUp Games开发的游戏-《Jelly Bowl》是如何使用Unity Inference Engine,实现由ML-Agents Toolkit训练的角色行为,并将这些行为应用于Xbox平台的游戏中。

 

 

Unity ML-Agents Toolkit往往被游戏开发人员用来训练可玩角色和非玩家角色的行为。通过在Unity中指定高级奖励信号和演示来实现训练角色行为的功能,可以帮助开发人员使用比编写脚本更稳定省时的方法设计角色行为。

 

ML-Agents Toolkit制作的角色行为会在TensorFlow生成的神经网络模型文件中进行编码。在ML-Agents Toolkit v0.6中,我们利用第三方插件TensorFlowSharp来让开发者运行模型。然而,该插件仅支持Windows、Linux、Mac、iOS和Android 5个平台,因此我们无法对Unity支持的所有20多个平台都进行测试。

 

现在这种情况改变了,ML-Agents Toolkit使用Unity Inference Engine来部署ML-Agents Toolkit训练的神经网络。Unity Inference Engine代表着实现快捷,高效和可靠的跨平台神经网络推理功能的巨大飞跃。

 

Unity Inference Engine推理引擎

 

 我们的核心目标之一是在Unity中实现真正高效跨平台的推理功能,我们需要满足三个特点:

 

•推理功能必须支持Unity所支持的20多个平台。包括:Web,主机和移动平台等。

我们必须提供对众多厂商GPU的支持,这对于执行大型神经网络至关重要。

我们必须提供对Unity引擎和编辑器的最佳集成。

 

例如,我们能够在游戏中渲染图像,并将其直接传入推理引擎,而不必使用额外的内存副本或GPU停顿。

 

虽然现在已经有很多热门的推理功能库,例如Tensorflow Lite,WinML和CoreML,但它们都无法提供我们需要的支持水平。因此我们开发了自己的推理解决方案,称为Unity Inference Engine推理引擎。

 

Unity Inference Engine是Unity Labs研究团队的成果。它基于IL2CPP,Burst和Unity计算着色器等跨平台技术,这将让我们能够在Unity所支持的平台上提供出色的性能,同时保持很小的大小。

 

Unity Inference Engine可以在CPU或具有计算着色器功能的GPU上运行神经网络,你可以尝试使用CPU或GPU来满足自己的工作量和延迟要求。对于使用ML-Agents Toolkit训练的模型而言,如果它们不依赖视觉观测并会直接影响游戏的话,CPU将是最佳选择。

 

Unity Inference Engine随着ML-Agents Toolkit一同推出。未来随着项目的发展,该工具将提供独立的Unity资源包,以支持其它深度学习应用程序。

 

ML-Agents Toolkit的Unity Inference Engine会为Unity用户提供大量改进,包含改进的安装体验,强化的编辑器工作流程和更小的版本大小,而且可以部署到Unity支持的所有平台。

 

改进的工作流程和跨平台支持

在ML-Agents Toolkit早期版本中,用户需要下载包含TensorFlowSharp库的独立Unity资源包,才能运行Unity中的神经网络模型。

 

ML-Agents Toolkit v0.7会默认包含Unity Inference Engine,用户不必下载或集成额外的库,ML-Agents Toolkit现在可以在Unity支持的平台上直接运行模型。

 

它也实现了Android平台的IL2CPP兼容性,从而使我们更进一步支持Google新的64位要求。我们分别PC、Mac & Linux Standalone、Android和iOS平台上测试了Unity Inference Engine。

 

Unity Inference Engine可以在Unity编辑器内工作,现在体验示例场景只需按下Play按钮即可。

 

 

在新版ML-Agents Toolkit中,训练过程会生成一种新的.nn文件格式,而不是原来的.bytes文件。新格式兼容Unity Inference Engine,能够在层级窗口中轻松筛选资源。我们还为.nn模型文件提供了一个易于识别的图标。

 

 

在Learning Brain检视窗口中,我们可以指定使用CPU或GPU来运行推理功能。请注意,对于小型模型,CPU选项的运行速度更快,因为CPU上会保留数据,而GPU选项常用于大型模型,例如使用视觉观测的模型。

 

 

另一项改进是Unity Inference Engine的大小。相对于TensorFlowSharp的二进制大小,Unity Inference Engine非常小,这样使它可以更轻松地部署到移动设备。

 

例如,在iOS系统构建3D平衡小球环境时,使用TensoFlowSharp需要135 MB的构建大小,而使用Unity Inference Engine只需83.5 MB。

 

 

 

Jelly Bowl演示

在去年10月的Unite LA上,我们演示了由What Up Games开发的Xbox游戏《Jelly Bowl》。

 

在游戏中每个玩家会和另外5名玩家进行对战,每个玩家的目标是尽可能多的收集能量水晶,在时间结束前把它们带回各自的基地,每回合结束时基地内能量水晶最多的玩家获胜。如果玩家被其他玩家撞到,他们会掉落所有能量水晶,让其他玩家有机会夺取。

 

 

《Jelly Bowl》使用ML-Agents Toolkit训练代理行为来代替真实玩家的行为,这样实现了游戏的单人模式,让人类玩家与训练代理进行对抗。

 

Unity Inference Engine随后用来在Xbox平台上运行训练代理的行为。对What Up Games而言,使用训练代理不仅实现起来更轻松,而且会得到更逼真的行为,从而更好地适应游戏环境。此外,使用Unity Inference Engine是在Xbox平台上运行神经网络模型的唯一支持方法。

 

小结

 

Unity ML-Agents Toolkit v0.7实现了提供跨平台支持的飞跃,使开发者可以把训练代理加入到自己的游戏中。

 

北京哲想软件有限公司