Scheduling 部分 - AWS ParallelCluster

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

Scheduling 部分

(必需)定义集群中使用的作业调度器以及该作业调度器管理的计算实例。你可以使用 Slurm 或 AWS 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 ExternalSlurmdbd: boolean Host: string Port: integer 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

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

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

AWS Batch 队列的名称。

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

CapacityType可选String

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

注意

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

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

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

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

Networking

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

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

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

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

AssignPublicIp可选String

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

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

SecurityGroups可选[String]

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

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

AdditionalSecurityGroups可选[String]

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

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

ComputeResources

(必需)定义 AWS 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

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

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

InstanceTypes必需[String]

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

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

MinvCpus可选Integer

AWS Batch 计算环境可以使用的最小数量。VCPUs

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

DesiredVcpus可选Integer

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

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

MaxvCpus可选Integer

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

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

SpotBidPercentage可选Float

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

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

SlurmQueues

(可选)的设置 Slurm queue. 如果 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 queue.

注意

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

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

CapacityReservationTarget
注意

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

CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string

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

CapacityReservationId可选String

要用于队列计算资源的现有容量预留的 ID。ID 可以指机器学习ODCR的容量块。

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

注意

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

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

CapacityReservationResourceGroupArn可选String

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

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

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

注意

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

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

CapacityType可选String

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

注意

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

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

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

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

AllocationStrategy可选String

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

有效值:lowest-price |capacity-optimized |price-capacity-optimized

默认:lowest-price

lowest-price
  • 如果您使用CapacityType = ONDEMAND,Amazon EC2 Fleet 会使用价格来确定订单,并首先启动价格最低的实例。

  • 如果您使用CapacityType = SPOT,Amazon EC2 Fleet 会从具有可用容量的最低价格竞价型实例池中启动实例。如果池在满足您的所需容量之前已用完容量,Amazon F EC2 leet 会通过为您启动实例来满足您的请求。特别是,Amazon EC2 Fleet 会从具有可用容量的最低价格竞价型实例池中启动实例。Amazon EC2 Fleet 可能会从多个不同的池中启动竞价型实例。

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

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

  • 如果您进行了设置CapacityType = SPOT,Amazon EC2 Fleet 将从竞价型实例池中启动具有最佳容量的实例,以适应要启动的实例数量。

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

  • 如果您进行了设置CapacityType = SPOT,Amazon EC2 Fleet 会根据正在启动的实例数量确定容量可用性最高的池。这意味着我们将从我们认为短期内中断概率最低的池中请求竞价型实例。然后,Amazon EC2 Fleet 请求这些池中价格最低的竞价型实例。

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

注意

从 AWS ParallelCluster 版本 3.3.0 开始支持 AllocationStrategy

JobExclusiveAllocation可选String

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

有效值:true | false

默认值:false

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

注意

从 AWS ParallelCluster 版本 3.7.0 开始支持 JobExclusiveAllocation

CustomSlurmSettings可选Dict

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

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

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

你只能指定 Slurm 中未被拒绝列出的配置参数。CustomSlurmSettings有关被拒绝名单的信息 Slurm 配置参数,请参阅CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

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

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

有关 Slurm 配置参数,请参阅 slurm. conf 中的 Slurm 文档中)。

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

注意

从 AWS ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Tags可选,[字符串])

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

Key可选String

标签键。

Value可选String

标签值。

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

HealthChecks可选

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

Gpu可选

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

注意

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

Enabled可选Boolean

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

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

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

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

  • Gpu运行状况检查的持续时间取决于所选的实例类型、实例GPUs中的数量和Gpu运行状况检查目标的数量(等同于任务GPU目标的数量)。对于具有 8 的实例GPUs,典型持续时间小于 3 分钟。

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 运行状况检查输出。

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

注意

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

Networking

(必需)定义的网络配置 Slurm queue.

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

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

Networking 属性
SubnetIds必需[String]

您预置IDs的现有子网 Slurm 排队。

如果您在 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

注意

不同的可用区域不支持弹性结构适配器 (EFA)。

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

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

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

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

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

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

注意

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

警告

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

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

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

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

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

AssignPublicIp可选String

为中的节点创建或分配公有 IP 地址 Slurm queue. 支持的值为 truefalse。您指定的子网决定默认值。具有公共IPs默认值的子网,用于分配公有 IP 地址。

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

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

SecurityGroups可选[String]

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

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

警告

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

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

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

警告

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

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

AdditionalSecurityGroups可选[String]

用于的其他安全组的列表 Slurm queue.

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

PlacementGroup可选

指定置放群组设置 Slurm queue.

PlacementGroup: Enabled: boolean Id: string Name: string

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

Enabled可选Boolean

指明置放群组是否用于 Slurm queue. 默认为 false

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

Id可选String

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

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

Name可选String

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

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

注意
Proxy可选

指定代理设置 Slurm queue.

Proxy: HttpProxyAddress: string

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

HttpProxyAddress可选String

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

没有默认值。

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

Image

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

Image: CustomAmi: string

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

Image 属性
CustomAmi可选String

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

注意

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

(必需)定义的ComputeResources配置 Slurm queue.

注意

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

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实例。如果两者都被定义, AWS ParallelCluster 则失败。

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

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

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

Instances必需

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

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

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

Instances: - InstanceType: string

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

InstanceType必需String

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

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

  • 相同数量的内核vCPUs,或者,如果设置DisableSimultaneousMultithreadingtrue,则为相同数量的内核。

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

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

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

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

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

注意

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

MinCount可选Integer

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

注意

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

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

MaxCount可选Integer

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

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

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

注意

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

DynamicNodePriority可选Integer

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

Slurm 优先考虑Weight值最低的节点。

警告

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

在 AWS ParallelCluster 3.7.0 之前的版本中,静态节点和动态节点的默认权重相同。1在这种情况下,Slurm 由于静态和动态节点的命名架构,可能会优先考虑空闲的动态节点而不是空闲的静态节点。当其他一切都相等时,Slurm 按名称的字母顺序排列节点。

注意

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

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

StaticNodePriority可选Integer

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

Slurm 优先考虑Weight值最低的节点。

警告

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

注意

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

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

SpotPrice可选Float

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

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

DisableSimultaneousMultithreading可选Boolean

如果true,在节点上进行多线程 Slurm 队列已禁用。默认值为 false

并非所有实例类型都可禁用多线程。有关支持禁用多线程的实例类型列表,请参阅 A mazon EC2 用户指南中每种实例类型的CPU内CPU核和线程

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

SchedulableMemory可选Integer

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

支持的值:1-EC2Memory

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

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

注意

从 AWS ParallelCluster 版本 3.2.0 开始支持 SchedulableMemory

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

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

HealthChecks可选

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

Gpu可选

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

Enabled可选Boolean

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

注意

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

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

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

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

  • Gpu运行状况检查的持续时间取决于所选的实例类型、实例GPUs中的数量和Gpu运行状况检查目标的数量(等同于任务GPU目标的数量)。对于具有 8 的实例GPUs,典型持续时间小于 3 分钟。

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 运行状况检查输出。

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

注意

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

Efa可选

为中的节点指定弹性结构适配器 (EFA) 设置 Slurm queue.

Efa: Enabled: boolean GdrSupport: boolean

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

Enabled可选Boolean

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

默认值为 false

注意

不同的可用区域不支持弹性结构适配器 (EFA)。有关更多信息,请参阅SubnetIds

警告

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

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

GdrSupport可选Boolean

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

注意

AWS ParallelCluster 版本 3.0.0 到 3.0.1:启用了 Support GPUDirect RDMA Slurm 计算资源。特定操作系统(GPUDirectRDMA是alinux2ubuntu1804p4d.24xlarge)上的特定实例类型 (Osubuntu2004) 支持对。默认值为 False。

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

CapacityReservationTarget
CapacityReservationTarget: CapacityReservationId: string CapacityReservationResourceGroupArn: string

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

CapacityReservationId可选String

要用于队列计算资源的现有容量预留的 ID。该 id 可以ODCR机器学习的容量块

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

CapacityReservationResourceGroupArn可选String

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

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

注意

从 AWS 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 AWS ParallelCluster 版本中添加。

CustomSlurmSettings可选Dict

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

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

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

你只能指定 Slurm 中未被拒绝列出的配置参数。CustomSlurmSettings有关被拒绝名单的信息 Slurm 配置参数,请参阅CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

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

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

有关 Slurm 配置参数,请参阅 slurm. conf 中的 Slurm 文档中)。

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

注意

从 AWS ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Tags可选,[字符串])

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

Key可选String

标签键。

Value可选String

标签值。

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

ComputeSettings

(必需)定义的ComputeSettings配置 Slurm queue.

ComputeSettings 属性

指定中节点ComputeSettings的属性 Slurm queue.

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

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

LocalStorage可选

指定中节点LocalStorage的属性 Slurm queue.

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

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

RootVolume可选

指定中节点根卷的详细信息 Slurm queue.

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

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

Size可选Integer

指定中节点的根卷大小(以 GiB 为单位) Slurm queue. 默认大小来自AMI。使用不同的尺寸需要支AMI撑growroot

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

Encrypted可选Boolean

如果true,则是节点的根卷 Slurm 队列已加密。默认值为 false

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

VolumeType可选String

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

有关更多信息,请参阅《亚马逊EC2用户指南》中的 Amazon EBS 卷类型

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

Iops可选Boolean

定义io1io2和 t gp3 ype 卷的数量。IOPS

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

VolumeType = io1

默认值:Iops = 100

支持的值:Iops = 100–64000 †

最大volume_iopsvolume_size比 = IOPS 每 GiB 50。5000 IOPS 需要至少 100 GiB volume_size 的容量。

VolumeType = io2

默认值:Iops = 100

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

最大IopsSize比 = IOPS 每 GiB 500。5000 IOPS 需要至少 10 GiB 的。Size

VolumeType = gp3

默认值:Iops = 3000

支持的值:Iops = 3000–16000 †

对于IOPS大Iops于 3000 的卷,最大与Size比 = IOPS 每 GiB 500。

† 只有在 Nitro 系统上构建且配置量超过 32,000 的实例才能保证最大值IOPS。IOPS其他实例最多可以有 32,000 个IOPS。除非您修改卷,否则较早的 io1 卷可能无法实现完全性能。io2Block Express 卷在 R5b 实例类型上支持高达 256000 的 volume_iops 值。有关更多信息,请参阅《亚马逊EC2用户指南》中的 “io2屏蔽 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 用户指南中的实例存储卷

EphemeralVolume: MountDir: string

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

MountDir可选String

中每个节点的临时卷的挂载目录 Slurm queue.

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

CustomActions

(可选)指定要在节点上运行的自定义脚本 Slurm queue.

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 在启动任何节点部署引导操作之前排队。 AWS ParallelCluster 不支持同时包含单个脚本和Sequence同一个自定义操作。有关更多信息,请参阅 自定义引导操作

Sequence可选

要运行的脚本的列表。

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

Script必需String

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

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

Args可选[String]

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

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

Script必需String

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

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

Args可选[String]

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

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

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

OnNodeConfigured可选String

指定要在节点上运行的一系列脚本或单个脚本 Slurm 在所有节点引导操作完成后排队。 AWS 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 AWS ParallelCluster 版本开始添加的。指定后Sequence,您可以列出一个自定义操作的多个脚本。 AWS ParallelCluster 继续支持使用单个脚本配置自定义操作,不包括脚本Sequence

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

Iam

(可选)定义可选IAM设置 Slurm queue.

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

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

Iam 属性
InstanceProfile可选String

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

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

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

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

InstanceRole可选String

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

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

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

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

S3Access可选

为指定存储桶 Slurm queue. 这用于生成策略,以授予对存储桶的指定访问权限 Slurm queue.

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

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

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

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

BucketName必需String

存储桶的名称。

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

KeyName可选String

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

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

EnableWriteAccess可选Boolean

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

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

AdditionalIamPolicies可选

指定亚马逊资源名称 (ARNs) 的亚马逊IAM政策列表EC2。此列表附在用于的根角色上 Slurm 除了所需的权限外,还要排队 AWS ParallelCluster。

IAM策略名称和策略名称ARN是不同的。不能使用名称。

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

我们建议您使用 AdditionalIamPolicies,因为 AdditionalIamPolicies 已经添加到 AWS 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 ExternalSlurmdbd: Host: string Port: integer Dns: DisableManagedDns: boolean HostedZoneId: string UseEc2Hostnames: boolean

SlurmSettings 属性

ScaledownIdletime可选Integer

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

默认值为 10

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

MungeKeySecretArn可选String

纯文本 S AWS ecrets Manager 密钥的亚马逊资源名称 (ARN),该密钥包含要用于 base64 编码的 munge 密钥 Slurm 集群。此 munge 密钥将用于对两者之间的呼叫进行身份验证 RPC Slurm 客户端命令和 Slurm 守护程序充当远程服务器。如果未提供, AWS ParallelCluster 将 MungeKeySecretArn 为集群生成一个随机 munge 密钥。

注意

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

警告

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

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

  • 指定的密钥存在,并且

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

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

如果 pcluster 用户IAM策略不包括 DescribeSecret, MungeKeySecretArn则不进行验证并显示警告消息。有关更多信息,请参阅 基本 AWS 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")

更新政策:NEWUPDATEPOLICYWITHCOMPUTEFLEETANDLOGINNODESSTOPPED(错误地未在 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

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

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

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

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

注意

从 AWS ParallelCluster 版本 3.2.0 开始支持 QueueUpdateStrategy

EnableMemoryBasedScheduling可选Boolean

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

默认值为 false

警告

启用基于内存的调度会影响 Slurm 调度器处理任务和节点分配。

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

注意

从 AWS ParallelCluster 版本 3.2.0 开始支持 EnableMemoryBasedScheduling

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

CustomSlurmSettings可选[Dict]

定义自定义 Slurm 适用于整个集群的设置。

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

列表中的每个词典都显示为单独的一行,添加到该词典中 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-模式。这些模式是为 AWS ParallelCluster托管的节点预留的。

如果您指定自定义 Slurm 中的配置参数CustomSlurmSettings,不得指定自定义 Slurm 的配置参数CustomSlurmSettingsIncludeFile

你只能指定 Slurm 中未被拒绝列出的配置参数。CustomSlurmSettings有关被拒绝名单的信息 Slurm 配置参数,请参阅CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

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

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

有关 Slurm 配置参数,请参阅 slurm. conf 中的 Slurm 文档中)。

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

注意

从 AWS ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

CustomSlurmSettingsIncludeFile可选String

定义自定义 Slurm 适用于整个集群的设置。

指定自定义 Slurm 由自定义组成的文件 Slurm 要在 AWS ParallelCluster 生成的slurm.conf文件末尾附加配置参数。

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

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

注意

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

你只能指定 Slurm 中未被拒绝列出的配置参数。CustomSlurmSettingsIncludeFile有关被拒绝名单的信息 Slurm 配置参数,请参阅CustomSlurmSettings 的列入拒绝列表的 Slurm 配置参数

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

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

有关 Slurm 配置参数,请参阅 slurm. conf 中的 Slurm 文档中)。

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

注意

从 AWS ParallelCluster 版本 3.6.0 开始支持 CustomSlurmSettings

Database

(可选)定义要启用的设置 Slurm 对集群进行记账。有关更多信息,请参阅 Slurm 用会计 AWS ParallelCluster

Database: Uri: string UserName: string PasswordSecretArn: string

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

Database 属性

Uri必需String

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

AWS ParallelCluster bootstraps Slurm 记账数据库到集群中,并且必须访问该数据库。

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

  • 创建集群。

  • Slurm 通过群集更新启用记账。

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

UserName必需String

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

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

PasswordSecretArn必需String

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

注意

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

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

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

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

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

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

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

DatabaseName可选String

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

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

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

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

允许更新DatabaseName,但要考虑以下几点:

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

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

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

注意

从版本 3.3.0 开始添加了 Database

ExternalSlurmdbd

(可选)定义要启用的设置 Slurm 使用外部 slurmdbd 服务器进行记账。有关更多信息,请参阅 Slurm 会计 AWS ParallelCluster

ExternalSlurmdbd: Host: string Port: integer

ExternalSlurmdbd 属性

Host必填String

的外部 slurmdbd 服务器的地址 Slurm 会计。主机可以是 IP 地址,也可以是头节点可以解析的DNS名称。

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

Port可选Integer

slurmdbd 服务监听的端口。默认值为 6819

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

Dns

(可选)定义以下各项的设置 Slurm 这适用于整个集群。

Dns: DisableManagedDns: boolean HostedZoneId: string UseEc2Hostnames: boolean

Dns 属性

DisableManagedDns可选Boolean

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

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

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

警告

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

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

HostedZoneId可选String

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

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

UseEc2Hostnames可选Boolean

如果是true,则使用默认EC2主机名配置集群计算节点。这些区域有:Slurm NodeHostName也使用此信息进行了更新。默认为 false

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

注意

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

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

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

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

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

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

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