Scheduling 部分 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Scheduling 部分

(必需)定义集群中使用的作业调度器以及该作业调度器管理的计算实例。您可以使用Slurm或 Amazon Batch 调度程序。每个调度器支持一组不同的设置和属性。

Scheduling: Scheduler: slurm ScalingStrategy: string SlurmSettings: MungeKeySecretArn: string ScaledownIdletime: integer QueueUpdateStrategy: string EnableMemoryBasedScheduling: boolean CustomSlurmSettings: [dict] CustomSlurmSettingsIncludeFile: string Database: Uri: string UserName: string PasswordSecretArn: string DatabaseName: string Dns: DisableManagedDns: boolean HostedZoneId: string UseEc2Hostnames: boolean SlurmQueues: - Name: string ComputeSettings: LocalStorage: RootVolume: Size: integer Encrypted: boolean VolumeType: string Iops: integer Throughput: integer EphemeralVolume: MountDir: string CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string CapacityType: string AllocationStrategy: string JobExclusiveAllocation: boolean CustomSlurmSettings: dict Tags: - Key: string Value: string HealthChecks: Gpu: Enabled: boolean Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string PlacementGroup: Enabled: boolean Id: string Name: string Proxy: HttpProxyAddress: string ComputeResources: - Name: string InstanceType: string Instances: - InstanceType: string MinCount: integer MaxCount: integer DynamicNodePriority: integer StaticNodePriority: integer SpotPrice: float DisableSimultaneousMultithreading: boolean SchedulableMemory: integer HealthChecks: Gpu: Enabled: boolean Efa: Enabled: boolean GdrSupport: boolean CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string Networking: PlacementGroup: Enabled: boolean Name: string CustomSlurmSettings: dict Tags: - Key: string Value: string CustomActions: OnNodeStart: Sequence: - Script: string Args: - string Script: string Args: - string OnNodeConfigured: Sequence: - Script: string Args: - string Script: string Args: - string Iam: InstanceProfile: string InstanceRole: string S3Access: - BucketName: string EnableWriteAccess: boolean KeyName: string AdditionalIamPolicies: - Policy: string Image: CustomAmi: string
Scheduling: Scheduler: awsbatch AwsBatchQueues: - Name: string CapacityType: string Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string ComputeResources: # this maps to a Batch compute environment (initially we support only 1) - Name: string InstanceTypes: - string MinvCpus: integer DesiredvCpus: integer MaxvCpus: integer SpotBidPercentage: float

Scheduling 属性

Scheduler必需String

指定使用的调度器的类型。支持的值为 slurmawsbatch

更新策略:如果更改此设置,则不允许更新。

注意

awsbatch 仅支持 alinux2 操作系统和 x86_64 平台。

ScalingStrategy可选String

允许你选择如何扩展动态 Slurm 节点。支持的值为 all-or-nothing greedy-all-or-nothingbest-effort,默认值为all-or-nothing

更新策略:可以在更新期间更改此设置。

注意

扩展策略仅适用于 Slurm 要恢复的节点,不适用于最终已经运行的节点。

  • all-or-nothing此策略严格遵循 all-or-nothing-approach,旨在避免在扩展过程结束时出现空闲实例。它是在 all-or-nothing 基础上运行的,这意味着它要么完全扩展,要么根本不扩展。请注意,当任务需要超过 500 个节点或跨多个计算资源时,临时启动的实例可能会产生额外成本。在三种可能的扩展策略中,该策略的吞吐量最低。扩展时间取决于每次执行 Slurm 恢复程序时提交的作业数量。此外,您的扩展不能远远超过每次执行的默认 RunInstances 资源帐户限制,默认情况下为 1000 个实例。更多详情可在 Amazon EC2 API 限制文档中找到

  • greedy-all-or-nothing 与该 all-or-nothing 策略类似,它旨在避免缩放后的空闲实例。此策略允许在扩展过程中临时超额扩展,以实现比该 all-or-nothing 方法更高的吞吐量,但也具有与 RunInstances 资源账户限制相同的扩展限制,即 1000 个实例。

  • best-effort 此策略优先考虑高吞吐量,即使这意味着某些实例在扩展过程结束时可能处于空闲状态。它会尝试根据任务的要求分配任意数量的节点,但有可能无法满足整个请求。与其他策略不同,尽力而为的方法可以积累比标准 RunInstances限制更多的实例,但代价是在执行多个扩展过程时会有闲置资源。

每种策略都旨在满足不同的扩展需求,允许您选择满足特定要求和限制的策略。

AwsBatchQueues

(可选) Amazon Batch 队列设置。仅支持一个队列。如果 Scheduler 设置为 awsbatch,则此部分是必需的。有关 awsbatch 调度器的更多信息,请参阅联网设置Amazon Batch (awsbatch)

AwsBatchQueues: - Name: string CapacityType: string Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string ComputeResources: # this maps to a Batch compute environment (initially we support only 1) - Name: string InstanceTypes: - string MinvCpus: integer DesiredvCpus: integer MaxvCpus: integer SpotBidPercentage: float

更新策略:可以在更新期间更改此设置。

AwsBatchQueues 属性

Name必需String

Amazon Batch 队列的名称。

更新策略:如果更改此设置,则不允许更新。

CapacityType可选String

Amazon Batch 队列使用的计算资源的类型。支持的值为ONDEMANDSPOTCAPACITY_BLOCK。默认值为 ONDEMAND

注意

如果将 CapacityType 设置为 SPOT,则您的账户必须包含 AWSServiceRoleForEC2Spot 服务相关角色。您可以使用以下 Amazon CLI 命令创建此角色。

$ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的竞价型实例请求的服务相关角色

更新策略:必须停止计算实例集才能更改此设置以进行更新。

Networking

(必需)定义 Amazon Batch 队列的网络配置。

Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string
Networking 属性
SubnetIds必需[String]

指定要在其中配置 Amazon Batch 队列的现有子网的 ID。目前仅支持一个子网。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

AssignPublicIp可选String

为 Amazon Batch 队列中的节点创建或分配公有 IP 地址。支持的值为 truefalse。默认值取决于您指定的子网。

更新策略:如果更改此设置,则不允许更新。

SecurityGroups可选[String]

Amazon Batch 队列使用的安全组列表。如果您未指定安全组,则 Amazon ParallelCluster 会创建新的安全组。

更新策略:可以在更新期间更改此设置。

AdditionalSecurityGroups可选[String]

Amazon Batch 队列使用的安全组列表。

更新策略:可以在更新期间更改此设置。

ComputeResources

(必需)定义 Amazon Batch 队列的 ComputeResources 配置。

ComputeResources: # this maps to a Batch compute environment (initially we support only 1) - Name: string InstanceTypes: - string MinvCpus: integer DesiredvCpus: integer MaxvCpus: integer SpotBidPercentage: float
ComputeResources 属性
Name必需String

Amazon Batch 队列计算环境的名称。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

InstanceTypes必需[String]

实例类型的 Amazon Batch 计算环境数组。所有实例类型都必须使用 x86_64 架构。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

MinvCpus可选Integer

Amazon Batch 计算环境可以使用的最少 vCPU 数量。

更新策略:可以在更新期间更改此设置。

DesiredVcpus可选Integer

Amazon Batch 计算环境中所需的 vCPU 数量。 Amazon Batch MaxvCpus根据任务队列中的需求在MinvCpus和之间调整此值。

更新策略:在更新期间不分析此设置。

MaxvCpus可选Integer

Amazon Batch 计算环境的最大 vCPU 数量。不能将此值设置为低于 DesiredVcpus

更新策略:更新期间不能减小此设置。

SpotBidPercentage可选Float

在启动实例之前,与该实例类型的按需价格相比,EC2 竞价型实例价格可以达到的最大百分比。默认值为 100 (100%)。支持的范围是 1-100

更新策略:可以在更新期间更改此设置。

SlurmQueues

(可选)Slurm 队列的设置。如果 Scheduler 设置为 slurm,则此部分是必需的。

SlurmQueues: - Name: string ComputeSettings: LocalStorage: RootVolume: Size: integer Encrypted: boolean VolumeType: string Iops: integer Throughput: integer EphemeralVolume: MountDir: string CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string CapacityType: string AllocationStrategy: string JobExclusiveAllocation: boolean CustomSlurmSettings: dict Tags: - Key: string Value: string HealthChecks: Gpu: Enabled: boolean Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string PlacementGroup: Enabled: boolean Id: string Name: string Proxy: HttpProxyAddress: string ComputeResources: - Name: string InstanceType: string Instances: - InstanceType: string MinCount: integer MaxCount: integer DynamicNodePriority: integer StaticNodePriority: integer SpotPrice: float DisableSimultaneousMultithreading: boolean SchedulableMemory: integer HealthChecks: Gpu: Enabled: boolean Efa: Enabled: boolean GdrSupport: boolean CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string Networking: PlacementGroup: Enabled: boolean Name: string CustomSlurmSettings: dict Tags: - Key: string Value: string CustomActions: OnNodeStart: Sequence: - Script: string Args: - string Script: string Args: - string OnNodeConfigured: Sequence: - Script: string Args: - string Script: string Args: - string Iam: InstanceProfile: string InstanceRole: string S3Access: - BucketName: string EnableWriteAccess: boolean KeyName: string AdditionalIamPolicies: - Policy: string Image: CustomAmi: string

更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。

SlurmQueues 属性

Name必需String

Slurm 队列的名称。

注意

更新期间,集群大小可能会发生变化。有关更多信息,请参阅集群容量大小和更新

更新策略:如果更改此设置,则不允许更新。

CapacityReservationTarget
注意

CapacityReservationTarget已在 3.3.0 Amazon ParallelCluster 版本中添加。

CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string

指定队列计算资源的按需容量预留。

CapacityReservationId可选String

要用于队列计算资源的现有容量预留的 ID。该 ID 可以指的是 ODCRML 的容量块。

预留必须使用与实例相同的平台。例如,如果您的实例在 rhel8 上运行,则您的容量预留必须在 Red Hat Enterprise Linux 平台上运行。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的支持的平台

注意

如果在集群配置中包含 Instances,则必须从配置中排除此队列级别 CapacityReservationId 设置。

CapacityReservationResourceGroupArn可选String

用作队列计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 Amazon ParallelCluster 根据以下条件确定并使用资源组中最适当的容量预留。

在队列的所有计算资源和可用区中,资源组必须为可用区中的每种实例类型保留至少一个 ODCR。有关更多信息,请参阅 使用 ODCR(按需容量预留)启动实例

有关多子网配置要求的更多信息,请参阅 Networking/SubnetIds

注意

3.4.0 Amazon ParallelCluster 版本中添加了多个可用区。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

CapacityType可选String

Slurm 队列使用的计算资源的类型。支持的值为 ONDEMANDSPOT。默认值为 ONDEMAND

注意

如果将 CapacityType 设置为 SPOT,则您的账户必须具有 AWSServiceRoleForEC2Spot 服务相关角色。您可以使用以下 Amazon CLI 命令创建此角色。

$ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的竞价型实例请求的服务相关角色

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

AllocationStrategy可选String

Instances 中定义的所有计算资源指定分配策略。

有效值:lowest-price | capacity-optimized

默认值:lowest-price

lowest-price
  • 如果指定 CapacityType = ONDEMAND,EC2 Fleet 将使用价格来确定顺序,并最先启动价格最低的实例。

  • 如果使用 CapacityType = SPOT,EC2 Fleet 将从具有可用容量的最低价格竞价型实例池中启动实例。如果实例池的容量在达到您所需的容量之前耗尽,EC2 Fleet 将通过启动实例来满足您的请求。具体而言,EC2 Fleet 将从具有可用容量的最低价格竞价型实例池中启动实例。EC2 Fleet 可能会从多个不同的池中启动竞价型实例。

  • 如果设置了CapacityType = CAPACITY_BLOCK,则没有分配策略,因此无法配置AllocationStrategy参数。

capacity-optimized
  • 如果设置 CapacityType = ONDEMAND,则 capacity-optimized 不可用。

  • 如果设置 CapacityType = SPOT,EC2 Fleet 将从容量最适合所要启动的实例数的竞价型实例池中启动实例。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

注意

从 Amazon ParallelCluster 版本 3.3.0 开始支持 AllocationStrategy

JobExclusiveAllocation可选String

如果设置为 true,则 Slurm 分区 OverSubscribe 标志设置为 EXCLUSIVE。当 OverSubscribe=EXCLUSIVE 时,分区中的作业将对分配的所有节点具有独占访问权限。有关更多信息,请参阅 Slurm 文档中的 EXCLUSIVE

有效值:true | false

默认值:false

更新策略:可以在更新期间更改此设置。

注意

从 Amazon ParallelCluster 版本 3.7.0 开始支持 JobExclusiveAllocation

CustomSlurmSettings可选Dict

定义自定义 Slurm 分区(队列)配置设置。

指定应用于队列(分区)的自定义 Slurm 配置参数键值对的字典。

每个单独的键值对(例如 Param1: Value1)都以 Param1=Value1 格式单独添加到 Slurm 分区配置行的末尾。

您只能指定未在 CustomSlurmSettings 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

Amazon ParallelCluster 仅检查参数是否在拒绝列表中。 Amazon ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您负责验证自己的自定义 Slurm 配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。

有关如何使用指定自定义Slurm配置参数的更多信息 Amazon ParallelCluster,请参阅Slurm 配置自定义

有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf

更新策略:可以在更新期间更改此设置。

注意

从 Amazon ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Tags可选,[字符串])

标签键值对的列表。ComputeResource 标签覆盖 Tags 部分SlurmQueues/Tags 中指定的重复标签。

Key可选String

标签键。

Value可选String

标签值。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

HealthChecks可选

指定队列中所有计算资源上的计算节点运行状况检查。

Gpu可选

指定队列中所有计算资源上的 GPU 运行状况检查。

注意

Amazon ParallelCluster 在使用 alinux2 ARM 操作系统的节点Gpu中不支持HealthChecks/。这些平台不支持 NVIDIA 数据中心 GPU 管理器 (DCGM)

Enabled可选Boolean

是否 Amazon ParallelCluster 对计算节点执行 GPU 运行状况检查。默认值为 false

Gpu 运行状况检查行为
  • 如果 Gpu/Enabled 设置为 true,则 Amazon ParallelCluster 对队列中的计算资源执行 GPU 运行状况检查。

  • Gpu 运行状况检查会对计算资源执行 GPU 运行状况检查,以防止在 GPU 降级的节点上提交作业。

  • 如果某个计算节点未通过 Gpu 运行状况检查,则该计算节点的状态将更改为 DRAIN。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后,如果该计算节点是动态节点,则会终止;如果是静态节点,则会被替换。

  • Gpu 运行状况检查的持续时间取决于所选的实例类型、实例中的 GPU 数量和 Gpu 运行状况检查目标的数量(等同于作业 GPU 目标的数量)。对于具有 8 个 GPU 的实例,持续时间通常少于 3 分钟。

  • 如果 Gpu 运行状况检查在不受支持的实例上运行,它将退出,作业将在计算节点上运行。例如,如果一个实例没有 GPU,或者一个实例有 GPU,但不是 NVIDIA GPU,则运行状况检查将会退出,作业将在计算节点上运行。仅支持 NVIDIA GPU。

  • Gpu 运行状况检查使用 dcgmi 工具对节点执行运行状况检查,并采取以下步骤:

    当在节点中开始 Gpu 运行状况检查时:

    1. 它会检测 nvidia-dcgmnvidia-fabricmanager 服务是否正在运行。

    2. 如果这些服务未运行,则 Gpu 运行状况检查将会启动这些服务。

    3. 它会检测是否启用了持久性模式。

    4. 如果未启用持久性模式,则 Gpu 运行状况检查将会启用该模式。

    在运行状况检查结束时,Gpu 运行状况检查会将这些服务和资源还原到其初始状态。

  • 如果作业分配给一组特定的节点 GPU,则 Gpu 运行状况检查仅在该特定集合上运行。否则,Gpu 运行状况检查将在节点中的所有 GPU 上运行。

  • 如果计算节点同时收到 2 个或更多个 Gpu 运行状况检查请求,则仅运行第一个运行状况检查,并跳过其他运行状况检查。针对节点 GPU 的运行状况检查也是如此。您可以查看日志文件以获取有关此情况的更多信息。

  • /var/log/parallelcluster/slurm_health_check.log 文件中提供了特定计算节点的运行状况检查日志。该文件位于 Amazon CloudWatch 的集群 CloudWatch 日志组中,您可以在其中找到:

    • 有关 Gpu 运行状况检查运行的操作的详细信息,包括启用和禁用服务以及持久性模式。

    • GPU 标识符、序列号和 UUID。

    • 运行状况检查输出。

更新策略:可以在更新期间更改此设置。

注意

HealthChecks从 3.6.0 Amazon ParallelCluster 版开始受支持。

Networking

(必需)定义 Slurm 队列的网络配置。

Networking: SubnetIds: - string AssignPublicIp: boolean SecurityGroups: - string AdditionalSecurityGroups: - string PlacementGroup: Enabled: boolean Id: string Name: string Proxy: HttpProxyAddress: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Networking 属性
SubnetIds必需[String]

您在其中配置 Slurm 队列的现有子网的 ID。

如果您在 SlurmQueues/ComputeResources/InstanceType 中配置实例类型,则只能定义一个子网。

如果您在 SlurmQueues/ComputeResources/Instances 中配置实例类型,则可以定义单个子网或多个子网。

如果您使用多个子网,则为队列定义的所有子网都必须位于同一 VPC 中,每个子网位于单独的可用区 (AZ) 中。

例如,假设您为队列定义了 subnet-1 和 subnet-2。

subnet-1subnet-2 不能都在 AZ-1 中。

subnet-1 可以在 AZ-1 中,subnet-2 可以在 AZ-2 中。

如果您只配置一种实例类型并想要使用多个子网,请在 Instances 而不是 InstanceType 中定义您的实例类型。

例如,定义 ComputeResources/Instances/InstanceType=instance.type 而不是 ComputeResources/InstanceType=instance.type

注意

不支持在不同的可用区之间使用 Elastic Fabric Adapter (EFA)。

使用多个可用区可能会导致存储网络延迟增加,并提高可用区间的数据传输成本。例如,当实例访问位于不同 AZ 的文件存储时,可能会发生这种情况。有关更多信息,请参阅同一 Amazon Web Services 区域内的数据传输

集群更新为从使用单个子网改为使用多个子网:
  • 假设集群的子网定义是用单个子网和一个适用于 Lustre for Lustre 文件系统的 Amazon ParallelCluster 托管 FSx 来定义的。则您无法使用更新的子网 ID 定义直接更新此集群。要更新该集群,必须先将托管文件系统更改为外部文件系统。有关更多信息,请参阅 将 Amazon ParallelCluster 托管存储转换为外部存储

  • 假设集群的子网定义是使用单个子网和外部 Amazon EFS 文件系统,如果 EFS 挂载目标并非对定义要添加的多个子网的所有 ZA 都存在,则您无法使用更新的子网 ID 定义直接更新此集群。要使集群更新或创建集群,必须先为定义的多个子网的所有 AZ 创建所有挂载目标。

可用区和集群容量预留定义于 CapacityReservationResourceGroupArn
  • 如果定义的容量预留资源组所涵盖的实例类型和可用区集合与为队列定义的实例类型和可用区集合之间没有重叠,则无法创建集群。

  • 如果定义的容量预留资源组所涵盖的实例类型和可用区集与为队列定义的一组实例类型和可用区之间存在部分重叠,则可以创建集群。 Amazon ParallelCluster 会发送一条警告消息,说明这种情况存在部分重叠。

  • 有关更多信息,请参阅 使用 ODCR(按需容量预留)启动实例

注意

3.4.0 Amazon ParallelCluster 版本中添加了多个可用区。

警告

此警告适用于 3.3.1 之前的所有 3.x.y Amazon ParallelCluster 版本。 Amazon ParallelCluster 如果更改此参数,版本 3.3.1 不会受到影响。

对于 3.3.1 之前的 Amazon ParallelCluster 3 个版本:

更改此参数并更新集群会创建一个新的托管的 FSx for Lustre 文件系统,并在不保留现有数据的情况下删除现有的托管的 FSx for Lustre 文件系统。这会导致数据丢失。如果想要保留数据,请确保在继续操作之前备份现有 FSx for Lustre 文件系统中的数据。有关更多信息,请参阅 FSx for Lustre 用户指南 中的使用备份

如果添加了新子网值,更新策略:可以在更新期间更改此设置。

如果删除了子网值,更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

AssignPublicIp可选String

为 Slurm 队列中的节点创建或分配公有 IP 地址。支持的值为 truefalse。您指定的子网决定默认值。具有公有 IP 的子网默认为分配公有 IP 地址。

如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须将 HeadNode/Networking/设置为ElasticIptrue以提供公共访问权限。 Amazon 公有 IP 只能分配给使用单个网络接口启动的实例。对于这种情况,我们建议您使用 NAT 网关为集群计算节点提供公有访问权限。在这种情况下,请将 AssignPublicIp 设置为 false。有关 IP 地址的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在实例启动期间分配公有 IPv4 地址

更新策略:如果更改此设置,则不允许更新。

SecurityGroups可选[String]

用于Slurm 队列的安全组的列表。如果未指定安全组,则会为您 Amazon ParallelCluster 创建安全组。

验证您的SharedStorage系统是否正确配置了安全组。

警告

此警告适用于所有 3. xy Amazon ParallelCluster 版本 3.3.0 之前的版本。 Amazon ParallelCluster 如果更改此参数,版本 3.3.0 不会受到影响。

对于 3.3.0 之前的 Amazon ParallelCluster 3 个版本:

更改此参数并更新集群会创建一个新的托管的 FSx for Lustre 文件系统,并在不保留现有数据的情况下删除现有的托管的 FSx for Lustre 文件系统。这会导致数据丢失。如果想要保留数据,请确保备份现有 FSx for Lustre 文件系统中的数据。有关更多信息,请参阅 FSx for Lustre 用户指南 中的使用备份

警告

如果您为计算实例启用 Efa,请确保启用了 EFA 的实例是允许进出自身的所有入站和出站流量的安全组的成员。

更新策略:可以在更新期间更改此设置。

AdditionalSecurityGroups可选[String]

用于Slurm 队列的其他安全组的列表。

更新策略:可以在更新期间更改此设置。

PlacementGroup可选

指定 Slurm 队列的置放群组设置。

PlacementGroup: Enabled: boolean Id: string Name: string

更新策略:必须停止所有计算节点才能删除托管置放群组。必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Enabled可选Boolean

指示是否对 Slurm 队列使用置放群组。默认值为 false

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Id可选String

Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组名称不是 ID

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Name可选String

Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组名称不是 ID

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

注意
Proxy可选

指定 Slurm 队列的代理设置。

Proxy: HttpProxyAddress: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

HttpProxyAddress可选String

为 Slurm 队列定义 HTTP 或 HTTPS 代理服务器。通常为 https://x.x.x.x:8080

没有默认值。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Image

(可选)指定要用于 Slurm 队列的映像。要对所有节点使用相同的 AMI,请使用Image部分中的CustomAmi设置。

Image: CustomAmi: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Image 属性
CustomAmi可选String

要用于 Slurm 队列的 AMI,而不是默认 AMI。您可以使用 pcluster CLI 命令查看默认 AMI 的列表。

注意

AMI 必须基于与头节点相同的操作系统。

pcluster list-official-images

如果自定义 AMI 需要其他权限才能启动,则必须将这些权限添加到头节点策略中。

例如,如果自定义 AMI 具有与之关联的加密快照,则头节点策略中需要以下其他策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ReEncrypt*", "kms:CreateGrant", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:<AWS_REGION>:<AWS_ACCOUNT_ID>:key/<AWS_KMS_KEY_ID>" ] } ] }

要排查自定义 AMI 验证警告,请参阅排查自定义 AMI 问题

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

ComputeResources

(必需)定义 Slurm 队列的 ComputeResources 配置。

注意

更新期间,集群大小可能会发生变化。有关更多信息,请参阅集群容量大小和更新

ComputeResources: - Name: string InstanceType: string Instances: - InstanceType: string MinCount: integer MaxCount: integer DynamicNodePriority: integer StaticNodePriority: integer SpotPrice: float DisableSimultaneousMultithreading: boolean SchedulableMemory: integer HealthChecks: Gpu: Enabled: boolean Efa: Enabled: boolean GdrSupport: boolean CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string Networking: PlacementGroup: Enabled: boolean Name: string CustomSlurmSettings: dict Tags: - Key: string Value: string

更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。

ComputeResources 属性
Name必需String

Slurm 队列计算环境的名称。名称最多可以包含 25 个字符。

更新策略:如果更改此设置,则不允许更新。

InstanceType必需String

此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构。实例可以使用 x86_64arm64 架构。

集群配置必须定义InstanceType实例。如果两者都被定义, Amazon ParallelCluster 则失败。

定义 InstanceType 时,不能定义多个子网。如果您只配置一种实例类型并想要使用多个子网,请在 Instances 而不是 InstanceType 中定义您的实例类型。有关更多信息,请参阅 Networking/SubnetIds

如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须按照中所述在私有子网中启动计算实例使用两个子网的 Amazon ParallelCluster。 Amazon 只能将公有 IP 分配给使用单个网络接口启动的实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在实例启动期间分配公有 IPv4 地址

更新策略:必须停止计算实例集才能更改此设置以进行更新。

Instances必需

指定计算资源的实例类型列表。要为实例类型列表指定分配策略,请参阅 AllocationStrategy

集群配置必须定义 InstanceTypeInstances。如果同时定义了两者,则 Amazon ParallelCluster 将会失败。

有关更多信息,请参阅 Slurm 的多实例类型分配

Instances: - InstanceType: string

更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。

InstanceType必需String

要在此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构,即 x86_64arm64

Instances 中列出的实例类型必须:

  • 具有相同数量的 vCPU,或者,如果 DisableSimultaneousMultithreading 设置为 true,则必须具有相同数量的内核。

  • 具有相同制造商的相同数量的加速器。

  • 支持 EFA,如果 Efa/Enabled 设置为 true

Instances 中列出的实例类型可以具有:

如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须按照中所述在私有子网中启动计算实例使用两个子网的 Amazon ParallelCluster。 Amazon 公有 IP 只能分配给使用单个网络接口启动的实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在实例启动期间分配公有 IPv4 地址

更新策略:必须停止计算实例集才能更改此设置以进行更新。

注意

Instances从 3.3.0 Amazon ParallelCluster 版开始受支持。

MinCount可选Integer

Slurm 计算资源使用的最小实例数量。默认值是 0。

注意

更新期间,集群大小可能会发生变化。有关更多信息,请参阅集群容量大小和更新

更新策略:必须停止计算实例集才能更改此设置以进行更新。

MaxCount可选Integer

Slurm 计算资源使用的最大实例数量。默认值为 10。

使用时CapacityType = CAPACITY_BLOCKMaxCount必须等于MinCount和大于 0,因为容量块预留的所有实例部分都作为静态节点进行管理。

在创建集群时,头节点会等待所有静态节点准备就绪,然后再发出集群创建成功的信号。但是,在使用时CapacityType = CAPACITY_BLOCK,与容量块关联的计算资源的节点部分将不考虑用于此检查。即使并非所有已配置的容量块都处于活动状态,也会创建集群。

注意

更新期间,集群大小可能会发生变化。有关更多信息,请参阅集群容量大小和更新

DynamicNodePriority可选Integer

队列计算资源中动态节点的优先级。该优先级映射到计算资源动态节点的 Slurm 节点 Weight 配置参数。默认值为 1000

Slurm 将 Weight 值最低的节点设置为最高优先级。

警告

在 Slurm 分区(队列)中使用许多不同的 Weight 值可能会减慢队列中作业调度的速度。

在 Amazon ParallelCluster 3.7.0 之前的版本中,静态节点和动态节点的默认权重相同。1在这种情况下,由于静态和动态节点的命名架构,Slurm 可能会将空闲的动态节点的优先级设置为高于空闲的静态节点。如果所有其他条件相同,Slurm 会按名称的字母顺序调度节点。

注意

DynamicNodePriority已在 3.7.0 Amazon ParallelCluster 版本中添加。

更新策略:可以在更新期间更改此设置。

StaticNodePriority可选Integer

队列计算资源中静态节点的优先级。该优先级映射到计算资源静态节点的 Slurm 节点 Weight 配置参数。默认值为 1

Slurm 将 Weight 值最低的节点设置为最高优先级。

警告

在 Slurm 分区(队列)中使用许多不同的 Weight 值可能会减慢队列中作业调度的速度。

注意

StaticNodePriority已在 3.7.0 Amazon ParallelCluster 版本中添加。

更新策略:可以在更新期间更改此设置。

SpotPrice可选Float

在启动任何实例之前为 EC2 竞价型实例支付的最高价格。默认值为按需价格。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

DisableSimultaneousMultithreading可选Boolean

如果为 true,则禁用 Slurm 队列中节点上的多线程。默认值为 false

并非所有实例类型都可禁用多线程。有关支持禁用多线程的实例类型列表,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的每种实例类型的 CPU 内核以及每个 CPU 内核的线程

更新策略:必须停止计算实例集才能更改此设置以进行更新。

SchedulableMemory可选Integer

在 Slurm 参数 RealMemory 中为计算资源的计算节点配置的内存量,以 MiB 为单位。如果启用了 SlurmSettings/EnableMemoryBasedScheduling,则此值为可供作业使用的节点内存的上限。默认值是 Amazon EC2 实例类型中列出并由亚马逊 EC2 API 返回的内存的 95% DescribeInstanceTypes。确保将以 GiB 为单位给出的值转换为 MiB 单位。

支持的值:1-EC2Memory

EC2Memory是在 Amazon EC2 实例类型中列出并由亚马逊 EC2 API 返回的内存(以 MiB 为单位)。DescribeInstanceTypes确保将以 GiB 为单位给出的值转换为 MiB 单位。

当启用了 SlurmSettings/EnableMemoryBasedScheduling 时,此选项最相关。有关更多信息,请参阅 Slurm 基于内存的调度

注意

从 Amazon ParallelCluster 版本 3.2.0 开始支持 SchedulableMemory

从版本 3.2.0 开始,默认情况下, Amazon ParallelCluster 将Slurm计算节点配置RealMemory为 Amazon EC2 API 返回的内存的 95%。DescribeInstanceTypes此配置与 EnableMemoryBasedScheduling 的值无关。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

HealthChecks可选

指定计算资源上的运行状况检查。

Gpu可选

指定计算资源上的 GPU 运行状况检查。

Enabled可选Boolean

是否 Amazon ParallelCluster 对队列中的计算资源执行 GPU 运行状况检查。默认值为 false

注意

Amazon ParallelCluster 在使用 alinux2 ARM 操作系统的节点Gpu中不支持HealthChecks/。这些平台不支持 NVIDIA 数据中心 GPU 管理器 (DCGM)

Gpu 运行状况检查行为
  • 如果 Gpu /设置Enabledtrue,则对计算资源 Amazon ParallelCluster 执行 GPU 运行状况检查。

  • Gpu 运行状况检查会对计算资源执行运行状况检查,以防止在 GPU 降级的节点上提交作业。

  • 如果某个计算节点未通过 Gpu 运行状况检查,则该计算节点的状态将更改为 DRAIN。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后,如果该计算节点是动态节点,则会终止;如果是静态节点,则会被替换。

  • Gpu 运行状况检查的持续时间取决于所选的实例类型、实例中的 GPU 数量和 Gpu 运行状况检查目标的数量(等同于作业 GPU 目标的数量)。对于具有 8 个 GPU 的实例,持续时间通常少于 3 分钟。

  • 如果 Gpu 运行状况检查在不受支持的实例上运行,它将退出,作业将在计算节点上运行。例如,如果一个实例没有 GPU,或者一个实例有 GPU,但不是 NVIDIA GPU,则运行状况检查将会退出,作业将在计算节点上运行。仅支持 NVIDIA GPU。

  • Gpu 运行状况检查使用 dcgmi 工具对节点执行运行状况检查,并采取以下步骤:

    当在节点中开始 Gpu 运行状况检查时:

    1. 它会检测 nvidia-dcgmnvidia-fabricmanager 服务是否正在运行。

    2. 如果这些服务未运行,则 Gpu 运行状况检查将会启动这些服务。

    3. 它会检测是否启用了持久性模式。

    4. 如果未启用持久性模式,则 Gpu 运行状况检查将会启用该模式。

    在运行状况检查结束时,Gpu 运行状况检查会将这些服务和资源还原到其初始状态。

  • 如果作业分配给一组特定的节点 GPU,则 Gpu 运行状况检查仅在该特定集合上运行。否则,Gpu 运行状况检查将在节点中的所有 GPU 上运行。

  • 如果计算节点同时收到 2 个或更多个 Gpu 运行状况检查请求,则仅运行第一个运行状况检查,并跳过其他运行状况检查。针对节点 GPU 的运行状况检查也是如此。您可以查看日志文件以获取有关此情况的更多信息。

  • /var/log/parallelcluster/slurm_health_check.log 文件中提供了特定计算节点的运行状况检查日志。此文件可在 Amazon CloudWatch 的集群 CloudWatch 日志组中找到,您可以在其中找到:

    • 有关 Gpu 运行状况检查运行的操作的详细信息,包括启用和禁用服务以及持久性模式。

    • GPU 标识符、序列号和 UUID。

    • 运行状况检查输出。

更新策略:可以在更新期间更改此设置。

注意

HealthChecks从 3.6.0 Amazon ParallelCluster 版开始受支持。

Efa可选

为 Slurm 队列中的节点指定 Elastic Fabric Adapter (EFA) 设置。

Efa: Enabled: boolean GdrSupport: boolean

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Enabled可选Boolean

指定 Elastic Fabric Adapter (EFA) 已启用。要查看支持 EFA 的 EC2 实例的列表,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的支持的实例类型。有关更多信息,请参阅 Elastic Fabric Adapter。我们建议您使用集群 SlurmQueues/Networking/PlacementGroup 最大限度地缩短实例之间的延迟。

默认值为 false

注意

不支持在不同的可用区之间使用 Elastic Fabric Adapter (EFA)。有关更多信息,请参阅SubnetIds

警告

如果您在中定义自定义安全组 SecurityGroups,请确保您的启用 EFA 的实例是允许所有入站和出站流量进入自身的安全组的成员。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

GdrSupport可选Boolean

(可选)从 Amazon ParallelCluster 版本 3.0.2 开始,此设置无效。如果 Slurm 计算资源的实例类型和操作系统都支持 Elastic Fabric Adapter (EFA),则始终启用对 GPUDirect RDMA(远程直接内存访问)的 Elastic Fabric Adapter (EFA) 支持。

注意

Amazon ParallelCluster 版本 3.0.0 到 3.0.1:已为计算资源启用对 GpuDirect RDMA 的支持。Slurm特定操作系统(Osalinux2centos7ubuntu1804ubuntu2004)上的特定实例类型 (p4d.24xlarge) 提供对 GPUDirect RDMA 的支持。默认值为 False。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

CapacityReservationTarget
CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string

指定要用于计算资源的按需容量预留。

CapacityReservationId可选String

要用于队列计算资源的现有容量预留的 ID。该 ID 可以指的是 ODCRML 的容量块。

如果在计算资源级别指定此参数 InstanceType是可选的,则将自动从预留中检索该参数。

CapacityReservationResourceGroupArn可选String

指示用作计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 Amazon ParallelCluster 确定并使用组中最适当的容量预留。对于为计算资源列出的每种实例类型,资源组必须至少有一个 ODCR。有关更多信息,请参阅 使用 ODCR(按需容量预留)启动实例

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

注意

从 Amazon ParallelCluster 版本 3.3.0 开始添加了 CapacityReservationTarget

Networking
Networking: PlacementGroup: Enabled: boolean Name: string

更新策略:必须停止所有计算节点才能删除托管置放群组。必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

PlacementGroup可选

指定计算资源的置放群组设置。

Enabled可选Boolean

指示是否对计算资源使用置放群组。

  • 如果设置为 true 而未定义 Name,则无论 SlurmQueues/Networking/PlacementGroup 设置如何,都会为该计算资源分配自己的托管置放群组。

  • 如果设置为 true 且定义了 Name,则无论 SlurmQueues/Networking/PlacementGroup 设置如何,都将为该计算资源分配命名的置放群组。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Name可选String

用于计算资源的现有集群置放群组的置放群组名称。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

注意
  • 如果 PlacementGroup/EnabledName 都未设置,则它们各自的值默认为 SlurmQueues/Networking/PlacementGroup 设置。

  • ComputeResources/Networking/已PlacementGroup在 3.3.0 Amazon ParallelCluster 版本中添加。

CustomSlurmSettings可选Dict

(可选)定义自定义 Slurm 节点(计算资源)配置设置。

指定应用于 Slurm 节点(计算资源)的自定义 Slurm 配置参数键值对的字典。

每个单独的键值对(例如 Param1: Value1)都以 Param1=Value1 格式单独添加到 Slurm 节点配置行的末尾。

您只能指定未在 CustomSlurmSettings 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

Amazon ParallelCluster 仅检查参数是否在拒绝列表中。 Amazon ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您负责验证自己的自定义 Slurm 配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。

有关如何使用指定自定义Slurm配置参数的更多信息 Amazon ParallelCluster,请参阅Slurm 配置自定义

有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf

更新策略:可以在更新期间更改此设置。

注意

从 Amazon ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Tags可选,[字符串])

标签键值对的列表。ComputeResource 标签覆盖 Tags 部分SlurmQueues/Tags 中指定的重复标签。

Key可选String

标签键。

Value可选String

标签值。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

ComputeSettings

(必需)定义 Slurm 队列的 ComputeSettings 配置。

ComputeSettings 属性

指定 Slurm 队列中节点的 ComputeSettings 的属性。

ComputeSettings: LocalStorage: RootVolume: Size: integer Encrypted: boolean VolumeType: string Iops: integer Throughput: integer EphemeralVolume: MountDir: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

LocalStorage可选

指定 Slurm 队列中节点的 LocalStorage 的属性。

LocalStorage: RootVolume: Size: integer Encrypted: boolean VolumeType: string Iops: integer Throughput: integer EphemeralVolume: MountDir: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

RootVolume可选

指定 Slurm 队列中节点的根卷的详细信息。

RootVolume: Size: integer Encrypted: boolean VolumeType: string Iops: integer Throughput: integer

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Size可选Integer

指定 Slurm 队列中节点的根卷大小,以吉字节 (GiB) 为单位。默认大小来自 AMI。如果使用不同的大小,则 AMI 必须支持 growroot

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Encrypted可选Boolean

如果为 true,则对 Slurm 队列中节点的根卷进行加密。默认值为 false

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

VolumeType可选String

指定 Slurm 队列中节点的 Amazon EBS 卷类型。支持的值为 gp2gp3io1io2sc1st1standard。默认值为 gp3

有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EBS 卷类型

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Iops可选Boolean

定义 io1io2gp3 类型卷的 IOPS 数。

默认值、支持的值以及 volume_size/volume_iops 比率因 VolumeTypeSize 而异。

VolumeType = io1

默认值:Iops = 100

支持的值:Iops = 100–64000 †

最大 volume_iops/volume_size 比率 = 50 IOPS/GiB。5000 IOPS 需要至少 100 GiB 的 volume_size

VolumeType = io2

默认值:Iops = 100

支持的值:Iops = 100–64000(io2 Block Express 卷为 256000)†

最大 Iops/Size 比率 = 500 IOPS/GiB。5000 IOPS 需要至少 10 GiB 的 Size

VolumeType = gp3

默认值:Iops = 3000

支持的值:Iops = 3000–16000 †

最大 Iops/Size 比率 = 500 IOPS/GiB(对于 IOPS 大于 3000 的卷)。

† 只有在 Nitro System 上构建的实例也配置超过 32000 IOPS 时,才能保证最大 IOPS。其他实例最高可具有 32000 IOPS。除非您修改卷,否则较早的 io1 卷可能无法实现完全性能。io2Block Express 卷在 R5b 实例类型上支持高达 256000 的 volume_iops 值。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 io2Block Express 卷

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Throughput可选Integer

定义 gp3 卷类型的吞吐量,以 MiB/s 为单位。此设置仅在 VolumeTypegp3 时有效。默认值为 125。支持的值:125–1000 MiB/s

ThroughputIops 的比率不能超过 0.25。1000 MiB/s 的最大吞吐量要求 Iops 设置至少为 4000。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

EphemeralVolume可选Boolean

指定临时卷的设置。临时卷是通过将所有实例存储卷合并到 ext4 文件系统格式的单个逻辑卷而创建的。默认值为 /scratch。如果实例类型没有任何实例存储卷,则不会创建临时卷。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的实例存储卷

EphemeralVolume: MountDir: string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

MountDir可选String

Slurm 队列中每个节点的临时卷的挂载目录。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

CustomActions

(可选)指定要在 Slurm 队列中的节点上运行的自定义脚本。

CustomActions: OnNodeStart: Sequence: - Script: string Args: - string Script: string Args: - string OnNodeConfigured: Sequence: - Script: string Args: - string Script: string Args: - string

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

CustomActions 属性
OnNodeStart可选String

指定在启动任何节点部署引导操作之前,要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。 Amazon ParallelCluster 不支持同一个自定义操作同时包含单个脚本和 Sequence。有关更多信息,请参阅 自定义引导操作

Sequence可选

要运行的脚本的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Script必需String

要使用的文件。文件路径可以 https://s3:// 开头。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Args可选[String]

要传递到脚本的参数的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Script必需String

用于单个脚本的文件。文件路径可以 https://s3:// 开头。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Args可选[String]

要传递到单个脚本的参数的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

OnNodeConfigured可选String

指定在所有节点引导操作完成之后,要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。 Amazon ParallelCluster 不支持同一个自定义操作同时包含单个脚本和 Sequence。有关更多信息,请参阅 自定义引导操作

Sequence可选

要运行的脚本的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Script必需String

要使用的文件。文件路径可以 https://s3:// 开头。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Args可选[String]

要传递到脚本的参数的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Script必需String

用于单个脚本的文件。文件路径可以 https://s3:// 开头。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

Args可选[String]

要传递到单个脚本的参数的列表。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

注意

Sequence是从 3.6.0 Amazon ParallelCluster 版本开始添加的。指定后Sequence,您可以列出自定义操作的多个脚本。 Amazon ParallelCluster 继续支持使用单个脚本配置自定义操作,不包括脚本Sequence

Amazon ParallelCluster 不支持同时包含单个脚本和Sequence同一个自定义操作。

Iam

(可选)定义 Slurm 队列的可选 IAM 设置。

Iam: S3Access: - BucketName: string EnableWriteAccess: boolean KeyName: string AdditionalIamPolicies: - Policy: string InstanceProfile: string InstanceRole: string

更新策略:可以在更新期间更改此设置。

Iam 属性
InstanceProfile可选String

指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例配置文件。您不能同时指定 InstanceProfileInstanceRole。格式为 arn:${Partition}:iam::${Account}:instance-profile/${InstanceProfileName}

如果指定此设置,则不能指定 S3AccessAdditionalIamPolicies 设置。

我们建议您指定 S3AccessAdditionalIamPolicies 设置中的一个或两个,因为添加到 Amazon ParallelCluster 中的功能通常需要新权限。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

InstanceRole可选String

指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例角色。您不能同时指定 InstanceProfileInstanceRole。格式为 arn:${Partition}:iam::${Account}:role/${RoleName}

如果指定此设置,则不能指定 S3AccessAdditionalIamPolicies 设置。

我们建议您指定 S3AccessAdditionalIamPolicies 设置中的一个或两个,因为添加到 Amazon ParallelCluster 中的功能通常需要新权限。

更新策略:可以在更新期间更改此设置。

S3Access可选

为 Slurm 队列指定存储桶。此设置用于生成针对 Slurm 队列中的存储桶授予指定访问权限的策略。

如果指定此设置,则不能指定 InstanceProfileInstanceRole 设置。

我们建议您指定 S3AccessAdditionalIamPolicies 设置中的一个或两个,因为添加到 Amazon ParallelCluster 中的功能通常需要新权限。

S3Access: - BucketName: string EnableWriteAccess: boolean KeyName: string

更新策略:可以在更新期间更改此设置。

BucketName必需String

存储桶的名称。

更新策略:可以在更新期间更改此设置。

KeyName可选String

存储桶的密钥。默认值为 *

更新策略:可以在更新期间更改此设置。

EnableWriteAccess可选Boolean

指示是否为存储桶启用写入权限。

更新策略:可以在更新期间更改此设置。

AdditionalIamPolicies可选

指定 Amazon EC2 的 IAM 策略的 Amazon 资源名称 (ARN) 列表。除了所需的权限外,此列表还附在用于Slurm队列的根角色上 Amazon ParallelCluster。

IAM 策略名称及其 ARN 不相同。不能使用名称。

如果指定此设置,则不能指定 InstanceProfileInstanceRole 设置。

我们建议您使用 AdditionalIamPolicies,因为 AdditionalIamPolicies 已经添加到 Amazon ParallelCluster 所需的权限中,而 InstanceRole 必须包含所有必需的权限。随着功能的不断添加,所需权限通常会随版本发生变化。

没有默认值。

AdditionalIamPolicies: - Policy: string

更新策略:可以在更新期间更改此设置。

Policy必需[String]

IAM 策略的列表。

更新策略:可以在更新期间更改此设置。

SlurmSettings

(可选)为 Slurm 定义应用到整个集群的设置。

SlurmSettings: ScaledownIdletime: integer QueueUpdateStrategy: string EnableMemoryBasedScheduling: boolean CustomSlurmSettings: [dict] CustomSlurmSettingsIncludeFile: string Database: Uri: string UserName: string PasswordSecretArn: string Dns: DisableManagedDns: boolean HostedZoneId: string UseEc2Hostnames: boolean

SlurmSettings 属性

ScaledownIdletime可选Integer

定义 Slurm 节点终止前没有作业的时间(以分钟为单位)。

默认值为 10

更新策略:必须停止计算实例集才能更改此设置以进行更新。

MungeKeySecretArn可选String

纯文本 Secrets Amazon Manager 密钥的亚马逊资源名称 (ARN),其中包含要在 Slurm 集群中使用的 base64 编码的 munge 密钥。此 munge 密钥将用于验证 Slurm 客户端命令和充当远程服务器的 Slurm 守护程序之间的 RPC 调用。如果未提供, Amazon ParallelCluster 将 MungeKeySecretArn 为集群生成一个随机 munge 密钥。

注意

MungeKeySecretArn从 3.8.0 Amazon ParallelCluster 版开始受支持。

警告

如果 MungeKeySecretArn 是新添加到现有集群中,则在回滚或稍后移除时 ParallelCluster不会恢复之前的 munge Key。 MungeKeySecretArn取而代之的是,将生成一个新的随机 munge 密钥。

如果 Amazon ParallelCluster 用户有权 DescribeSecret访问该特定机密资源, MungeKeySecretArn 则会进行验证。 MungeKeySecretArn 在以下情况下有效:

  • 指定的密钥存在,并且

  • 密钥为纯文本,包含有效的 base64 编码字符串,并且

  • 解码后的二进制 munge 密钥的大小介于 256 到 8192 位之间。

如果 pcluster 用户 IAM 策略不包括 DescribeSecret, MungeKeySecretArn则不进行验证并显示警告消息。有关更多信息,请参阅 基本 Amazon ParallelCluster pcluster 用户策略

更新时 MungeKeySecretArn,必须停止计算队列和所有登录节点。

如果修改了机密 ARN 中的密钥值,而 ARN 保持不变,则集群不会使用新的 munge 密钥自动更新。要使用秘密 ARN 的新 munge 密钥,您必须停止计算队列和登录节点,然后从头节点运行以下命令。

sudo /opt/parallelcluster/scripts/slurm/update_munge_key.sh

运行命令后,您可以恢复计算队列和登录节点:新配置的计算和登录节点将使用新的 munge 密钥自动启动。

要生成 base64 编码的自定义 munge 密钥,你可以使用 munge 软件中分发的 mungekey 实用程序,然后使用操作系统中普遍可用的 base64 实用程序对其进行编码。或者,你可以使用 bash(请将 bs 参数设置在 32 和 1024 之间)

dd if=/dev/random bs=128 count=1 2>/dev/null | base64 -w 0

或者 Python,如下所示:

import random import os import base64 # key length in bytes key_length=128 base64.b64encode(os.urandom(key_length)).decode("utf-8")

更新策略:新的更新策略,计算队列和登录节点已停止(错误地未在 3.7.0 中添加)。

QueueUpdateStrategy可选String

为具有以下更新策略的 SlurmQueues 部分参数指定替换策略:

更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。

仅在集群更新过程开始时使用 QueueUpdateStrategy 值。

有效值:COMPUTE_FLEET_STOP |DRAIN |TERMINATE

默认值:COMPUTE_FLEET_STOP

DRAIN

队列中更改了参数值的节点将设置为 DRAINING。处于此状态的节点不接受新作业,正在运行的作业会继续运行,直至完成。

在节点变成 idle (DRAINED) 之后,如果是静态节点,则将替换该节点;如果是动态节点,则将终止该节点。其他队列中未更改参数值的其他节点不受影响。

此策略替换更改了参数值的所有队列节点所需的时间取决于正在运行的工作负载。。

COMPUTE_FLEET_STOP

QueueUpdateStrategy 参数的默认值。使用此设置时,如果更新了 SlurmQueues 部分下的参数,则需要在执行集群更新之前停止计算实例集

$ pcluster update-compute-fleet --status STOP_REQUESTED
TERMINATE

在更改了参数值的队列中,将会终止正在运行的作业并立即关闭节点。

静态节点将被替换,动态节点将被终止。

其他队列中未更改参数值的其他节点不受影响。

更新策略:在更新期间不分析此设置。

注意

从 Amazon ParallelCluster 版本 3.2.0 开始支持 QueueUpdateStrategy

EnableMemoryBasedScheduling可选Boolean

如果为 true,则在 Slurm 中启用基于内存的调度。有关更多信息,请参阅 SlurmQueues/ComputeResources/SchedulableMemory

默认值为 false

警告

启用基于内存的调度会影响 Slurm 调度器处理作业和节点分配的方式。

有关更多信息,请参阅 Slurm 基于内存的调度

注意

从 Amazon ParallelCluster 版本 3.2.0 开始支持 EnableMemoryBasedScheduling

更新策略:必须停止计算实例集才能更改此设置以进行更新。

CustomSlurmSettings可选[Dict]

定义应用到整个集群的自定义 Slurm 设置。

指定要附加到 Amazon ParallelCluster 生成的 slurm.conf 文件末尾的键值对的 Slurm 配置字典列表。

列表中的每个字典都显示为添加到 Slurm 配置文件中的单独一行。您可指定简单参数或复杂参数。

简单参数包含单个键值对,如以下示例所示:

- Param1: 100 - Param2: "SubParam1,SubParam2=SubValue2"

在 Slurm 配置中呈现的示例:

Param1=100 Param2=SubParam1,SubParam2=SubValue2

复杂的 Slurm 配置参数包含多个以空格分隔的键值对,如以下示例所示:

- NodeName: test-nodes[1-10] CPUs: 4 RealMemory: 4196 ... # other node settings - NodeSet: test-nodeset Nodes: test-nodes[1-10] ... # other nodeset settings - PartitionName: test-partition Nodes: test-nodeset ... # other partition settings

在 Slurm 配置中呈现的示例:

NodeName=test-nodes[1-10] CPUs=4 RealMemory=4196 ... # other node settings NodeSet=test-nodeset Nodes=test-nodes[1-10] ... # other nodeset settings PartitionName=test-partition Nodes=test-nodeset ... # other partition settings
注意

自定义 Slurm 节点的名称中不得包含 -st--dy- 模式。这些模式是为 Amazon ParallelCluster托管的节点预留的。

如果您在 CustomSlurmSettings 中指定自定义 Slurm 配置参数,则不得为 CustomSlurmSettingsIncludeFile 指定自定义 Slurm 配置参数。

您只能指定未在 CustomSlurmSettings 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

Amazon ParallelCluster 仅检查参数是否在拒绝列表中。 Amazon ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您负责验证自己的自定义 Slurm 配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。

有关如何使用指定自定义Slurm配置参数的更多信息 Amazon ParallelCluster,请参阅Slurm 配置自定义

有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf

更新策略:可以在更新期间更改此设置。

注意

从 Amazon ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

CustomSlurmSettingsIncludeFile可选String

定义应用到整个集群的自定义 Slurm 设置。

指定将包含自定义 Slurm 配置参数的自定义 Slurm 文件附加到 Amazon ParallelCluster 生成的 slurm.conf 文件的末尾。

必须包括该文件的路径。路径可以 https://s3:// 开头。

如果您为 CustomSlurmSettingsIncludeFile 指定自定义 Slurm 配置参数,则不得为 CustomSlurmSettings 指定自定义 Slurm 配置参数。

注意

自定义 Slurm 节点的名称中不得包含 -st--dy- 模式。这些模式是为 Amazon ParallelCluster托管的节点预留的。

您只能指定未在 CustomSlurmSettingsIncludeFile 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

Amazon ParallelCluster 仅检查参数是否在拒绝列表中。 Amazon ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您负责验证自己的自定义 Slurm 配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。

有关如何使用指定自定义Slurm配置参数的更多信息 Amazon ParallelCluster,请参阅Slurm 配置自定义

有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf

更新策略:可以在更新期间更改此设置。

注意

从 Amazon ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Database

(可选)定义用于在集群上启用 Slurm 会计的设置。有关更多信息,请参阅 Slurm会计 Amazon ParallelCluster

Database: Uri: string UserName: string PasswordSecretArn: string

更新策略:必须停止计算实例集才能更改此设置以进行更新。

Database 属性

Uri必需String

用作 Slurm 会计后端的数据库服务器的地址。此 URI 必须采用 host:port 格式且不得包含架构,例如 mysql://。主机可以是 IP 地址,也可以是头节点可解析的 DNS 名称。如果未提供端口, Amazon ParallelCluster 将使用 MySQL 默认端口 3306。

Amazon ParallelCluster 将Slurm记账数据库引导到集群,并且必须访问该数据库。

在执行以下操作之前,必须可以访问该数据库:

  • 创建集群。

  • 通过集群更新启用 Slurm 会计。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

UserName必需String

Slurm 用于连接数据库、写入会计日志和执行查询的身份。用户必须对数据库具有读取和写入权限。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

PasswordSecretArn必需String

包含UserName纯文本密码的 Amazon Secrets Manager 密钥的 Amazon 资源名称 (ARN)。此密码与 UserName 和 Slurm 会计一起使用,用于在数据库服务器上进行身份验证。

注意

使用 Amazon Secrets Manager 控制台创建密钥时,请务必选择 “其他类型的密钥”,选择纯文本,并且仅在密钥中包含密码文本。

有关如何使用 Amazon Secrets Manager 创建密钥的更多信息,请参阅创建 Amazon Secrets Manager 密钥

如果用户拥有权限 DescribeSecretPasswordSecretArn则进行验证。 PasswordSecretArn如果指定的密钥存在,则有效。如果用户 IAM 策略不包括 DescribeSecret,则不验证 PasswordSecretArn 并显示警告消息。有关更多信息,请参阅 基本 Amazon ParallelCluster pcluster 用户策略

更新 PasswordSecretArn 时,必须停止计算实例集。如果更改了密钥值而未更改密钥 ARN,则不会使用新数据库密码自动更新集群。要针对新密钥值更新集群,您必须在停止计算实例集后从头节点内运行以下命令。

$ sudo /opt/parallelcluster/scripts/slurm/update_slurm_database_password.sh
警告

我们建议仅在已停止计算实例集的情况下更改数据库密码以避免会计数据丢失。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

DatabaseName可选String

数据库服务器上用于 Slurm Accounting 的数据库名称(由 Uri 参数定义)。

数据库的名称可以包含小写字母、数字和下划线。名称不能超过 64 个字符。

此参数映射到 s lurm StorageLoc dbd.conf 的参数。

如果未提供,DatabaseName则 ParallelCluster 将使用集群的名称为定义值StorageLoc

允许更新DatabaseName,但有以下注意事项:

  • 如果数据库服务器上尚 DatabaseName 不存在具有名称的数据库,slurmdbd 将创建该数据库。您有责任根据需要重新配置新数据库(例如,添加会计实体 — 集群、账户、用户、关联、QoS 等)。

  • 如果数据库服务器上 DatabaseName 已经存在同名数据库,slurmdbd 会将其用于 Slurm Accounting 功能。

更新策略:必须停止计算实例集才能更改此设置以进行更新。

注意

从版本 3.3.0 开始添加了 Database

Dns

(可选)为 Slurm 定义应用到整个集群的设置。

Dns: DisableManagedDns: boolean HostedZoneId: string UseEc2Hostnames: boolean

Dns 属性

DisableManagedDns可选Boolean

如果为 true,则不创建集群的 DNS 条目,并且无法解析 Slurm 节点名称。

默认情况下, Amazon ParallelCluster 创建一个 Route 53 托管区域,启动时将在其中注册节点。默认值为 false。如果设置DisableManagedDnstrue,则托管区域不是由创建的 Amazon ParallelCluster。

要了解如何使用此设置在没有互联网访问权限的子网中部署集群,请参阅无互联网访问权限的单个子网中的 Amazon ParallelCluster

警告

集群需要名称解析系统才能正常运行。如果 DisableManagedDns 设置为 true,则必须提供名称解析系统。要使用 EC2 默认 DNS,请将 UseEc2Hostnames 设置为 true。或者配置您自己的 DNS 解析程序,并确保在启动实例时注册节点名称。例如,您可以通过配置 CustomActions/OnNodeStart 来实现这一目标。

更新策略:如果更改此设置,则不允许更新。

HostedZoneId可选String

定义要用于集群 DNS 名称解析的自定义 Route 53 托管区 ID。如果提供,则在指定的托管区域中 Amazon ParallelCluster 注册集群节点,并且不会创建托管托管区域。

更新策略:如果更改此设置,则不允许更新。

UseEc2Hostnames可选Boolean

如果为 true,则使用默认 EC2 主机名配置集群计算节点。还会使用此信息更新 Slurm NodeHostName。默认值为 false

要了解如何使用此设置在没有互联网访问权限的子网中部署集群,请参阅无互联网访问权限的单个子网中的 Amazon ParallelCluster

注意

从 Amazon ParallelCluster 版本 3.3.0 开始,此备注不相关。

对于 3.3.0 之前的 Amazon ParallelCluster 支持版本:

如果设置UseEc2Hostnamestrue,则使用 Amazon ParallelCluster prologepilog脚本设置 Slurm 配置文件:

  • 分配了每个作业后,prolog 用于向计算节点上的 /etc/hosts 中添加节点信息。

  • epilog 用于清理 prolog 写入的内容。

要添加自定义 epilogprolog 脚本,请分别将其添加到 /opt/slurm/etc/pcluster/prolog.d//opt/slurm/etc/pcluster/epilog.d/ 文件夹。

更新策略:如果更改此设置,则不允许更新。