本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为您的工作提供申请
您可以使用队列环境加载应用程序来处理任务。当您使用 Deadline Cloud 控制台创建服务管理队列时,您可以选择创建使用 conda 包管理器加载应用程序的队列环境。
如果你想使用不同的包管理器,你可以为该管理器创建一个队列环境。有关使用 Rez 的示例,请参见使用不同的包管理器。
Deadline Cloud 提供了一个 conda 频道,用于将精选的渲染应用程序加载到您的环境中。他们支持Deadline Cloud为数字内容创作应用程序提供的提交者。
你也可以加载软件让 conda-forge 在你的工作中使用。以下示例显示了使用 Deadline Cloud 提供的队列环境在运行作业之前加载应用程序的作业模板。
从 conda 频道获取应用程序
您可以为 Deadline Cloud 工作人员创建自定义队列环境,以安装您选择的软件。此示例队列环境与控制台用于服务管理队列的环境具有相同的行为。它直接运行 conda 来创建环境。
该环境为在工作人员上运行的每个 Deadline Cloud 会话创建一个新的 conda 虚拟环境,然后在完成后删除该环境。
Conda 缓存下载的软件包,这样就不需要再次下载了,但是每个会话都必须将所有软件包链接到环境中。
该环境定义了三个脚本,这些脚本在 Deadline Cloud 在工作人员上启动会话时运行。第一个脚本在调用onEnter操作时运行。它调用另外两个来设置环境变量。脚本完成运行后,设置了所有指定环境变量的 conda 环境即可使用。
有关该示例的最新版本,请参阅 deadline-cloud-samples 存储库中的 conda_queue_env_from_
如果您想使用在 conda 频道中不可用的应用程序,则可以在 Amazon S3 中创建一个 conda 频道,然后为该应用程序构建自己的软件包。请参阅 使用 S3 创建 conda 频道,了解更多信息。
从 conda-forge 获取开源库
本节介绍如何使用conda-forge频道中的开源库。以下示例是使用 polars Python 包的作业模板。
该任务设置了队列环境中定义的CondaPackages和CondaChannels参数,这些参数告诉 Deadline Cloud 从哪里获取软件包。
作业模板中设置参数的部分是:
- name: CondaPackages description: A list of conda packages to install. The job expects a Queue Environment to handle this. type: STRING default: polars - name: CondaChannels description: A list of conda channels to get packages from. The job expects a Queue Environment to handle this. type: STRING default: conda-forge
有关完整示例作业模板的最新版本,请参阅 stage_1_self_contained_template/template .yaml。
获取 搅拌机 来自 deadline-cloud 频道
以下示例显示了Blender从 deadline-cloud conda 频道获取的作业模板。该频道支持Deadline Cloud为数字内容创作软件提供的提交者,但您可以使用相同的渠道加载软件以供自己使用。
有关该deadline-cloud频道提供的软件列表,请参阅《Deadl AWS ine Cloud 用户指南》中的默认队列环境。
该作业设置队列环境中定义的CondaPackages参数,以告诉 Deadline Cloud 加载Blender到环境中。
作业模板中设置参数的部分是:
- name: CondaPackages type: STRING userInterface: control: LINE_EDIT label: Conda Packages groupLabel: Software Environment default: blender description: > Tells the queue environment to install Blender from the deadline-cloud conda channel.
有关完整示例作业模板的最新版本,请参阅 blender_render/template .yaml。
使用不同的包管理器
Deadline Cloud 的默认包管理器是 conda。如果您需要使用其他包管理器(例如)Rez,则可以创建一个自定义队列环境,其中包含改用您的包管理器的脚本。
此示例队列环境提供的行为与控制台用于服务管理队列的环境相同。它将 conda 包管理器替换为Rez.
该环境定义了三个脚本,这些脚本在 Deadline Cloud 在工作人员上启动会话时运行。第一个脚本在调用onEnter操作时运行。它调用另外两个来设置环境变量。脚本完成运行后,设置了所有指定Rez环境变量的环境即可使用该环境。
该示例假设您有一个客户管理的队列,该队列使用 Rez 包的共享文件系统。
有关该示例的最新版本,请参阅 deadline-cloud-sample s 存储库中的 rez_queue_env.yaml
使用 pip 作为软件包 Python-only
如果你的工作需要的应用程序或库是 PyPI 上可用的纯 Python 包,你可以使用 pip 和 Python 标准库venv模块来代替 conda 或。Rez当软件包未发布到 conda 频道时,或者当你想要一个比 conda 创建的更小的虚拟环境时,这种方法效果很好。与 conda 和不同Rez,pip 和 venv Python 本身包含在 Python 中,因此工作主机只需要一个python3解释器即可。PATHDeadline Cloud 服务管理的舰队提供了一个。
当作业设置PipPackages参数时,将在会话工作目录中截止日期云的 Pip 队列环境创建 Python 虚拟环境,使用 pip 将请求的软件包安装到会话工作目录中,然后将其激活,以便作业步骤在这些可用包的情况下运行。由于环境是在会话工作目录中创建的,因此 Deadline Cloud 会在会话结束时自动清理环境,您无需编写自己的清理逻辑。如果未设置作业PipPackages,则队列环境不执行任何操作,因此您可以将其添加到队列中,该队列也运行不使用它的作业。
要从 A WS CodeArtifact 存储库等私有索引而不是公有 PyPI 索引安装软件包,请设置队列环境提供的PipIndexUrl和PipExtraIndexUrls参数。
如果你不想配置队列环境,你可以改为在任务包中内联定义相同的 pip 环境。有关每种方法的示例,请参阅 deadline-cloud-samples 存储库中的 pip_package_job
对于生产队列,将包版本固定在PipPackages参数值中,而不是每次都安装最新版本。版本固定为您提供了可重现的环境,并避免软件包发布新版本时出现意外损坏。如果任务取决于提交者和适配器版本的匹配情况,请将两者固定到同一个版本上。
如果您的客户管理的队列工作人员为多个数字内容创作 (DCC) 应用程序运行作业,并且您安装了带有 pip 的 Deadline Cloud 适配器,则将每个适配器安装到自己的虚拟环境中。在同一个虚拟环境中一起安装多个适配器可能会导致 pip 将共享依赖关系解析为与其中一个适配器冲突的版本。
工作主机需要通过网络访问包源,例如 PyPI 或私有镜像,才能在会话启动时安装软件包。如果您的客户管理的队列工作人员在无法访问互联网的私有子网中运行,请使用包源的 VPC 终端节点、私有 pip 镜像,或者改为将软件包安装到您的工作人员 AMI 中。
下表总结了每个包管理器的权衡利弊,以帮助您选择使用哪一个。
| 软件包管理器 | 适用于 | Trade-offs |
|---|---|---|
| 康达(默认) | DCC 应用程序、复杂的原生依赖关系、跨平台软件包 | 更大的环境;软件包必须发布到 conda 频道 |
| Rez | 使用现有Rez基础设施的工作室管道 | 需要Rez安装在工作主机上,软件包存储库需要共享文件系统 |
| Pip | Python-only 软件包、 PyPI-hosted 库、轻量级安装 | 仅限于 Python 包;没有原生依赖关系解析 |
选择队列环境后,将其附加到队列中。您可以在 Deadline Cloud 控制台中从 “队列环境” 选项卡中为队列添加 YAML 模板,也可以使用 deadl ine: CreateQueueEnvironment 操作。有关控制台说明,请参阅 Deadl AWS ine Cloud 用户指南中的创建队列环境。要使用 AWS CLI 连接队列环境,请执行以下操作:
aws deadline create-queue-environment \ --farm-idFARM_ID\ --queue-idQUEUE_ID\ --priority 1 \ --template-type YAML \ --template file://queue-environment.yaml