Unity暴林超:Unity引擎在AIGC技术有哪些新趋势与展望?
【ashkeling专稿,未经授权不得转载!】
ashkeling报道/ 6月8日,Unity技术开放日(Unity Open Day)正式在北京举办,会上来自Unity的技术专家、完美世界《ob电竞》客户端负责人、《ob电竞》技术专家、FunPlus 引擎技术负责人等嘉宾,将带来关于游戏管线渲染,性能优化、技术落地等实用技术分享。
在活动中,Unity中国AI技术负责人暴林超以“趋势与展望,生成式AI技术助力Unity创作”为题进行了精彩的分享。
以下是演讲实录:
暴林超:各位来宾大家上午好,我是来自Unity中国的暴林超,我现在负责AI相关的一些技术研发。生成式AI技术最近受到了社会非常广泛的关注,今天我们就借这个机会来跟广大的Unity开发者来聊一聊这个话题。当然,因为我本人刚加入Unity中国,所以今天主要跟大家探讨关于未来我们的一些规划和一些展望。
那我们今天就先从最火热的,两个生成式AI技术的发展历程开始聊起,自从2022年4月份DALL-E 2、就是Open AI绘画技术的发布,到今年现在整整一年期间,可以说每天生成式AI技术的新闻都是狂轰乱炸。
我们可以看到比较有标志性的几个事件,分别是在2022年8月Stable Diffusion发布之后,社区基本上是爆发式的增长,然后直到2022年11月的ChatGPT发布,大语言模型也受到了非常广泛的关注,到2023年、短短的一两个月时间,ChatGPT用户就过亿。然后,2023年2月的这个midjourney、一个只有11个人的小公司,用户量已经过千万。最近ChatGPT的Plugins已经开放了,大家可以在他们的官网上去测试,会发现通过大语言模型可以很便捷的去连接其他的工具,包括去订机票、订餐馆、订其他的一些生活内容。
那我们先来看一下这个这两门技术的核心原理大概是什么样子,首先是Stable Diffusion的AI绘画,这里边其实分为三个不同的模型,第一个是用了一个预训练好的Clip的Text Encoder,第二部分是一个真正的Stable Diffusion扩散模型本身的一个模型,第三部分是一个图像的一个解码器。
在这个模型里面的原理,它最核心的其实是这两个模块,其中一个也就是上面这个所谓的Unet,在这里面是真正做Stable Diffusion,在隐空间去做扩散去噪迭代的一个过程,下面这个图就是把隐空间最后还原成一个真实的图像。
在Stable Diffusion里面,这几个模型分别的参数量,我们在这里面大概有一个summarize去了解一下,比如其中最核心的就是中间这个模块Stable Diffusion的模型参数量其实只有8.6亿左右,在大语言模型出来之后,可能会觉得这个参数量不高,但事实上,当时在图像生成领域,它出来之后其实也是相当大的一个模型。
这里面比较重要的就是可以关注到一个数据,它用的训练数据,就是LAION-5B的子集,其实用到的数据大概是有20多亿的图像和文本配对的数据。
然后再分别去看一下,上边那个Clip Encoder和最下面这个Auto encoder这两个参数量其实也不是很大,但这个和大语言模型相比参数量小的原因是因为,在图像生成里面,其实会有很多的冗余信息,可以去节约它的参数量。
我们再来看看大语言模型的工作原理,首先是预训练模型,也就是GPT它训练的过程。GPT训练的过程其实相对非常简单,可以看左侧这种图,它会用很多已有数据的一些语料,然后来把它生成很多的Example,其中每一条就是一个Example,每一个Example其实就是根据前面的一些文本,来生成下边的一个单词,通过让这个模型见到非常多这样的数据,他就可以去、每次根据前面的一些输入词预测下一个词。
然后再看右侧,推理的过程中其实它是逐渐一个词一个词的蹦出来,也就是说,每次它预测下一个词,然后把下一个词和前面的词一起送进去,然后再预测下下一个词。所以它事实上,每次生成一句话,他每一个单词出来都需要去推理一次。当然,这个过程中其实有很多计算量是可以在里面预存储起来,来节约这个推理的过程。
我们再看看GPT 3再到Chat GPT的一个发展,这里面最重要的一步就叫做意图对齐的一个训练。意图对齐的训练就是分为右侧的这三个步骤。
第一个SFT就是有监督的微调,第二步RM就是reward model的训练,第三步再经过强化学习的一个训练,整个现在业界公认的一个理论也就是左侧的无监督训练,也就是上页GPT的训练里面,他会把大量的知识都学到这个大模型里边,但是右侧的这些SFT这些步骤其实,是为了让大语言模型更好的去表达自己。
我们也来看一下这里面的一些参数量和一些数据的summarize。首先我们可以看最早的GPT模型其实参数量也就只有1亿左右,直到其实在GPT 3的时候,它开始有1500亿的参数量,当时在NLP领域里已经引起了很广泛的关注,但是因为还没有直接对大众开放的接口,所以还没有出圈。直到Chat GPT 2022年11月份发布了之后,基本上整个就出圈了,整个社会就发现这个模型好像跟之前所有的对话模型相比,像忽然有了智商,也就是之前所有的AI bot去跟它聊可能就会感觉有点傻傻的,很难去理解用户的意图。Chat GPT最大的一个特点,就是基本上它对于你用户意图的理解,可以做到非常准确,这时候大家就觉得它好像一个人一样有了智商,可以和它去交互。
这里边我们可以注意到,其实使用训练的数据量从GPT 3开始,GPT 3其实是用了一个非常大的数据量叫45T的纯文本数据量,当然它有各种方式最后是过滤到了600G的数据去训练,直到这个Instruct的GPT,也就是Chat GPT前面实验性的一个版本,对外有公开论文的一个解释,这时候他用了一个标注的数据,就大概只有几万条这样对话的一些数据做监督。但是Chat GPT真正上线之后,据说也是用了更多的标注数据,具体的数据量没有公布。
包括这个参数量,到最新的、这个最强大的GPT 4模型,很多业界猜测可能有达到万亿级别的参数,但是具体是多少他们官方也没有公布,所以也只是一个猜测。
从这两个技术来看的话,我们可以看到AI技术的发展趋势,也就是从以前比如说,在每一个专门的领域去训练一个专门的模型,去做一领域专用AI小模型这样的技术,到现在基本上不管是从学术研究上,还是从业界,大家对AI技术的关注度上都逐渐变成了一个生成式AI大模型,也就是像右侧,最典型的形式就是刚刚讲的这两种,Stable Diffusion和Chat GPT这种通过Text Prompts,通过大模型来生成,不管是图片也好还是文本也好,或者是像用plugins这种方式去调用第三方的一些工具。
当然如果真正要做到在专用的某一个领域有更好的表现,其实我们对一些通用的AI大模型还是要做一些专门化的训练。比如说这里面展示了一个叫LoRA的技术,因为大模型本身,如果再想让它专用化、在专门的领域去做一些训练,或者一些微调,其实会比较困难一些,但是现在有一个比较简单的技术,就是在原来大模型不动的基础上,我们叠加一部分小的参数,这部分小的参数可以像一个LoRA,像一个外挂一样加在上边,然后我们只训练LoRA这部分的参数,以此来把这个大模型运用到具体的领域去。
然后我们来看一下,我认为这个大模型,尤其是以Chat GPT这个大语言模型为主的技术,对于我们整个社会的一些影响,其实从两个方面是非常大的。
第一个其实它是一种重塑人机交互方式的一个技术,也就是以前比如要通过手指在手机上点点点的这种交互方式,可能未来都会变成你可以很自然的去跟它交流,用自然语言的方式去做一些交互,当然不是所有的应用都是非常适合用这种交互方式,但是可以想象,有很大一部分应用是可以通过这种方式让,原有的交互突破一些限制。比如说原来的一些菜单可能只能有一些有限制的选项,如果通过这种自然语言交互的话,就可以让这种交互更自由一些。
然后第二个就是右边的这个,我们展示了一个GitHub Copilot以及这个Microsoft Copilot他们的一些应用,其实在目前关于文本的创作上,包括写代码上边,其实是有明显提升生产效率的一个作用。
那我们来看一下,我们在Unity这边我们对于数据这块,因为我们是3D可交互的实时引擎,所以我们是专注于在3D数据这一块的一些应用,但是其实前边我们提到的,不管是文本还是图像。1D和2D的这种数据来看,把它拓展到3D,其实有很多很多难的事。
比如说,第一个最大的难点就是3D数据的表示是有非常多的选择,如果是把2D数据推广到3D的话,其实最简单的一个推广是体素的数据表达。但是这种体素的数据表达并不是很高效,在我们Unity开发里面最常见的还是像Mesh这种表示方式会更高效一些,但Mesh这种表达相对于这种Greet型数据,它不是很规则,所以学习起来、数据的一致性、整理上都会有很多的问题。
所以如果是在3D数据的这个生成式AI模型里去看的话,它选择会有更多,比如说到底是用体素,还是点云、Mesh、隐式场或者是SDF,不同的表达具有不同的优缺点,现在学术界每个方向、每个表达方式上都会有很多的论文和新的技术出来,但是目前其实能达到我们真正是生产可用的这种质量,其实还有一定的差距。
第二个3D数据的特点就是它呈现的依赖会非常多,所谓呈现的依赖就是我们需要在引擎里面渲染、呈现出来一个比较好的效果,它不但取决于模型本身,还取决于贴图、材质、Shader或者是一些特效上面。这种情况就给我们3D的AIGC生成带来了很多的困难。
最后一个就是在3D高质量数据上面,其实我们相对而言还是比较稀缺的,可以看到前面我们分享的那个不管是图片生成还是文本生成,用到的数据量都是巨大的,图片,现在是50亿的这种规模,但目前3D这种公开的数据里面,其实量级是远远达不到的。
接下来看一下,不同的3D数据,我们怎样去用AIGC的方式去生成,其实会有不同的一些路径。比如因为3D数据本身是有数据稀缺性的,那么我们有没有办法通过2D的生成式AI,也就是通过现在相对比较成熟的2D图片生成技术,来去提升这种3D模型生成的质量。其实现在这也是业界发展最快的一个领域,也就是通过一个可微分渲染的技术,把3D降维成2D,但是2D这块我们就可以加上一些2D的生成式AI模型作为一个监督。比如说用一些Diffusion的一些loss,或者是用clip的一些loss去对它做监督。
但是现在这种方式,还是需要通过这种监督把这个loss反传回去来训练这个模型。这种方式现在很多都是要在单个模型上进行一些训练,所以最近的应该是清华大学团队他们发布的一个ProlificDreamer那个技术,一次的推理可能需要几个小时的推理时间,其实它本身是一个训练和优化的一个过程,会比较慢。当然,这个领域现在发展的非常快,我们也是在持续的去关注。
那么现在相对比较成熟的方向是在材质和贴图的生成上,这个其实我们可以直接把2D的一些生成式AI的模型应用到这方面来,我们现在也在做一些类似的探索,能不能直接用一些描述来直接生成一些贴图和材质,当然我们只需要生成一些这样一个材质所需要的几张贴图,然后同时把这个Shader连起来,就可以达到这种比较好的效果。
另外一个比较复杂的就是3D场景的生成,我们现在看下来的话,短期可能比较可控的一种方案是通过这种程序化生成的桥梁,也就是通过文本或者是一些用户的sketch,或者是照片等这种比较便捷的输入,来生成这个程序化生成所需要的一些输入。
比如说一些场景的布局,还有一些组合的规则等这些比较适合于大模型去生成的一些简单的数据格式。但是这种数据格式通过程序化生成工具的解析之后,我们可以把已有的一些资产把它拼成一个更完整的场景。
下面就是说到最重要的一个,就是在数字人AIGC方面的技术路径,数字人是一个非常复杂的技术综合体,它不是简单的就生成一个模型、加贴图就完事,如果真正生成可用的模型,我们需要模型本身,然后还需要它有一些绑定的数据,以及骨骼的一些动画数据,头发和布料的解算和物理的一些仿真,但是我们如果把它拆解开,我们可以看到每一个领域,在学术界也好、现在业界也好,都有逐渐的发展。
举一个例子,前一段时间上海科技大学他们发布了一个直接通过文本描述,可以生成虚拟人头部的模型,我们现在也在跟他们积极的合作去推进这个技术在Unity里面的应用。然后包括通过一些Diffusion model的方式来通过文本生成动作的一些研究。
最后还有一个我们不得不提的、新技术的应用,也就是NeRF相关的应用,也就是隐式场和神经网络渲染。这种技术它是通过比如说文本输入也好,或者是图片输入也好,把它生成一个隐式场,然后用户去交互的时候,再通过不同视角去看的时候,可以实时的去inference出来,不同的视角应该去怎么渲染,我们可以看到右侧小的神经网络这一部分,把它放到引擎里面实时的去做推理,这种技术有一个最大的好处就是,如果我们要拍摄一个真实的物体,把它放到我们的引擎里来的话,他不需要去做传统这种建模的整个流程。只需要是把这个照片拍到,或者视频拍摄到以后,我们训练一个隐式场,然后把这个隐式场模型直接放到这个引擎里,然后再通过引擎的实时推理去渲染出来,用神经网络推理的方式去渲染出来每一个视角不同的效果,而这个这个方向,我们也是在积极的去探索。
总结一下,我们其实会对未来在3D生成式AI技术包括模型、材质、场景还有虚拟人等,这些不同的方向上都会有相应的一些探索。
最后再来讲,我们引擎很重要的一个使命就是智能化,我们可以看到Unity引擎界面非常的复杂,比如这里面显示了所有的窗口,每个窗口都表示不同的内容,这样一个界面,对于一些新上手unity开发的开发者来讲,其实还可以进一步的去提高他学习的这个效率,比如说我们能否把交互变得更智能一些,可以通过一些像聊天室的这种方式去做一些Unity创作,我们现在也是在积极的探索怎么样通过大语言模型,让这个引擎做的更智能化,来提升3D内容创作的效率和降低3D内容创作的门槛。
最后这里也就是刚刚展示,我们对于unity中国引擎Copilot的一个构想、规划,也就是我们会通过大语言模型和用户更自然的一个交互界面,通过它分别来串起来我们的3D AIGC的一些模型,以及我们引擎本身内部能提供的一些工具,包括资产库,还有一些程序化生成等这种工具,我们还会探索怎么样把用户更好更安全更隐私的一些数据,去在用户本地管理出来,这时候我们可以在用户本地去部署,引擎专用的本地索引工具,通过这样一种方式来接入到我们的Copilot里边,也就是在保护用户数据本身隐私的情况下,让它充分、可以调动Copilot去利用本地数据。
最后,我想跟大家来聊一聊目前的这些AI生成技术对于我们unity创作者的影响。我觉得首先一点,我们要承认AI是可以简化目前的一些工作流,自动化重复繁琐的一些操作,也就是在提升效率方面,我们能看到它有很大的潜力。
然后第二方面是,因为AI本身我们可以让它调动起来引擎里面更全面的一些能力,也让这些能力更容易让unity开发者触及,可能在你不了解Unity功能的时候,可以让Copilot帮你不管是解答、调动,还是直接自动执行,去调用起来更多的能力。
当然我们在这个过程中一定要非常警醒的去了解这个情况,就是目前的AI都是会出错的,所以AI生成的东西一定是需要我们开发者去仔细的检查确认和修改,这个过程中就需要大家对使用AI有一定的技能要求,AI绘画已经掀起了生产力革命的浪潮,但是这种会使用AI绘画工具,能做出比较好的绘画作品,其实也需要很大的一个技巧去调这个prompt,或者是去找到一些非常适合的这种模型来做。
当然,当你掌握好了这种AI的工具,和你没有掌握好AI的工具去相比的话,开发者之间的效率、差异其实会变得更大。也就是如果能用好工具,效率可以提升很多,但是如果你不去学习这些工具的话,可能你的效率就会慢慢的被拉开。
这里面其实也有一个大家非常关注的问题,就是AI会不会让我们失业,我个人觉得应该是不会的,因为AI本身的作用是为了提升效率,提升效率了之后我们可以有更多的开发生产力,这样的话我们就可以去实现更多的创意,也就是会让我们的创意本身,会显得更有价值一些。
最后我想用一句话来结束我今天这个分享,在汽车代替马车之后,我们其实是可以旅行的更远的。
如若转载,请注明出处:http://www.ashkeling.com/2023/06/520868