【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

利用 AWS Deadline 提升渲染效率

  • 2019-09-26
  • 本文字数:7573 字

    阅读完需:约 25 分钟

利用 AWS Deadline 提升渲染效率

内容制作过程中渲染环节现有困境

内容制作人士通常会有这样的一些抱怨:“这个短片已经开始渲染,这 N 天的工作就可以暂停,没办法,只有等待渲染完成再继续下一步工作”。通常一个短片的制作会包含多次的制作-渲染-调整再渲染的工作周期,在整个周期中,渲染会占用大部分制作时间,且这段时间内制作人员通常处理空闲等待状态,严重影响生产效率。


以由软件为基础的视频制作流程如下:



根据业内人士的反馈,虽然渲染只是内容制作过程中的一个环节,但渲染时间通常会占到整个内容制作时间的一半,以一个制作周期为 2 个月的广告为例,其中几乎一个月的时间都在进行渲染工作。


当前主流的内容制作包括电视,电视,广告,宣传片都向着 4K 以及 8K 演进(日本已经开始进入到 8K 时代),渲染所占用的时间在整个内容制作过程中比重将会进一步加大。


以现今主流的 4K 短片在本地 10 台 20 核服务器集群渲染上为例,一份 3 分钟每秒 50 帧的短片,一共 9000 帧,一帧的渲染时间为 11 分钟,则整个短片的渲染时长为一周左右的时间,在这一周的时间内内容制作人员基本处于等待状态,并且这只是单次渲染时间,一个完整的视频制作会经过反复的修改再渲染,会有更多的人员等待时间。


另外,以拍摄为基础的视频制作流程如下,渲染也只众多环节中的一环,但也要占用制作周期中的大量时间。


解决办法

渲染也属于 HPC 应用中的一种,同样可以使用增加并行节点来提供整体效率,且各渲染任务之间不存在关联性,整体的渲染效率随着渲染节点的增多而线性增加,非常适合使用大量节点并发渲染。将 1(并发 task)x1000(小时)转化为 1000(并发任务)*1(小时),在保持成本不增加的情况下,大大缩减渲染时间。


AWS 云平台提供丰富的计算资源,并且提供了 Deadline 渲染调度软件来负责渲染任务的提交、渲染任务的管理、渲染节点的调度、渲染结果的管理。Deadline 与 AWS 有着良好的集成,可以通过 Deadline 直接调用 AWS 云平台计算实例开启渲染工作。


同时,Deadline 支持与多达 80 多种内容制作软件的集成,可以按需在 AWS 云平台上使用 Deadline 构建成自己的渲染农场。针对本地环境已经渲染硬件资源的情况,Deadline 也可以统一调度,构建基于本地,延伸到云的混合架构渲染农场,保证本地现有投资的同时,利用云的弹性提升渲染效率。

使用 Deadline 构建渲染集群

本文使用的 Deadline 架构如下所示,所有组件全部基于云端。



用户直接与内容制作软件如 3dsmax 进行交互,在制作完成渲染文件后,利用 Deadline 对多达 80 多种渲染软件的直接集成能力,在渲染软件中直接提交任务,任务提交脚本自动将渲染文件和关联的资产文件提交到文件服务器供渲染节点渲染使用,同时生成一个 Job 提交到 Deadline 任务分发服务器。渲染节点主动发现有待渲染的 Job 时,会自动向任务分发服务器申请 task,执行一帧或者连续多帧的渲染任务,并从文件服务器获取渲染文件及相关资产文件开始真正的渲染任务,当渲染完成后,将结果文件统一保存到文件服务器中指定位置供用户使用。


本文将聚焦于渲染节点制作部分,阐述如何利用 AWS 的 AMI 构建自定义的渲染节点 AMI 用于批量生成渲染节点,并对 Deadline 使用中的一些问题给出建议。Deadline 本身的部署可以参考另一篇文章:<< Deadline 使用 SPOT Event Plugin 开启低成本渲染农场>>


本文包含两种类型的渲染节点制作,第一种是使用 CPU 的 3dsmax 渲染节点制作,第二种是使用 GPU 的 Maya 渲染节点制作,使用的硬件及软件资源如下所示:


  • 渲染硬件:CPU,渲染软件:3dsmax,渲染插件:V-ray。

  • 渲染硬件:GPU,渲染软件:Maya,渲染插件:Redshift。

渲染节点 AMI 制作

渲染节点的硬件制作遵循 AWS AMI 的标准制作流程,再针对渲染节点的需要进行一些必要的设置。

3dsmax+V-ray 渲染节点 AMI 制作:

基础镜像选择

用户可以选择上传自己已有的桌面版 Windows 系统镜像,也可以使用 AWS 平台已有的服务器版 AMI 如 2016 版的 AMI。

实例类型选择

3dsmax+V-ray 的使用 CPU 执行渲染任务,不依赖 GPU 资源,而且渲染过程中主要使用 CPU,对内存的需求不大,所以选择 C 系列如最新一代基于 Nitro 的 C5 系统即可提供高性价比的渲染实例。后启动实例制作基础镜像。

安装渲染软件及渲染插件

3dsmax 软件的安装按照其标准流程,安装即可。Deadline 调用的是 3dsmax 的命令行模式执行渲染任务,此任务下不需要 License。


然后按照标准方式安装 V-ray 渲染插件,和 3dsmax 安装一样,直接选择默认安装选项即可。V-ray 的正常运行需要有合格的 License。


另外推荐安装 multiscatter-for-3dsmax 插件,此插件包括充分利用多核 VPU 的功能大大加速渲染效率。

安装 Deadline 渲染节点代理软件

Deadline 通过安装在每个渲染节点上的 Deadline Slave 软件控制渲染节点上渲染任务的执行,所以需要在渲染节点上安装 Deadline Client 软件包,安装此软件会安装 Deadline Slave,当渲染节点上的 Slave 启动后会注册到渲染集群的任务分发服务器,后续从任务分发服务器上获取任务执行渲染工作。

定制化 AMI 镜像

此步骤为制作渲染节点重要的一步,包括以下几个方面的内容


  1. 开机自动挂载文件服务器到本渲染节点


在安装 Deadline Slave 的时候,会指向共享文件服务器共享路径,在 Slave 启动的时候,从共享路径中加载任务服务器的地址,从而注册到任务服务器。挂载共享路径是渲染启动后第一件需要做的事,这是 Slave 能成功注册的关键。通过启动时执行的定时任务执行共享路径的自动挂载,


  • 选择不管用户是否登录都要运行。确保只要启动系统后即完成共享路径的挂载,如图四。

  • 触发器选择在每次系统启动时执行,确保渲染节点重启后仍然能自动挂载共享路径。

  • 操作项中的程序或者脚本值设置为 powershell 的执行路径:


C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
复制代码


添加脚本运行的参数项值为:


-Command net use \\$samba-server-ip\DeadlineRepository10 /user:$deadlineuser” $password
复制代码


其中deadlineuser 为 samba 共享目录挂载的用户名,$password 为 samba 目录挂载的用户密码,需要替换成相应的值。




  1. 每个渲染节点使用自己的主机名在任务分发服务器中标识自己才能被 Deadline 识别,否则渲染节点将不能被识别而参与渲染任务,所以每个渲染节点都必须有自己的名字,如 Slaves 中的 Slave Name 名字列。



Windows 系统可以利用 Ec2LaunchSettings 将主机名更改为 IP-XXXXXX 格式,XXXXXX 是主机私有 IP 的十六进行表示,从而让每个节点都有唯一的主机名。但在利用生成的 AMI 镜像第一次启动一个新实例后,其主机名仍为制作模板主机的主机名,需要重新启动以更新其主机名。这需要再添加一个定时任务让其在第一次启动时自动且仅重启一次。


  • 创建一个在启动时即执行的计划任务,由于没有只在第一次启动时执行的选项,所以需要在具体的执行脚本中添加条件让计划任务只执行一次。

  • 操作项中的程序或者脚本设置为 powershell 的执行路径


C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
复制代码


添加脚本运行的参数项值为


-NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -File "C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\Restart-Computer.ps1
复制代码


其中 Restart-Computer.ps1 为自定义脚本,脚本内容如下


if(!( Test-Path C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\renamed.txt)) { echo "Already restarted after rename-computer" > C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\renamed.txt Restart-Computer -Force #write $computername }
复制代码


该脚本通过文件 renamed.txt 标识实例是否已经执行过自动重启,确保在后续启动后不再自动重启。


  1. 可选:配置 windows 系统为自动登录,从此处下载自动登录设置软件。

  2. 使用 Ec2LaunchSettings 工具设置 AMI 模板


  • 选择 Set Compute Name ,主机名将在重启后设置为 IP-XXXXXX(十六进制 IP)的格式,以唯一标识实例自身。

  • 选择 Set Wallpaper,桌面背景将添加上实例的元数据信息。

  • 密码设置处选择 Specify,指定自定义的密码,方便在需要时登录进渲染节点。

  • 选择 Shutdown without Sysprep,实例将在不清除用户数据的情况下自动关机

  • 在关机状态下选中实例,从实例制作最终的 AMI 镜像。


Maya+Redshift 镜像制作:

Maya+Redhsift 的 AMI 镜像制作流程与 3dmax 的 AMI 制作流程相同,本节只列出与 3dmax 制作流程不同的点。

实例类型选择

由于 Redshift 是新一代基于 GPU 的渲染,所以渲染节点需要选择带 GPU 类型的实例。在 AWS 平台上有 G 和 P 两类带 GPU 的实例。从 AWS 官网可以看出两个系列的不同应用场景:


  • P3 系列应用场景:



  • G3 系列应用场景:



实际上 P3 系列上搭载的是 Nvidia Tesla V100 GPU,主要用于科学计算场景,G3 系列搭载的是 Nvidia Tesla M60 GPU,主要用于图形处理相关场景,所以选择 G3 系列实例。

安装渲染软件及渲染插件

按照正常的 Maya 和 Redshift 的安装方法进行安装。


注意事项:


  1. 显卡驱动的安装使用 Nvidia 官方最新的驱动,可以识别出多显卡 G3 实例的多个显卡用于渲染。不推荐使用 AWS 官方针对 G3 实例的驱动,使用此驱动后多块显卡只能被识别为一块,而且普通的显示任务也会用到此显卡的资源导致任务争抢,导致显卡的利用率不超过 80%。

  2. GPU 渲染只工作在非服务模式下,因为 windows 希望 GPU 卡只是一个图形设备,不允许后台服务访问。所以如果在 Maya 和 Softimage 中使用 redshift 渲染,不能将 deadline salave 安装为 service,而是安装为一个用户程序。

  3. 默认配置下,由于在远程桌面中不支持 OpenGL 在远程桌面中无法打开 Maya,参见此处设置修改Maya 配置,

利用制作的渲染 AMI 进行渲染

启动新的渲染节点

制作完渲染节点 AMI 后,就可以利用 AMI 启动新的实例注册成渲染节点,开启渲染工作。


可以在 AWS 控制台中启动按需实例和 Spot 实例,也可以利用 Deadline Spot Event 插件自动从 Deadline 启动新的渲染实例,如果利用 Deadline Spot Event 插件自动启动新实例请参见<<Deadline 使用 SPOT Event Plugin 开启低成本渲染农场>>。启动后的实例以唯一标识自动注册到 Deadline 中,可以在 Deadline Monitor 中查看到。


提交任务到渲染集群

在使用 3dsmax 完成渲染文件制作后,在 3dsmax 的 Rendering 项中设置好渲染选项,设置的选项将被提交到 Deadline 渲染集群的渲染节点,按照设置参数进行渲染。


向 Deadline 集群提交任务有两种途径:


  1. 第一种是在渲染客户端中通过 Deadline Monitor 提交渲染任务,在设置好渲染参数后,通过归档的方式将渲染文件及相关的资产文件保存为本地的一个压缩包文件,然后使用 Deadline Monitor 提交。



  1. 也可以在客户端的 3dsmax 软件中安装 Deadline 提交插件直接从 3dsmax 提交任务,推荐使用此种方式,因为可以进行更多的配置选择。(如何在制作软件中安装插件请参考https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/app-blender.html#integrated-submission-script-setup">https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/app-blender.html#integrated-submission-script-setup)


安装插件过后,重启启动 3dsmax 软件,会多出一项 Deadline 菜单栏。在 3dsmax 中打开渲染文件后,点击 Deadline 菜单项准备任务提交




注意:在 Render 栏的 Render 中要设置输出文件目标目录为共享服务器目录,渲染完成后会自动将结果文件拷贝到共享路径中,方便用户从统一位置下载。



点击 SUBMIT 进行完整性检查,通过后会在 Deadline 中生成 Job,开启渲染工作,如下



  • 在 Job 中列举出当前的所有 Job。

  • 在 Tasks 中列出当前 Job 分解成的多个 task 并行渲染进度。

  • 在 Slaves 中列举出各个渲染节点的当前状态,是否是空闲还是参与某个渲染任务。



针对每一个渲染完成的 task,可以直接查看其结果文件

Deadline 使用过程中的 Troubleshooting 一些注意事项

查看渲染节点的运行信息

当某个渲染节点不能正常工作时,可以查看每个节点的运行日志,查找错误原因。在选择的 Slave 上右键选择 Connect to Slave Log… .


登录进渲染节点实时查看渲染过程

当第个任务的渲染时间过长时,可以登录进渲染节点实时查看渲染进度,判断渲染是否正常进行,如果渲染效果不符合预期,可以提前结束渲染 Job,待调整后重新渲染。



Deadline 会自动解析实例的 IP,调用 RDP 工具进行远程连接,输入定制 AMI 使用的用户名和密码就可以登录进渲染节点查看渲染过程,


渲染结果缺少相应的效果

如果渲染的结果文件缺少相应的效果,如缺少相应的贴图,则要保证所有的资产文件都被提交,在提交 Job 时确保资产提交选项为“Copy ALL External File References to Repository”:


如果渲染节点的日志中在”Updating Instance”处花费固定较长的时间

也是因为资产文件缺少,在资产文件加载时间超时后才会进入到下一步,解决办法同上。

禁用重新加载插件

如果在每次执行新的渲染任务时,都重新加载渲染插件,则每个任务都会有固定的启动,表现为每个 task 的“Startup Time”不为 0,建议禁用此选项,以提升渲染任务有效率。除非有因为缓存原因导致渲染结果不正常的情况发生。

渲染文件的资产文件路径替换

当渲染文件是在其他环境中制作时,渲染文件中保存的资产文件路径为当地的文件路径,从其他环境将渲染文档归档后拷贝到 Deadline 客户端再提交时,资产文件的路径就变得不正确,此时可以使用 Deadline 的路径替换功能,将符合指定规则的路径替换为目标路径,如存在于公共文件服务器的资产文件路径,此时 Deadline 客户端得以正常提交渲染 Job。


节点同一时间只执行一个渲染任务

Deadline 可以让渲染同时执行多个渲染任务,但推荐一个渲染节点只并行执行一个渲染任务,当并行执行多个渲染任务时,由于渲染软件的原因,有些渲染任务会失败。

将 Mongodb 做成系统服务

分发服务器上的 Mongodb 并没有设置成自动启动,如果分发服务器发生重启,Mongodb 服务将不会运行,整个渲染工作将无法开展。建议将 Mongodb 做成系统服务,以便在系统启动时自动启动,请参考:https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/install-db-repo-manual-db-install.html#create-windows-service-windows">https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/install-db-repo-manual-db-install.html#create-windows-service-windows

Deadline 渲染效果提升

如下,是对同一 4K 渲染文件和 8K 渲染文件在本地环境和 AWS 云中 Deadline 环境中进行的渲染效率对比。本地环境中已经达到最大的资源使用,而云环境中,可以利用 Deadline 调度任意多的计算资源并行参与渲染,从而大大缩短渲染所需要时间。



600 帧基于 CPU 的 4K 文件渲染对比



2400 帧基于 CPU 的 8K 渲染文件渲染对比



106 帧基于 GPU 的 2K 渲染文件渲染对比

进一步阅读

Deadline 不仅可以利用云中的计算独立开展渲染服务,同时也可以将本地渲染资源进行整合,不浪费本地资源,让本地和云上协作共同完成渲染任务。可以使用本地环境渲染非紧急任务,云中环境高效率渲染紧急任务。



本地云中协同渲染


如何实现本地与云中协同渲染请参考:https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/aws-portal-setup-overview.html">https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/manual/aws-portal-setup-overview.html


Deadline 参考文档:https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/index.html">https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User Manual/index.html

作者简介

岳亮,AWS 中国区解决方案架构师,致力于为客户提供基于 AWS 云平台的解决方案,同时对私有云及开源也有所涉及,期望与同行互相交流。


本文转载自 AWS 技术博客


原文链接:


https://amazonaws-china.com/cn/blogs/china/use-aws-deadline-improve-rendering-efficiency/


2019-09-26 17:391302
用户头像

发布了 1835 篇内容, 共 91.9 次阅读, 收获喜欢 73 次。

关注

评论

发布
暂无评论
发现更多内容

面试官:高并发场景下,你们是怎么保证数据的一致性的?

一灯架构

Java MySQL 10月月更

用任意类型编写代码——一文带你了解泛型编程

宇宙之一粟

Java 泛型编程 10月月更

Web3.0杂谈-#004(51/100)

hackstoic

NFT Web3.0

工赋开发者社区 | 当PLC与见“IT”:MES/MOM标准之ISA-95基础内容介绍

工赋开发者社区

【从0到1学算法】1. 如何获取题中关键信息

Geek_65222d

10月月更

Docker下,五分钟极速体验机器学习

程序员欣宸

Docker 10月月更

戏说系统安全(50/100)

hackstoic

系统安全

你是如何使用React高阶组件的?

beifeng1996

React

大数据ELK(十):使用VSCode操作猎聘网职位搜索案例

Lansonli

ELK 10月月更

2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。 字符串的 子序列 是经由原字符串删除一些(也可能不删除

福大大架构师每日一题

算法 rust 福大大

MyBatis学习笔记之JDBC

openpark

mybatis JDBC 10月月更

数组操作の旋转二维数组

掘金安东尼

算法 10月月更

16个分论坛出品标准大揭秘,期待你的申请!

开源社

简述构建微服务架构的四大挑战

穿过生命散发芬芳

微服务 10月月更

这些js原型及原型链面试题你能做对几道

loveX001

JavaScript

【牛客刷题-算法】2-算法入门-栈的压入、弹出序列

清风莫追

算法 10月月更

存储优化--分区与冷热分离

喵叔

10月月更

​Java进阶(三十八)快速排序

No Silver Bullet

Java 快速排序 10月月更

工赋开发者社区 | 某大型电子装备总装数字化工厂MES/MOM系统实施

工赋开发者社区

如何打通 SAP Cloud for Customer 系统和微信公众号的双向消息通信功能

Jerry Wang

node.js 微信 SAP 微信平台 10月月更

架构师的十八般武艺:线上运维

agnostic

运维

Python应用之计算三角形面积

二哈侠

10月月更 Python代码 计算三角形面积

开发者有话说|程序猿工作多年之后的感悟

慕枫技术笔记

个人成长

计算机网络——集线器与交换机的区别

StackOverflow

编程 计算机网络 10月月更

ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

矜辰所致

蓝牙 ESP32-C3 10月月更 GATT

COSCon'22主论坛来袭 开源站在十字路口

开源社

ESP32-C3 学习测试 蓝牙 篇(五、添加 characteristic)

矜辰所致

蓝牙 ESP32-C3 10月月更

JavaScript中this指向哪儿?如何确定this?-前端面试进阶

loveX001

JavaScript

【一Go到底】第一天---初识Goooooooooooooooooooooooo

指剑

Go go并发 10月月更

​Java进阶(三十九)Java集合类的排序,查找,替换操作

No Silver Bullet

Java 排序 查找 10月月更 替换

Collections-Arraylist源码解读(一)

知识浅谈

ArrayList 10月月更

利用 AWS Deadline 提升渲染效率_服务革新_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章