Case Studies

inVRsion

INVRSION 优化虚幻引擎编译速度,大幅缩减 AWS 成本

关于inVRsion

inVRsion 是一家意大利企业,主要为零售产业提供 VR SaaS 服务。企业致力于将 SaaS 的专利技术应用于快消品(CPG)零售行业,提升零售速度、展示空间、产品和购物体验。inVRsion 的 VR 技术既支持 B2B 活动,如提供市场营销谈判、消费者调研和培训等服务,又支持 B2C 活动如 VR 电子商务。inVRsion 旗下以 SaaS 为基础的 ShelfZone® 软件,已广泛应用于埃森哲、雀巢、Diesel、百事可乐等全球领先零售企业。

Incredibuild 一经安装,就悄无声息地在后台运行。以透明的方式帮助进程处理,甚至无需任何额外的管理。

Michele Antolini

首席技术官(CTO)

面临的挑战

“我们的 SaaS 技术需要进行大量的自动化处理和脚本处理,来获得 VR 商店的布局和产品展示数据。但客户需要等待很长时间,让脚本执行完毕。” inVRsion 的首席技术官(CTO)Michele Antolini (PhD)说道。

这些脚本将客户的商店设计自动转换成完整的虚幻引擎项目。项目的创造是由数据驱动的自动化过程,需要耗费大量的 AWS 计算资源(尤其是 C++ 代码,Shader 编译,光影烘焙),并要求密集型的计算,以及多个内核高效同步运行。

由于 inVRsion 的自动化进程是以 Unreal Editor 的大量自动化构建为基础,所以需要 GPU 驱动的机器。在无法将进程任务分发到多个机器,同时又需要大量 CPU 处理进程的情况下,inVRsion选 择了使用庞大的、GPU 驱动的 3.8xlarge 机器。

  • 保存时间冗长— inVRsion 脚本以尝试保存 g3.8xlarge 开始。如果没有这种类型的实例可用,则将保存一个更小的机器((g3.4xlarge)。而由于此地区短缺 32 核的机器,这个保存的选择让客户历经漫长的等待,却最终只能使用一半的计算资源。“一般情况下,g3.8xlarge 机器可在 2-3 小时内重新使用。但在新冠肺炎封锁期间,单是重新分配一个同类型的 EC2 实例,就需要花费长达3天的时间。这就意味着,仅仅想让服务以一个合理的速度开始运行,客户就需要浪费大量的等待时间。”
  • 执行缓慢—在一个实例中执行所有的 C++ 与虚幻引擎进程,最大限度用尽内存和 CPU,导致每次模拟执行时间长达 146 分钟。而在 g3.4xlarge 中(当因为可用实例的限制而需降级时),平均的执行时间更是上升至 194 分钟(增加了30%)。执行时间的延长,限制了每个用户每天运行的迭代数量,直接影响了企业的成本和效益;
  • 高 AWS 成本—由于执行时间过长,EC2 类型成本过高,每个迭代的单价也随之攀升。

在新冠肺炎封锁期间,单是重新分配一个同类型的 EC2 实例,就需要花费长达 3 天的时间。这就意味着,仅仅想让服务以一个合理的速度开始运行,客户就需要浪费大量的等待时间。

Michele Antolini

首席技术官(CTO)

Incredibuild 的应对之道

重中之重:消除瓶颈

inVRsion 团队迫切地需要找到消除瓶颈的方法,而问题的症结在于 g3.8xlarge 的机器,价格高昂,时而不可用,时而运行慢,严重拖累了团队工作进度。

鉴于虚幻引擎的 GPU 需求仅用于启动进程,而非实际的编译进程。因此,打破“一台机器运行所有进程”的结构至关重要。 在这种结构中,GPU用于启动进程,但实际的执行却只使用了极少量的GPU。

如何在一台机器中启动进程,而在另一台执行?

或最为理想的是,如何将进程同步分发至几个不同的机器中?

从2014年起,Incredibuild 团队就开始利用技术加速代码构建、CI pipelines.这次,他们决定运用同样的技术打破 inVRsion 的 GPU 瓶颈。

在一个周末的安装、测试多种 EC2 配置后,Incredibuild 已做好充分准备,分发模拟 C++ 代码构建与虚幻引擎 Shader 编译。单个g3 机器解放,多个“帮助”机器登场。

现在,GPU 的功能只简化到停止进程,“启动”机器降级为 g3.4xlarge,其可用性大幅提升,且比之前的机器便宜一半,瓶颈得以成功突破。

Incredibuild 对于代码并行化和 Shader 编译的优化能力同样出色。由于 g3.4xlarge 实例中只有少量可用的 CPU,额外的机器需要增加来进行补充,以支持光照烘焙进程(SWARM Agent 与 Lightmass 的 CPU 处理)。否则这种优势会因光照烘焙进程速度缓慢而消除。

单机作业–淘汰,并行处理–优选

接下来,Incredibuild 团队设定充当帮助程序的机器,以帮助分发进程。他们计算出多个 c5.xl 机器同时运行会比单一的大型超级计算机更经济有效。此外,所有其他的实例也会根据需求自动启动或停止,减少不必要的成本。

下一步,Incredibuild 将与虚幻引擎、C++ 构建工具本地集成,向多个并行机器无缝分发计算进程。与最初的设置相比,Incredibuild 运用的机器成本更低,但 CPU 数量增加了一倍。inVRsion 团队终于实现他们想要的结果,保存时间几近于零、进程速度大幅提升,使用成本显著降低。

准备垂直扩展,无需增加线性成本

从 IT 管理的角度来看,Incredibuild 与 AWS 通过本地集成,使垂直扩展变得轻而易举,而无需增加 IT 工作量。“Incredibuild 一安装,就悄无声息地在后台运行。以透明的方式帮助进程处理,甚至无需任何额外管理。” Antolini 说道。

Incredibuild 的 EC2 自动启动/停止机制,以及项目的实例分享,保证了 CPU 能力的充分利用,不造成任何浪费。此外,Incredibuild 使用 Spot 实例也是自动的,此举更进一步减少成本,提升 ROI.

优化成效斐然

测试完成,以上所有提到的问题都得以完美解决,Incredibuild 优化后的程序正式启动,并作为公司 SaaS 基础设施的一部分独立运作。

优化结果:

  • KPI Before After Improvement
  • 成本/模拟 9,72 欧元 5,05 欧元 成本减少 48%
  • 编译时间 2:26 小时 2:04 小时 执行速度提升 16%
  • EC2 保存时间 2-3 小时 实时 等待时间缩减 100%

Incredibuild 荣膺 AWS 高级技术伙伴

通过 AWS 合作伙伴网络 (APN) 项目,Incredibuild 已跻身成为 AWS 高级技术伙伴。AWS 深度认可 Incredibuild 对合作企业在无缝集成、进程加速及成本优化上的不菲成绩。

结果概要

在执行测试并确保上述所有问题均已成功解决后,由 Incredibuild 提供支持的新设置已投入生产,现在作为公司 SaaS 基础架构的一部分自主运行。

编译时间
4小时
2小时
EC2 预留时间
3小时
0