本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
)-
指定使用的调度器的类型。支持的值为
slurm
和awsbatch
。注意
awsbatch
仅支持alinux2
操作系统和x86_64
平台。 ScalingStrategy
(可选,String
)-
允许你选择如何扩展动态 Slurm 节点。支持的值为
all-or-nothing
greedy-all-or-nothing
best-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 队列使用的计算资源的类型。支持的值为
ONDEMAND
、SPOT
或CAPACITY_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 地址。支持的值为
true
和false
。默认值取决于您指定的子网。 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 可以指的是 ODCR 或 ML 的容量块。
预留必须使用与实例相同的平台。例如,如果您的实例在
rhel8
上运行,则您的容量预留必须在 Red Hat Enterprise Linux 平台上运行。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的支持的平台。注意
如果在集群配置中包含 Instances,则必须从配置中排除此队列级别
CapacityReservationId
设置。 CapacityReservationResourceGroupArn
(可选,String
)-
用作队列计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 Amazon ParallelCluster 根据以下条件确定并使用资源组中最适当的容量预留。
-
如果在 SlurmQueues/Networking或 SlurmQueues//中启用 Networking,
PlacementGroup
则 Amazon ParallelCluster 选择以实例类型为目标的资源组,如果计算资源存在,则PlacementGroup
为计算资源选择资源组。ComputeResourcesPlacementGroup
必须以 ComputeResources 中定义的实例类型之一为目标。 -
如果
PlacementGroup
未在 SlurmQueues/Networking或 SlurmQueuesComputeResources/中启用 Networking,则 Amazon ParallelCluster 选择仅针对计算资源的实例类型的资源组(如果存在计算资源)。
在队列的所有计算资源和可用区中,资源组必须为可用区中的每种实例类型保留至少一个 ODCR。有关更多信息,请参阅 使用 ODCR(按需容量预留)启动实例。
有关多子网配置要求的更多信息,请参阅 Networking/SubnetIds。
注意
3.4.0 Amazon ParallelCluster 版本中添加了多个可用区。
-
CapacityType
(可选,String
)-
Slurm 队列使用的计算资源的类型。支持的值为
ONDEMAND
或SPOT
。默认值为ONDEMAND
。注意
如果将
CapacityType
设置为SPOT
,则您的账户必须具有AWSServiceRoleForEC2Spot
服务相关角色。您可以使用以下 Amazon CLI 命令创建此角色。$
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的竞价型实例请求的服务相关角色。
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
)-
标签值。
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
运行状况检查时:-
它会检测
nvidia-dcgm
和nvidia-fabricmanager
服务是否正在运行。 -
如果这些服务未运行,则
Gpu
运行状况检查将会启动这些服务。 -
它会检测是否启用了持久性模式。
-
如果未启用持久性模式,则
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-1
和subnet-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 地址。支持的值为
true
和false
。您指定的子网决定默认值。具有公有 IP 的子网默认为分配公有 IP 地址。如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须将 HeadNode/Networking/设置为ElasticIp
true
以提供公共访问权限。 Amazon 公有 IP 只能分配给使用单个网络接口启动的实例。对于这种情况,我们建议您使用 NAT 网关为集群计算节点提供公有访问权限。在这种情况下,请将AssignPublicIp
设置为false
。有关 IP 地址的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在实例启动期间分配公有 IPv4 地址。 SecurityGroups
(可选,[String]
)-
用于Slurm 队列的安全组的列表。如果未指定安全组,则会为您 Amazon ParallelCluster 创建安全组。
验证您的SharedStorage系统是否正确配置了安全组。
警告
此警告适用于所有 3.
x
。y
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
。 Id
(可选,String
)-
Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组名称 而不是 ID。
Name
(可选,String
)-
Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组名称 而不是 ID。
注意
-
如果
PlacementGroup
/Enabled
设置为true
而未定义Name
或Id
,则会为每个计算资源分配自己的托管置放群组,除非将 ComputeResources/Networking/PlacementGroup 定义为覆盖此设置。 -
从 Amazon ParallelCluster 版本3.3.0开始,添加Name了 SlurmQueuesNetworkingPlacementGroup///作为/ SlurmQueuesNetworkingPlacementGroup/Id的首选替代方案。
PlacementGroup/Id 和 PlacementGroup/Name 是等效的。您可以使用任何一个。
如果同时包含 PlacementGroup/Id和 PlacementGroup/Name, Amazon ParallelCluster 则失败。您只能选择其中一项。
您无需更新集群即可使用 PlacementGroup/Name。
Proxy
(可选)-
指定 Slurm 队列的代理设置。
Proxy: HttpProxyAddress:
string
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
HttpProxyAddress
(可选,String
)-
为 Slurm 队列定义 HTTP 或 HTTPS 代理服务器。通常为
https://
。x.x.x.x:8080
没有默认值。
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 问题。
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_64
或arm64
架构。集群配置必须定义InstanceType或实例。如果两者都被定义, Amazon ParallelCluster 则失败。
定义
InstanceType
时,不能定义多个子网。如果您只配置一种实例类型并想要使用多个子网,请在Instances
而不是InstanceType
中定义您的实例类型。有关更多信息,请参阅 Networking/SubnetIds。如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须按照中所述在私有子网中启动计算实例使用两个子网的 Amazon ParallelCluster。 Amazon 只能将公有 IP 分配给使用单个网络接口启动的实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的在实例启动期间分配公有 IPv4 地址。
Instances
(必需)-
指定计算资源的实例类型列表。要为实例类型列表指定分配策略,请参阅 AllocationStrategy。
集群配置必须定义 InstanceType 或 Instances。如果同时定义了两者,则 Amazon ParallelCluster 将会失败。
有关更多信息,请参阅 Slurm 的多实例类型分配。
Instances: - InstanceType:
string
注意
从 3.7.0 Amazon ParallelCluster 版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 Amazon ParallelCluster 版本。
x
,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling无法启用。更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。
InstanceType
(必需,String
)-
要在此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构,即
x86_64
或arm64
。Instances 中列出的实例类型必须:
-
具有相同数量的 vCPU,或者,如果 DisableSimultaneousMultithreading 设置为
true
,则必须具有相同数量的内核。 -
具有相同制造商的相同数量的加速器。
Instances 中列出的实例类型可以具有:
-
不同的内存量。
在这种情况下,应将最小内存设置为可消耗的 Slurm 资源。
注意
从 3.7.0 Amazon ParallelCluster 版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 Amazon ParallelCluster 版本。
x
,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling无法启用。 -
不同的网卡。
在这种情况下,为计算资源配置的网络接口数量由网卡数量最少的实例类型定义。
-
不同的网络带宽。
-
不同的实例存储大小。
如果您定义了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_BLOCK
,MaxCount
必须等于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 竞价型实例支付的最高价格。默认值为按需价格。
DisableSimultaneousMultithreading
(可选,Boolean
)-
如果为
true
,则禁用 Slurm 队列中节点上的多线程。默认值为false
。并非所有实例类型都可禁用多线程。有关支持禁用多线程的实例类型列表,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的每种实例类型的 CPU 内核以及每个 CPU 内核的线程。
SchedulableMemory
(可选,Integer
)-
在 Slurm 参数
RealMemory
中为计算资源的计算节点配置的内存量,以 MiB 为单位。如果启用了 SlurmSettings/EnableMemoryBasedScheduling,则此值为可供作业使用的节点内存的上限。默认值是 Amazon EC2 实例类型中列出并由亚马逊 EC2API 返回的内存的 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
的值无关。 HealthChecks
(可选)-
指定计算资源上的运行状况检查。
Gpu
(可选)-
指定计算资源上的 GPU 运行状况检查。
Enabled
(可选,Boolean
)-
是否 Amazon ParallelCluster 对队列中的计算资源执行 GPU 运行状况检查。默认值为
false
。注意
Amazon ParallelCluster 在使用
alinux2
ARM 操作系统的节点Gpu
中不支持HealthChecks
/。这些平台不支持 NVIDIA 数据中心 GPU 管理器 (DCGM)。
Gpu
运行状况检查行为-
如果
Gpu
/设置Enabled
为true
,则对计算资源 Amazon ParallelCluster 执行 GPU 运行状况检查。 -
Gpu
运行状况检查会对计算资源执行运行状况检查,以防止在 GPU 降级的节点上提交作业。 -
如果某个计算节点未通过
Gpu
运行状况检查,则该计算节点的状态将更改为DRAIN
。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后,如果该计算节点是动态节点,则会终止;如果是静态节点,则会被替换。 -
Gpu
运行状况检查的持续时间取决于所选的实例类型、实例中的 GPU 数量和Gpu
运行状况检查目标的数量(等同于作业 GPU 目标的数量)。对于具有 8 个 GPU 的实例,持续时间通常少于 3 分钟。 -
如果
Gpu
运行状况检查在不受支持的实例上运行,它将退出,作业将在计算节点上运行。例如,如果一个实例没有 GPU,或者一个实例有 GPU,但不是 NVIDIA GPU,则运行状况检查将会退出,作业将在计算节点上运行。仅支持 NVIDIA GPU。 -
Gpu
运行状况检查使用dcgmi
工具对节点执行运行状况检查,并采取以下步骤:当在节点中开始
Gpu
运行状况检查时:-
它会检测
nvidia-dcgm
和nvidia-fabricmanager
服务是否正在运行。 -
如果这些服务未运行,则
Gpu
运行状况检查将会启动这些服务。 -
它会检测是否启用了持久性模式。
-
如果未启用持久性模式,则
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 的实例是允许所有入站和出站流量进入自身的安全组的成员。
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特定操作系统(Os 是
alinux2
、centos7
、ubuntu1804
或ubuntu2004
)上的特定实例类型 (p4d.24xlarge
) 提供对 GPUDirect RDMA 的支持。默认值为 False。
CapacityReservationTarget
-
CapacityReservationTarget: CapacityReservationId:
string
CapacityReservationResourceGroupArn:string
指定要用于计算资源的按需容量预留。
CapacityReservationId
(可选,String
)-
要用于队列计算资源的现有容量预留的 ID。该 ID 可以指的是 ODCR 或 ML 的容量块。
如果在计算资源级别指定此参数 InstanceType是可选的,则将自动从预留中检索该参数。
CapacityReservationResourceGroupArn
(可选,String
)-
指示用作计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 Amazon ParallelCluster 确定并使用组中最适当的容量预留。对于为计算资源列出的每种实例类型,资源组必须至少有一个 ODCR。有关更多信息,请参阅 使用 ODCR(按需容量预留)启动实例。
-
如果
PlacementGroup
在 SlurmQueues/Networking或 SlurmQueues//中启用 Networking,则 Amazon ParallelCluster 选择以实例类型PlacementGroup
为目标的资源组和计算资源(如果存在)。ComputeResourcesPlacementGroup
必须以 ComputeResources 中定义的实例类型之一为目标。 -
如果
PlacementGroup
未在 SlurmQueues/Networking或 SlurmQueuesComputeResources/中启用 Networking,则 Amazon ParallelCluster 选择仅针对计算资源的实例类型(如果存在)的资源组。
-
更新策略:必须停止计算实例集或必须设置 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
设置如何,都将为该计算资源分配命名的置放群组。
-
Name
(可选,String
)-
用于计算资源的现有集群置放群组的置放群组名称。
注意
-
如果
PlacementGroup
/Enabled
和Name
都未设置,则它们各自的值默认为 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
)-
标签值。
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
。 Encrypted
(可选,Boolean
)-
如果为
true
,则对 Slurm 队列中节点的根卷进行加密。默认值为false
。 VolumeType
(可选,String
)-
指定 Slurm 队列中节点的 Amazon EBS 卷类型。支持的值为
gp2
、gp3
、io1
、io2
、sc1
、st1
和standard
。默认值为gp3
。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EBS 卷类型。
Iops
(可选,Boolean
)-
定义
io1
、io2
和gp3
类型卷的 IOPS 数。默认值、支持的值以及
volume_size
/volume_iops
比率因VolumeType
和Size
而异。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
卷可能无法实现完全性能。io2
Block Express 卷在R5b
实例类型上支持高达 256000 的volume_iops
值。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的io2
Block Express 卷。 Throughput
(可选,Integer
)-
定义
gp3
卷类型的吞吐量,以 MiB/s 为单位。此设置仅在VolumeType
为gp3
时有效。默认值为125
。支持的值:125–1000 MiB/sThroughput
与Iops
的比率不能超过 0.25。1000 MiB/s 的最大吞吐量要求Iops
设置至少为 4000。
EphemeralVolume
(可选,Boolean
)-
指定临时卷的设置。临时卷是通过将所有实例存储卷合并到
ext4
文件系统格式的单个逻辑卷而创建的。默认值为/scratch
。如果实例类型没有任何实例存储卷,则不会创建临时卷。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的实例存储卷。EphemeralVolume: MountDir:
string
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
MountDir
(可选,String
)-
Slurm 队列中每个节点的临时卷的挂载目录。
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://
开头。 Args
(可选,[String]
)-
要传递到脚本的参数的列表。
Script
(必需,String
)-
用于单个脚本的文件。文件路径可以
https://
或s3://
开头。 Args
(可选,[String]
)-
要传递到单个脚本的参数的列表。
OnNodeConfigured
(可选,String
)-
指定在所有节点引导操作完成之后,要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。 Amazon ParallelCluster 不支持同一个自定义操作同时包含单个脚本和
Sequence
。有关更多信息,请参阅 自定义引导操作。Sequence
(可选)-
要运行的脚本的列表。
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Script
(必需,String
)-
要使用的文件。文件路径可以
https://
或s3://
开头。 Args
(可选,[String]
)-
要传递到脚本的参数的列表。
Script
(必需,String
)-
用于单个脚本的文件。文件路径可以
https://
或s3://
开头。 Args
(可选,[String]
)-
要传递到单个脚本的参数的列表。
更新策略:必须停止计算实例集或必须设置 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 队列默认实例角色或实例配置文件的实例配置文件。您不能同时指定
InstanceProfile
和InstanceRole
。格式为arn:${Partition}:iam::${Account}:instance-profile/${InstanceProfileName}
。如果指定此设置,则不能指定
S3Access
和AdditionalIamPolicies
设置。我们建议您指定
S3Access
和AdditionalIamPolicies
设置中的一个或两个,因为添加到 Amazon ParallelCluster 中的功能通常需要新权限。 InstanceRole
(可选,String
)-
指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例角色。您不能同时指定
InstanceProfile
和InstanceRole
。格式为arn:${Partition}:iam::${Account}:role/${RoleName}
。如果指定此设置,则不能指定
S3Access
和AdditionalIamPolicies
设置。我们建议您指定
S3Access
和AdditionalIamPolicies
设置中的一个或两个,因为添加到 Amazon ParallelCluster 中的功能通常需要新权限。 S3Access
(可选)-
为 Slurm 队列指定存储桶。此设置用于生成针对 Slurm 队列中的存储桶授予指定访问权限的策略。
如果指定此设置,则不能指定
InstanceProfile
和InstanceRole
设置。我们建议您指定
S3Access
和AdditionalIamPolicies
设置中的一个或两个,因为添加到 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 不相同。不能使用名称。
如果指定此设置,则不能指定
InstanceProfile
和InstanceRole
设置。我们建议您使用
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
。注意
从 3.7.0 Amazon ParallelCluster 版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 Amazon ParallelCluster 版本。
x
,如果您在实例中配置了多个实例类型,则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 密钥
如果用户拥有权限 DescribeSecret,
PasswordSecretArn
则进行验证。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
。如果设置DisableManagedDns
为true
,则托管区域不是由创建的 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 主机名配置集群计算节点。还会使用此信息更新 SlurmNodeHostName
。默认值为false
。要了解如何使用此设置在没有互联网访问权限的子网中部署集群,请参阅无互联网访问权限的单个子网中的 Amazon ParallelCluster。
注意
从 Amazon ParallelCluster 版本 3.3.0 开始,此备注不相关。
对于 3.3.0 之前的 Amazon ParallelCluster 支持版本:
如果设置
UseEc2Hostnames
为true
,则使用 Amazon ParallelClusterprolog
和epilog
脚本设置 Slurm 配置文件:-
分配了每个作业后,
prolog
用于向计算节点上的/etc/hosts
中添加节点信息。 -
epilog
用于清理prolog
写入的内容。
要添加自定义
epilog
或prolog
脚本,请分别将其添加到/opt/slurm/etc/pcluster/prolog.d/
或/opt/slurm/etc/pcluster/epilog.d/
文件夹。 -