投稿问答最小化  关闭

万维书刊APP下载

冬奥会集群渲染系统的设计和实现

2022/11/1 17:43:02  阅读:157 发布者:

0 引 言

随着视频显示技术的发展,三维动画和电影节目的制作分辨率在朝着 4K 甚至 8K 的方向快速迈进,同时支持高刷新率的显示屏也提供了更好的视觉体验。由于视频分辨率和帧率的提升将成倍增加图形渲染的负担,因此目前广泛使用集群渲染技术以提高视频的渲染效率 [1]。集群渲染是通过通信协议连接一组计算机群,将工作负载从一个超载的计算机迁移到集群中的其他计算机上,以达到或接近超级计算机的算力。集群渲染相比单机渲染,其渲染效率明显提高。

集群渲染技术通常会在高校的数字媒体相关课程中进行简单介绍,但由于往往缺乏必要的软硬件实验环境,仅通过口头讲授或 PPT 演示的方式,难以使学生理解其原理及重要性,学生也缺乏在集群渲染领域的研究能力与解决问题的能力 [2]

北京冬奥会 LED 地屏总面积超过 1 万平方米,其最大分辨率达到 16K,刷新率为 50fps。地屏视频播放是开闭幕式表演的重要组成部分,而这些视频内容则基本需要利用计算机对三维模型渲染而成。目前集群渲染技术的发展相对成熟,但现有的集群渲染系统主要侧重于电影动画等消费场景,对于本次冬奥会开闭幕式需求而言,在训练和彩排阶段,地屏视频内容会不断进行调整,特别是在彩排后期时常出现紧急渲染需求,这就要求用于本项目的渲染集群需要具备灵活的任务调配功能,另外 16K&50fps 的视频输出标准、种类繁多的工具软件适配、高达百 G 的工程文件以及数据内容保密等特殊要求都导致现有集群渲染系统难以直接用于本次冬奥会项目,为此有必要定制一套适用于冬奥会特殊场景的集群渲染系统,以应对彩排过程中的紧急渲染需求。这对于参与者来说,也是一个不断探索、实践、创新的过程 [3]

1 集群渲染系统

集群渲染系统由服务器集群、集群管理软件和渲染建模工具软件组成,其中服务器集群方案如图 1 所示,主要包括渲染服务器、管理服务器、存储服务器以及网络交换机。

管理服务器是整个集群的控制中心,在其上部署集群渲染管理软件,负责管理整个集群的系统资源,以实现节点管理、任务管理、日志管理、用户管理、配置管理等功能。根据渲染管理软件对平台的兼容性,管理服务器操作系统可选择 Windows Linux 系统。

渲染服务器包括 CPU 渲染服务器和 GPU 渲染服务器,是集群中节点数量最多的部分。一般根据任务需要部署各类渲染建模工具,如3DsMaxC4DAfterEffects 等,通过建模工具的渲染脚本完成渲染工作。由于大多数渲染建模工具仅兼容 Windows 平台,因此渲染服务器一般都运行 Windows 操作系统。

存储服务器是集群的数据中心,部署相应的数据库,存储渲染任务、渲染文件、渲染结果等数据,其主要采用 Linux 系统。为保证数据读取和写入的可靠性,常采用基于 RAID5 RAID10的冗余设计。

2 集群渲染服务器组成设计

本次北京冬奥会视频输出为了适应地屏高分辨率和高帧率要求,渲染工作量非常大。为合理设计服务器集群规模,首先基于之前的项目经验搭建基础测试环境,然后在此基础上使用本次活动的样片进行验证测试。

2021 年的百年党庆活动中,渲染任务基本都是 8K 分辨率,帧率为 25fps,为此当时我们共设计使用了 30 台渲染服务器节点,其中 GPU渲染节点 20 个, CPU 节点 10 个。以该集群为基础测试环境,我们使用本次冬奥会样片进行了测试估算。北京冬奥会节目时长普遍在 3 min左右,所使用的渲染工具包括 3DsMaxC4DAfterEffectsNuke 等,根据组委会对应急渲染的要求,必须保证每天完成 5~10 段节目。经过多轮次实验,最终得到表 1 列出的集群服务器配置。基于这个配置,各类不同渲染工具节目样片实际渲染实验结果见表 2

由表 2 实验结果可知,表 1 中的集群配置每日可渲染5.33DsMax渲染文件、 9.6 AfterEffects 渲染文件、 5 Houdini 渲染文件、 8.2Nuke 渲染文件以及 5.4 Cinema 4D 渲染文件,因此该集群配置基本满足了冬奥会的应急渲染需求。

3 集群渲染管理软件的开发

集群渲染管理软件是集群渲染系统的核心,其通过将任务拆解分发,资源精确调度,使系统内计算节点并行工作完成渲染任务 [3]

3.1 需求分析

项目组通过专题会议,与导演、设计团队和场馆运营团队交流讨论,同时对机房环境进行实地调研,逐渐明确了冬奥会集群渲染系统管理软件的主要功能需求。该软件包括 3 种不同的角色:渲染客户、渲染工作人员以及超级管理员。渲染客户是冬奥会的内容设计团队,也就是有渲染需求的客户,拥有上传渲染任务、查看渲染进度、查看消息通知、下载渲染结果以及在紧急情况下申请紧急渲染、在需要被打断任务的情况下同意或者拒绝其他客户紧急渲染的功能;渲染工作人员是负责渲染操作的工作人员,拥有下载渲染任务、分配渲染节点、发布渲染命令、上传渲染结果、修改渲染任务优先级、查看渲染进度和消息通知、审核客户紧急渲染等功能;超级管理员是渲染集群的管理者,拥有渲染节点管理功能和对系统用户的账号管理功能,此外还拥有渲染工作人员的全部功能。系统的用例图如图 2 所示。

除了上述功能需求,集群渲染管理软件还需要满足以下性能需求。

1)安全性。开闭幕式相关内容在正式开幕之前绝不允许外泄,为此,整个系统需要对用户身份和数据进行验证和加密。

2)兼容性。不同设计团队使用的渲染工具软件品类不同,版本也有较大差异,因此集群渲染管理软件须适配各类建模工具。

3)弹性扩展。开闭幕式是一个持续的创意和演练过程,导演的创新和想法不断变化,为应对视频渲染时常出现的新需求,渲染管理软件需要为新需求预留命令参数修改接口。

3.2 软件设计

3.2.1 软件结构设计

根据图 2 的用例描述,该集群渲染管理软件的架构如图 3 所示,整体分为 4 层,包括界面层、应用层、服务层和数据层。界面层主要展示任务状态信息、节点状态信息、渲染状态信息以及用户列表。应用层对应软件的主体功能,包括数据管理、用户管理、任务管理、节点管理和第三方工具管理。服务层是软件的核心,支持相应的高级功能,主要包括用户服务、任务服务、节点服务、第三方服务和数据服务。数据层对系统数据和渲染文件数据进行数据存储和数据提取。

冬奥会集群渲染管理软件中类的设计关系如图 4 所示,用户类是系统中所有用户类型的父类,包含着注册、登录、修改信息等基本方法;渲染工作人员类和客户类继承用户类 [4],在基本方法之上还定义了实现各自功能需求的方法;超级管理员继承自渲染工作人员,在渲染工作人员之上还定义了一些对集群系统和系统中用户的管理方法;客户类和渲染任务类之间是一对多的关系,一个客户可以提交多个渲染任务,但一个任务只能由一个客户提交;渲染任务类和渲染队列类以及任务回收队列类之间是聚合关系,渲染队列和任务回收队列都是一组渲染任务的有序排列,任务完成或被删除之后会从渲染队列中被放到任务回收队列中;渲染任务类和渲染控制类之间是一对一的关系,一个渲染任务只能由一个渲染控制类处理,一个渲染控制类也只能处理一个渲染任务;渲染工作人员类和渲染控制类之间是一对多的关系,一个渲染工作人员可以开启多个渲染控制,但一个渲染控制只能由一个渲染工作人员开启;渲染控制类依赖于渲染节点类和建模工具类,只有渲染节点和建模工具都可用的情况下,渲染才能被开启;启用和使用分别是渲染节点类和建模工具类的实现接口。

在整个冬奥会集群渲染管理软件系统中,渲染是整个渲染管理软件的主要功能。渲染工作人员在主界面点击渲染按钮,然后渲染任务控制类获取到队首的渲染任务,从渲染任务表中读取任务数据并返回给渲染控制类,随后各节点开始执行渲染命令,同时将渲染结果存入渲染表中,返回渲染进度并将其显示在主界面。渲染功能的时序图如图 5 所示。

3.2.2 数据表设计

该集群管理软件主要的数据表包括用户信息表(表 3)、渲染任务表(表 4)、渲染节点表(表5)、建模工具表(表 6)等,具体约束设计如下。

3.2.3 软件关键点设计

1)任务调度机制。

高达 16K 的分辨率导致单帧渲染时间较长,且渲染场景的复杂度对单帧的渲染时间也有很大影响。面对这种渲染时间不均衡问题 [5],理论上采用每次仅向某个渲染节点分发一帧的方式能有效提升整体集群渲染速率,但冬奥会的场景渲染文件通常高达上百 G,计算节点每接收一次渲染命令都需要重启渲染脚本并读取场景素材,导致文件加载时间经常超过单帧渲染时间,上述单帧分配方法实际上会降低集群渲染的效率。此外,在冬奥会筹备期间,需反复修改节目内容,因此需要对同一节目的不同版本进行渲染。对于小幅度修改的版本,如仅改变了某物体颜色,其场景复杂度和前一版本基本一致,则可根据前一版本的实际渲染时间确定新版本的分配方式,从而实现针对某一节目的渲染优化。对于大修的版本,如更换了场景或添加了许多新特效,那么其场景复杂度会发生很大变化,难以进行快速有针对性的优化,则需要当作新节目进行渲染。针对以上问题,参考相关调度方法,基于静态分配和动态分配两种概念,设计两种不同的调度机制。

静态分配指将任务帧一次性平均分发给当前启用的渲染节点,经此方式渲染节点只需启动一次渲染脚本,其适合分发渲染时间少于文件加载时间的任务帧。动态分配指根据渲染节点的空闲状态进行任务帧分配,空闲节点每次仅渲染一帧,渲染结束后便会关闭渲染脚本,动态渲染则适合分发渲染时间多于文件加载时间的任务帧。

1)针对新节目或修改幅度较大的版本,由于其渲染时间未知,因此先通过仅渲染几帧的方式粗略估计需要进行静态分配的帧区间和动态分配的帧区间。采用的算法如下,将不同帧的渲染时间与文件加载时间进行比较,从而计算静态分配系数,以控制本次任务的静态分配比例,其余任务帧则通过动态分配的方式,最终完成本次渲染作业。

算法 1 :针对新节目或修改幅度较大版本的调度算法。

2)针对修改幅度较小的版本,由于与前一版本的内容差异不大,而又已知前一版本的实际渲染时间分布,因此可将前一版本的渲染时间分布应用于当前版本,便可确定具体的静态分配区间和动态分配区间。图 6 表示某节目上一版本的渲染时间分布,将上一版本中渲染时间少于文件加载时间的帧区间应用到当前版本进行静态分配,其余帧区间则应用到当前版本进行动态分配。通过此方式,可进一步提高集群渲染速度。

2)应急任务保障机制。

冬奥会的表演节目在筹备期会进行多次彩排,在节目彩排前时常出现临时修改的情况。另外,在彩排后,也会根据导演的意见在短时间内提供修改后的渲染效果。针对这些情况,需要集群渲染系统提供紧急渲染任务保障。紧急渲染任务处理的流程图如图 7 所示,当渲染客户上传的任务需要紧急渲染时,可向渲染工作人员和当前集群正在运行任务的客户发送紧急渲染请求,渲染工作人员和正在渲染任务的客户同意后,软件向各节点发送中断当前渲染任务指令,记录当前渲染任务进度并保存当前结果,将当前任务挂回到队列中,开始渲染紧急任务,待紧急任务渲染完成后,被中断的任务继续渲染。

对于集群渲染系统的中断与渲染恢复机制的设计,参考网络通讯的断点续传机制以及数据库数据回滚方法,如图 8 所示,包括当前渲染信息的保存、恢复渲染和帧序列校验过程。在集群渲染过程中,每渲染完一帧后,每个节点的渲染信息和该任务的渲染信息会进行更新并保存。节点信息主要包括当前节点已渲染完和未渲染完的帧信息,而该任务信息包括当前任务的全部帧中已渲染完和未渲染完的帧信息。在中断当前渲染前,以上关键信息会被保存到相应的数据文件中。当恢复渲染时,节点可以通过读取文件记录快速恢复之前的渲染进度,而无需重复渲染。由于中断渲染容易导致丢帧情况的发生,因此,在渲染结束后会进行帧序列校验,验证是否存在丢帧情况。通过以上方式可以有效实现渲染的即时中断和恢复,保障冬奥的应急需求。

3)数据安全。

开幕式筹备期间,由于接入鸟巢局域网的部门繁多混杂,因此参考 PKI 技术 [6],为集群渲染系统设计一种认证和加密机制以进一步保障数据传输的安全,身份认证和加密机制如图 9 所示,这项机制主要由集群渲染系统中的数据安全服务保障实施。数据安全服务提供用户注册、密钥生成、密钥管理、身份认证以及文件加解密功能,其中渲染流程的 3 个阶段与数据安全服务有关联,包括用户注册、身份认证和加密传输。

用户注册:用户注册参考数字证书的签发功能,渲染客户首先需将所在部门、身份证、联系方式等信息提交至渲染系统的超级管理员进行审核,审核通过后,由超级管理员在系统内注册用户信息,并将系统生成的用于身份认证的公钥和私钥以及用于加密传输的 AES 密钥提供给渲染客户,同时系统会对注册用户的信息和相关密钥进行管理和备份,防止因用户丢失密钥而无法展开渲染。

身份认证:身份认证参考数字签名,渲染客户每次在上传文件或下载文件前,必须经过身份认证才能连接到系统的相关服务。渲染客户需将认证文件、认证文件经私钥加密的结果和公钥发送至集群系统,系统的数据安全服务首先用接收的公钥解密经用户加密的文件,将解密的文件与接收的文件对比,如果一致则证明了该用户身份的真实性。随后系统通过密钥管理功能查找到拥有该公钥的用户信息,获取该用户的 AES 密钥,以便于后续加密传输时保证系统与用户使用相同的密钥加解密文件。

加密传输:由于日常传输文件体积大,因此加密算法采用 AES 对称密钥技术,其算法简单且计算量小,能够高效率加密。身份认证成功后,渲染客户使用所持的 AES 密钥通过 AES 加密算法将渲染文件进行加密,从而安全地将渲染文件传输至集群系统。集群系统收到文件后,会使用和用户相同的密钥进行解密。反之,用户需要下载渲染结果时,系统将使用该用户的 AES密钥通过 AES 加密算法对渲染结果进行加密,用户收到结果后使用同样的 AES 密钥进行解密,获取最终渲染结果。

4 集群渲染系统的部署

基于上述设计方案,我们使用 PythonPyqt5MySQL 等工具对软件系统进行实现和测试;使用 PsExec 调用不同建模工具的渲染脚本,包括3DsMaxCinema 4DMayaHoudiniNuke AfterEffects,测试验证对不同建模工具的兼容性;开发相应功能接口,便于短时间内通过接口满足视频渲染的新需求 [7]

整个渲染集群部署架构如图 10 所示。管理服务器安装定制的集群渲染管理软件,管理渲染作业,协调系统资源 [8]。由于各建模工具的渲染脚本主要支持 Windows 系统,因此渲染服务器以 WindowsServer 2022 为平台,安装主流三维建模软件,以适配冬奥视频团队的渲染需求。存储服务器采用 Linux 操作系统,通过使用 RAID5技术,提高数据存储的容错性和稳定性 [9],同时采用 Samba 文件共享服务,以满足渲染节点的高频率数据读取和写入需求。为提高集群各节点通讯速率,采用链路聚合等技术提高带宽,以满16K 视频内容的高速 I/O 要求。

11 所示为冬奥集群渲染案例,图 11a)表示渲染客户上传的冬奥会闭幕式某 3DsMax 模型工程文件,通过集群管理软件的任务分发,最终得到图 11b)所示的单帧渲染效果。

在北京冬奥会期间,我们自主设计的集群渲染系统共运行 1 512 h,完成渲染任务 105 项,渲染 16K&50fps 的视频素材 472 428 帧。各项任务平均用时 2 h 53 min,有力保证了冬奥会排演中视频内容的及时制作与优化完善,为奥运会开闭幕式表演的完美呈现做出了重要贡献。

5 结 语

北京冬奥会对视频渲染的特殊要求应该是绝无仅有的,项目团队克服了重重困难,搭建了集群服务器硬件环境,设计开发了专用集群渲染管理软件,保障了开闭幕式各项应急渲染任务。在集群渲染系统的设计和实践过程中,学生加深了对软件开发和图形渲染技术的认识,对于理论与实践的结合有了进一步体验,对数字媒体、计算机网络、软件工程等专业知识加深理解的同时,还有效提高了融会贯通能力、研究问题的思维能力以及创新实践能力 [10]

参考文献:

[1] 陈良育, 陈敏刚, 曾振柄. 自适应远程渲染集群系统[J]. 计算机工程, 2008(13): 262-263, 266.

[2] 于金霞, 贾宗璞, 汤永利. 以学生创新能力培养为目标的IT类专业实践教学[J]. 计算机教育, 2014(22): 107-110.

[3] 向尕, 康海燕, 孙璇. 面向解决复杂工程问题能力培养的软件工程实践教学探索[J]. 计算机教育, 2021(10): 161-165.

[4] 罗秋明, 孙宏元. 集群渲染管理软件的构建技术与框架设计[J]. 计算机工程, 2008(11): 249-251.

[5] 齐杰, 高春鸣. 面向集群渲染的反馈控制负载均衡算法[J]. 计算机工程, 2008 (16): 129-131, 134.

[6] 刘那仁格日乐, 王郝日钦. 基于PKI技术的用户身份数据转发认证算法仿真[J]. 计算机仿真, 2020, 37(9): 373-376, 403.

[7] 仝伯兵, 杨昕吉, 谢振平, . 集群渲染系统构建及优化[J]. 软件导刊, 2015, 14(1): 89-91.

[8] 李谦, 伍卫国, 黄舰航, . 渲染农场研究进展综述[J]. 计算机应用研究, 2015, 32(3): 652-657.

[9] 林关成. 实验教学中心集群渲染系统的构建与测试[J]. 信息技术, 2014 (3): 76-79, 84.

[10] 梁惠惠. 场景+项目实战驱动下的软件项目管理课程教学[J]. 计算机教育, 2021(7): 172-176, 182.

基金项目:国家重点研发计划项目“冬奥会开闭幕式大型表演智能化创编排演一体化服务平台关键技术”(2020YFF0305200)。

第一作者简介:谭秀磊,男,北京理工大学硕士研究生在读,研究方向为数字媒体、图像处理, xiaotaner1997@qq.com

引文格式:谭秀磊,可梦云,王崇文. 冬奥会集群渲染系统的设计和实现[J].计算机教育,2022(10):17-25.

转自:计算机教育”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com