HPC也叫高性能计算,是使用超级计算机和并行处理技术解决复杂计算问题的系统,通常通过计算机建模、模拟和分析,用于解决高级问题并进行研究活动。用通俗的话来讲,就是用超级计算机来完成一般独立计算机无法完成的运算工作。这不是一项新的技术,在计算机出现不久,科学家和技术人员就努力找寻解决大规模计算问题的解决方案。因为计算的速度一直是阻碍科技发展的一块绊脚石,比如在计算机在科技领域大规模使用之前,如电影《关键少数》中在NASA工作的凯瑟琳女士就是当时的人型计算机,协助美国太空探测计划的前进,精确计算出天文导航的相关数据,这些数据成为日后美国水星计划的基础。如果当时有高性能计算机的帮助,也许人类探索太空的脚步将走得更快。

那么HPC与电影会有怎样的关系呢?其实在电影的制作以及情节当中,很容易看到HPC的身影。今天我们为大家介绍3个电影中使用HPC的场景,分别是表情迁移、影片修复和分辨率增强。

电影与HPC_Python

表情迁移

这项技术大家肯定不会陌生,去年在某短视频平台上疯狂流行的换脸视频和上个月流行的“蚂蚁牙黑”,这些都是通过表情迁移实现的。表情迁移在卡通片的制作中,也有着广泛的应用。比如由演员拍摄出卡通人物应该有的表情视频,然后将这些表情迁移到卡通人物上。比如我们在之前文章为大家介绍的视频合成。在制作这样的视频的时候,如果使用CPU环境,视频渲染将耗费大量的时间,如果使用高性能计算环境,比如高性能计算当中的GPU环境(OCI中最基础款GPU3.1),渲染之前文章中提到的表情迁移的14秒视频只需要几秒钟。

电影与HPC_Python

视频插帧与填色

在影视制作的过程中,往往要引用早起拍摄的视频资料。因为早期技术水平的限制,往往视频的清晰度较低,每秒播放的帧数也较少,而且这些视频往往是黑白的。在使用之前需要对这些视频进行分辨率调整,插帧以及为黑白的影片进行上色。下面是从网路上得到的英国喜剧演员卓别林大师的早期作品,原片为黑白影片,每秒24帧,我们通过机器学习的算法对视频进行插帧,达到每秒46帧。并且我们对影片进行上色。完成插帧和上色的操作在单台 4 cores 2.4GHz的CPU环境,搭配64GB内存,完成两个处理过程需要400小时左右的时间来完成。而在OCI GPU3.1环境(V100/16GB)环境只需要12小时就可以计算完成。如果使用更高的配置,计算时间将进一步缩短。

电影与HPC_Python_03


通过查看文件原本属性,我们可以看到原视频的帧率是23.98FPS。

电影与HPC_Python_04

经过第一轮计算,经过插帧操作之后,我们看看输出的影片属性。通过观察发现帧率变成46FPS了。处理的过程将声音滤除了,所以在Audio属性部分是空白。如果要保留声音,可以先提取声音,完成视频上色之后使用moviepy将声音添加回去。

电影与HPC_Python_05

下面是从原始影片中截取的视频截图。

电影与HPC_Python_06

下面两图是从上色之后的视频中截取的图像。通过观察,影响已经有了色彩,但是我们要知道这些色彩都是机器根据之前看过的图像“想象”出来的颜色,和真实的颜色肯定存在差异。而且整体颜色比较怪异,和现代通过彩色录影机拍摄出来的画面有很大差异。并且有些帧会出现比较严重的全画面马赛克的情况。

电影与HPC_Python_07电影与HPC_Python_08

电影与HPC_Python_09

超级分辨率

这不是一项用于电影的高性能计算技术,而是大家在电影中经常能看到的一项技术。比如在监控视频中,嫌疑犯没有被录影机拍到,但是画面中的某个可以反光的物体上面呈现出一个非常模糊的影像,然后将这个影像放大,并通过算法进行还原,最后得到反光中的清晰图像。这不是一项新的技术,在多年前我所在的研究所就通过超级分辨率技术协助警方进行办案,一般通过视频中街道上的玻璃反光或者水坑中的倒影的影像作为基础,进行图像还原。我们在去年为大家介绍的《使用OCI的GPU环境实现去除照片马赛克》就使用了这项技术。只不过现实中的处理速度和精确度与电影中的场景还是有较大差异的。

  • 首先是处理速度,因为那时候放置在室外的高级一些的录影机分辨率差不多只有720*576的SD。而且物体反光所呈现的图像的尺寸就更小,对这些图像使用我们通过“暴力出奇迹”做出来的模型进行还原,处理的速度依旧很慢,当时使用本州算是数一数二的超级计算环境也无法做到电影中用鼠标zoom in,伴随着滴滴答答的蜂鸣器响声,立即出现最终结果的效果。当然,电影中的都是为了达到影视效果而做出的处理,就如现在电影中破解密码也是一位一位破解的,而且只要插入一个小棒棒就在瞬间把密码一位一位算出来。而实际情况呢?就算每秒钟计算80亿次,破解一个由英文和数字组成的8位密码也需要差不多8个小时。而且密码每增加一位,破解所需要的时间差不多要多出62倍,并且如果密码当中加入了特殊字符,那么将需要使用更多的计算时间。

  • 其次是计算结果的精度,通过超级分辨率计算出的结果目前也不能达到影视作品中那么高,并且警察和法官也不能完全采信计算机给出的合成影像,需要配合其他证据进行判断。因为这些影像是计算机根据它之前所“见”过的情况,加上一点点“想象”合成出来的。比如我们在《使用OCI的GPU环境实现去除照片马赛克》中对人像马赛克的去除。计算机根据它之前“见”过的人物面部影像“想象”出照片之前的样子。因为当时的训练集是白人的影像,所以计算机按照自己的想法来合成出,这幅图像在加入马赛克之前的样子,结果并不能让人满意。

电影与HPC_Python_10

高性能计算,不只在电影行业被广泛应用,在生物制药、航天、制造、医疗、气象等各个行业都有着广泛的应用。现在的趋势是租用速度更快、价格更优的高性能计算环境,而不是自己搭建。Oracle从2016年开始在云端向客户提供裸金属设备用于高性能计算,如今我们在全球多个数据中心为我们的客户提供更高性能的裸金属计算实例和基于A100 GPU的裸金属计算实例和虚拟机。并且我们提供比友商更有竞争力的价格。电影与HPC_Python_11

现在大家不搭建自己的HPC环境,而是使用云端环境主要是考虑计算容量、性能和成本。很多高性能计算场景下,计算不是一直运行的,如果为了能够承载一段时间的最大计算量,而采购了大量设备,在大规模计算过后,设备利用率降低造成浪费。另外,计算设备更新速度快,如果自建环境,很难跟上主流计算资源配置,比如在2018年比较流行的V100,在2020年就被A100及更高型号的处理器所代替。此外,自建环境不能像云端那样进行弹性配置,势必会造成资源浪费及资源不足时所带来的任务排队,减低生产效率。

电影与HPC_Python_12

Oracle作为公有云提供商,我们始终为我们的客户提供新款的硬件服务,并为客户提供多种选择,从经济型的AMD E4到GPU裸金属实例,让客户可以根据计算场景的不同,自由选择。

电影与HPC_Python_13

高性能计算对网络的要求很好,在多节点的计算集群当中更是这样。如果节点间的网络传出出现瓶颈,将严重影响HPC的整体性能。Oracle将服务器与RDMA集群网络连接,实现100Gb/s的带宽及1.5µs的低延迟,从而保证HPC的高性能。

电影与HPC_Python_14

计算过程中往往会输出中间结果,就如我们上面为黑白视频上色的例子当中,首先要将视频做插帧的操作,将插帧的结果写入存储,然后再将插帧后的视频作为下一个步骤的输入进行上色处理。这就需要高速的存储支持,否则依旧会出现瓶颈。OCI为我们的客户提供了60-140GB/秒的并行文件系统,以及NVMe的高速闪存存储,保证HPC中的数据能够被高速读取与写入。

电影与HPC_Python_15

电影与HPC_Python_16

电影与HPC_Python_17

电影与HPC_Python_18

Oracle OCI中的marketplace有好多预制好的环境,比如之前我们使用的AI all in one。在Marketplace当中我们为大家提供了免费的CFD ready集群与OCI HPC文件系统,我们只需要点击几下鼠标就可以将这些环境创建出来,而不用再去做繁杂的配置。

电影与HPC_Python_19

选择云端HPC环境除了可以使用最新的硬件,弹性可扩展之外,价格也是一个很重要的因素。Oracle OCI与友商相比提供透明的且具有竞争力的价格体系,我们的价格直接写在官方网站上,而不是需要与云厂商的销售one by one沟通获取差异性的价格。

电影与HPC_Python_20

OCI的高性能计算和OCI当中向大家提供的其他云端服务一样,在向大家提供强大的性能的同时,以低廉的价格和灵活的扩展性及极高的安全性服务广大中国及世界其他国家的客户。

另外,有些使用GPU环境的客户抱怨友商的GPU环境在创建时,需要等待4小时以上的等待时间,因为Oracle不超售,所以在创建GPU环境时无需等待,并且OCI的GPU是以秒为计费单位的(最小收费时间为1分钟),这样一来,我们可以进一步为大家节省成本。为保证客户的计算性能,Oracle的GPU环境是客户独享的,不与其他客户共享GPU资源。所以当客户暂停(stop)GPU实例,由于GPU资源还在被客户占用,所以会持续收费。当客户将这个环境删除(Terminate)之后,GPU资源完成释放,停止计费。但当GPU环境被删除之后,如果想重新搭建,恐怕之前的安装包和软件要重新安装一遍,比较费时。如何能做到实例暂停,立即释放GPU资源停止计费,当再次使用时不用重新安装直接使用,达到进一步节省费用的目的呢?请大家关注我们的公众号,发送GPU省钱小妙招,将为您介绍省钱秘笈。


编辑:殷海英