本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是截止日期云工作负载
借 AWS 助 Deadline Cloud,您可以提交任务以在云端运行应用程序,并处理数据,以生成对您的业务至关重要的内容或见解。Deadline Cloud 使用开放作业描述
工作负载从用户通过 CLI 或自动生成的 GUI 提交到队列的简单任务包,到为应用程序定义的工作负载动态生成任务包的集成提交者插件。
工作负载是如何从生产中产生的
要了解生产环境中的工作负载以及如何使用 Deadline Cloud 为其提供支持,请考虑它们是如何形成的。制作可能涉及创建视觉效果、动画、游戏、产品目录图像、用于建筑信息建模 (BIM) 的 3D 重建等。此内容通常由运行各种软件应用程序和自定义脚本的艺术或技术专家团队创建。团队成员使用生产管道在彼此之间传递数据。管道执行的许多任务都涉及密集的计算,如果在用户的工作站上运行,则需要几天的时间。
这些生产管道中的一些任务示例包括:
-
使用摄影测量应用程序处理为电影场景拍摄的照片,以重建带纹理的数字网格。
-
在 3D 场景中运行粒子模拟,为电视节目的爆炸视觉效果添加细节层。
-
将游戏关卡的数据转换为外部发布所需的格式,并应用优化和压缩设置。
-
为产品目录渲染一组图像,包括颜色、背景和照明的变化。
-
在 3D 模型上运行自定义开发的脚本,应用经过电影导演定制和批准的外观。
这些任务涉及许多需要调整的参数,以获得艺术效果或微调输出质量。通常会有一个 GUI 通过按钮或菜单来选择这些参数值,以便在应用程序中本地运行该进程。当用户运行该进程时,应用程序以及可能的主机本身都不能用于执行其他操作,因为它使用内存中的应用程序状态,并可能消耗主机计算机的所有 CPU 和内存资源。
在许多情况下,过程很快。在生产过程中,当质量和复杂性要求上升时,过程速度会减慢。在开发过程中耗时 30 秒的角色测试,应用于最终制作角色时,很容易变成 3 小时。通过这种进步,最初在 GUI 中运行的工作负载可能会变得过大而无法容纳。将其移植到 Deadline Cloud 可以提高运行这些流程的用户的工作效率,因为他们可以恢复对工作站的完全控制权,并且可以通过 Deadline Cloud 监视器跟踪更多迭代。
在 Deadline Cloud 中为工作负载开发支持时,需要考虑两个级别的支持:
-
将工作负载从用户工作站转移到 Deadline Cloud 农场,无需并行处理或加速。这种方法可能未充分利用农场中的可用计算资源,但是将长时间操作转移到批处理系统的能力使用户能够使用自己的工作站完成更多工作。
-
优化工作负载的并行度,使其利用 Deadline Cloud 农场的水平规模快速完成。
有时候,如何使工作负载并行运行是显而易见的。例如,计算机图形渲染的每一帧都可以独立完成。但是,重要的是不要被这种并行性所困扰。相反,要明白,将长期运行的工作负载转移到 Deadline Cloud 可以带来显著的好处,即使没有明显的方法可以将工作负载分开。
工作量的要素
要指定 Deadline Cloud 工作负载,请使用截止日期云 CLI 实现用户提交到队列的任务捆绑包
-
要运行的应用程序。该作业必须能够启动应用程序进程,因此需要安装可用的应用程序以及应用程序使用的任何许可,例如访问浮动许可证服务器。安装和许可通常是农场配置的一部分,而不是嵌入到任务包本身中。
-
作业参数定义。提交作业的用户体验受到其提供的参数的极大影响。示例参数包括数据文件、目录和应用程序配置。
-
文件数据流。当作业运行时,它会从用户提供的文件中读取输入,然后将其输出写入新文件。要使用作业附件和路径映射功能,作业必须为这些输入和输出指定目录或特定文件的路径。
-
步骤脚本。该步骤脚本使用正确的命令行选项运行应用程序二进制文件,以应用提供的作业参数。如果工作负载数据文件包含绝对路径引用而不是相对路径引用,它还会处理路径映射等细节。
工作负载可移植性
如果工作负载可以在多个不同的系统中运行,而无需在每次提交作业时对其进行更改,则该工作负载是可移植的。例如,它可能在装有不同共享文件系统的不同渲染农场上运行,也可以在不同的操作系统(如Linux或)上运行Windows。当你实现可移植的任务包时,用户可以更轻松地在他们的特定农场上运行作业,或者使其适应其他用例。
您可以通过以下几种方法使工作包便于携带。
-
使用作业包中的
PATH作业参数和资产引用,全面指定工作负载所需的输入数据文件。这种方法使作业可移植到基于共享文件系统的农场和制作输入数据副本的农场,例如Deadline Cloud作业附件功能。 -
使作业输入文件的文件路径引用可重定位,可在不同的操作系统上使用。例如,当用户从Windows工作站提交作业以在Linux队列上运行时。
-
使用可移植脚本在作业中实现命令。Python 和 bash 是脚本语言的两个示例,可以用这种方式使用。你应该考虑在车队的所有工作人员主机上同时提供它们。
-
使用脚本解释器二进制文件
bash,例如python或,并将脚本文件名作为参数。与使用设置了执行位的脚本文件相比Windows,这种方法适用于所有操作系统,包括在内Linux。 -
通过应用以下做法编写便携式 bash 脚本:
-
用单引号扩展模板路径参数,以处理带有空格和路径分隔符的Windows路径。
-
运行时Windows,注意与 MinGW 自动路径转换相关的问题。例如,它将类似的 AWS CLI 命令转换为类似于
aws logs tail "C:/Program Files/Git/aws/deadline/..."且无法正确跟踪日志的命令。aws logs tail /aws/deadline/...设置变量MSYS_NO_PATHCONV=1以关闭此行为。 -
在大多数情况下,相同的代码适用于所有操作系统。当代码需要不同时,使用
if/else构造来处理案例。if [[ "$(uname)" == MINGW* || "$(uname -s)" == MSYS_NT* ]]; then : # Code for Windows elif [[ "$(uname)" == Darwin ]]; then : # Code for MacOS else : # Code for Linux and other operating systems fi
-
-
您可以使用编写便携式 Python 脚本
pathlib来处理文件系统路径差异并避免特定操作功能。Python 文档包含这方面的注释,例如在信号库文档中。Linux特定功能支持标记为 “可用性:Linux”。
-
-
使用作业参数指定应用程序要求。使用农场管理员可以在队列环境中应用的一致惯例。
-
例如,您可以在任务中使用
CondaPackagesand/orRezPackages参数,使用默认参数值列出任务所需的应用程序包名称和版本。然后,您可以使用示例 conda 或 Rez 队列环境之一为作业提供虚拟环境。
-