本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Scheduling 部分
(必需)定义集群中使用的作业调度器以及该作业调度器管理的计算实例。您可以使用Slurm或AWS Batch调度程序。每个调度器支持一组不同的设置和属性。
Scheduling: Scheduler: slurm ScalingStrategy:stringSlurmSettings: MungeKeySecretArn:stringScaledownIdletime:integerQueueUpdateStrategy:stringEnableMemoryBasedScheduling:booleanCustomSlurmSettings:[dict]CustomSlurmSettingsIncludeFile:stringDatabase: Uri:stringUserName:stringPasswordSecretArn:stringDatabaseName:stringExternalSlurmdbd:booleanHost:stringPort:integerDns: DisableManagedDns:booleanHostedZoneId:stringUseEc2Hostnames:booleanSlurmQueues: - Name:stringComputeSettings: LocalStorage: RootVolume: Size:integerEncrypted:booleanVolumeType:stringIops:integerThroughput:integerEphemeralVolume: MountDir:stringCapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:stringCapacityType:stringAllocationStrategy:stringJobExclusiveAllocation:booleanCustomSlurmSettings:dictTags: - Key:stringValue:stringHealthChecks: Gpu: Enabled:booleanNetworking: SubnetIds: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -stringPlacementGroup: Enabled:booleanId:stringName:stringProxy: HttpProxyAddress:stringComputeResources: - Name:stringInstanceType:stringInstances: - InstanceType:stringMinCount:integerMaxCount:integerDynamicNodePriority:integerStaticNodePriority:integerSpotPrice:floatDisableSimultaneousMultithreading:booleanSchedulableMemory:integerHealthChecks: Gpu: Enabled:booleanEfa: Enabled:booleanGdrSupport:booleanCapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:stringNetworking: PlacementGroup: Enabled:booleanName:stringCustomSlurmSettings:dictTags: - Key:stringValue:stringCustomActions: OnNodeStart: Sequence: - Script:stringArgs: -stringScript:stringArgs: -stringOnNodeConfigured: Sequence: - Script:stringArgs: -stringScript:stringArgs: -stringIam: InstanceProfile:stringInstanceRole:stringS3Access: - BucketName:stringEnableWriteAccess:booleanKeyName:stringAdditionalIamPolicies: - Policy:stringImage: CustomAmi:string
Scheduling: Scheduler: awsbatch AwsBatchQueues: - Name:stringCapacityType:stringNetworking: SubnetIds: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -stringComputeResources: # this maps to a Batch compute environment (initially we support only 1) - Name:stringInstanceTypes: -stringMinvCpus:integerDesiredvCpus:integerMaxvCpus:integerSpotBidPercentage: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 个实例。更多详情可在亚马逊 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:stringCapacityType:stringNetworking: SubnetIds: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -stringComputeResources: # this maps to a Batch compute environment (initially we support only 1) - Name:stringInstanceTypes: -stringMinvCpus:integerDesiredvCpus:integerMaxvCpus:integerSpotBidPercentage:float
AwsBatchQueues 属性
Name(必需,String)-
AWS Batch队列的名称。
CapacityType(可选,String)-
AWS Batch队列使用的计算资源的类型。支持的值为
ONDEMAND、SPOT或CAPACITY_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: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -string
Networking 属性
SubnetIds(必需,[String])-
指定要在其中配置AWS Batch队列的现有子网的 ID。目前仅支持一个子网。
AssignPublicIp(可选,String)-
为AWS Batch队列中的节点创建或分配公有 IP 地址。支持的值为
true和false。默认值取决于您指定的子网。 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:stringInstanceTypes: -stringMinvCpus:integerDesiredvCpus:integerMaxvCpus:integerSpotBidPercentage: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 队列的设置。如果 Scheduler 设置为 slurm,则此部分是必需的。
SlurmQueues: - Name:stringComputeSettings: LocalStorage: RootVolume: Size:integerEncrypted:booleanVolumeType:stringIops:integerThroughput:integerEphemeralVolume: MountDir:stringCapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:stringCapacityType:stringAllocationStrategy:stringJobExclusiveAllocation:booleanCustomSlurmSettings:dictTags: - Key:stringValue:stringHealthChecks: Gpu: Enabled:booleanNetworking: SubnetIds: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -stringPlacementGroup: Enabled:booleanId:stringName:stringProxy: HttpProxyAddress:stringComputeResources: - Name:stringInstanceType:stringInstances: - InstanceType:stringMinCount:integerMaxCount:integerDynamicNodePriority:integerStaticNodePriority:integerSpotPrice:floatDisableSimultaneousMultithreading:booleanSchedulableMemory:integerHealthChecks: Gpu: Enabled:booleanEfa: Enabled:booleanGdrSupport:booleanCapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:stringNetworking: PlacementGroup: Enabled:booleanName:stringCustomSlurmSettings:dictTags: - Key:stringValue:stringCustomActions: OnNodeStart: Sequence: - Script:stringArgs: -stringScript:stringArgs: -stringOnNodeConfigured: Sequence: - Script:stringArgs: -stringScript:stringArgs: -stringIam: InstanceProfile:stringInstanceRole:stringS3Access: - BucketName:stringEnableWriteAccess:booleanKeyName:stringAdditionalIamPolicies: - Policy:stringImage: CustomAmi:string
更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。
SlurmQueues 属性
Name(必需,String)-
Slurm 队列的名称。
注意
在更新期间,集群大小可能会更改。有关更多信息,请参阅集群容量大小和更新
CapacityReservationTarget-
注意
CapacityReservationTarget已在 3.3.0 AWS ParallelCluster版本中添加。CapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:string指定队列计算资源的按需容量预留。
CapacityReservationId(可选,String)-
要用于队列计算资源的现有容量预留的 ID。ID 可以指的是 ODCR 或适用于 ML 的容量块。
预留使用的平台必须与实例使用的平台相同。例如,如果您的实例在
rhel8上运行,则您的容量预留必须在 Red Hat Enterprise Linux 平台上运行。有关更多信息,请参阅《Amazon Linux 实例 EC2 用户指南》中的支持的平台。注意
如果在集群配置中包含 Instances,则必须从配置中排除此队列级别
CapacityReservationId设置。 CapacityReservationResourceGroupArn(可选,String)-
用作队列计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。AWS ParallelCluster根据以下条件确定并使用资源组中最适当的容量预留。
-
如果在 SlurmQueues/Networking或 SlurmQueues//中启用 Networking,
PlacementGroup则AWS ParallelCluster选择以实例类型为目标的资源组,如果计算资源存在,则PlacementGroup为计算资源选择资源组。ComputeResourcesPlacementGroup必须以 ComputeResources 中定义的实例类型之一为目标。 -
如果
PlacementGroup未在 SlurmQueues/Networking或 SlurmQueuesComputeResources/中启用 Networking,则AWS ParallelCluster选择仅针对计算资源的实例类型的资源组(如果存在计算资源)。
在队列的所有计算资源和可用区中,资源组必须为可用区中的每种实例类型保留至少一个 ODCR。有关更多信息,请参阅 使用按需容量预留(ODCR)启动实例。
有关多子网配置要求的更多信息,请参阅 Networking/SubnetIds。
注意
3.4.0 AWS ParallelCluster版本中添加了多个可用区。
-
CapacityType(可选,String)-
Slurm 队列使用的计算资源的类型。支持的值为
ONDEMAND、SPOT或CAPACITY_BLOCK。默认值为ONDEMAND。注意
如果将
CapacityType设置为SPOT,则您的账户必须具有AWSServiceRoleForEC2Spot服务相关角色。您可以使用以下AWS CLI命令来创建此角色。$aws iam create-service-linked-role --aws-service-name spot.amazonaws.com有关更多信息,请参阅 Amazon Amazon Linux 实例 EC2 用户指南中的竞价型实例请求的服务相关角色。
AllocationStrategy(可选,String)-
为 Instances 中定义的所有计算资源指定分配策略。
有效值:
lowest-price|capacity-optimized|price-capacity-optimized|prioritized|capacity-optimized-prioritizedCapacityType 允许的策略 按需 最低价格,优先考虑 点 最低价格、容量优化、、 price-capacity-optimized capacity-optimized-prioritized 容量块 不支持 — AllocationStrategy 无法配置 默认值:
lowest-pricelowest-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 请求这些池中价格最低的竞价型实例。
-
prioritized-
-
如果您进行了设置
CapacityType = ONDEMAND,则在指定多个子网时,Amazon EC2 Fleet 将遵循AWS ParallelCluster适用于 LaunchTemplate 替代的优先顺序。AWS ParallelClusterpriority从目标子网的位置派生替代项,其中第一个子网的优先级最高。SlurmQueues/Networking/SubnetIds优先级按AWS ParallelCluster降序排列,第一个 SubnetId 优先级最高SlurmQueues/Networking/SubnetIds,最后一个 subnetId 的优先级最低。 -
如果设置
CapacityType = SPOT,则prioritized不可用。
-
capacity-optimized-prioritized-
-
如果设置
CapacityType = ONDEMAND,则capacity-optimized-prioritized不可用。 -
如果您进行设置
CapacityType = SPOT,Amazon EC2 Fleet 会先优化容量,然后尽最大努力应用AWS ParallelCluster分配给替补的优先顺序。 LaunchTemplate 优先级按AWS ParallelCluster降序排列,第一个 SubnetId 优先级最高SlurmQueues/Networking/SubnetIds,最后一个 subnetId 的优先级最低。所有以相同子网为目标的替代项都将获得相同的优先级值。
-
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
注意
从AWS ParallelCluster版本 3.3.0 开始支持
AllocationStrategy。3.14.0 中的新增功能:
prioritized(用于点播)和capacity-optimized-prioritized(适用于竞价版)。 JobExclusiveAllocation(可选,String)-
如果设置为
true,则 Slurm 分区OverSubscribe标志设置为EXCLUSIVE。当OverSubscribe=EXCLUSIVE时,分区中的作业将对分配的所有节点具有独占访问权限。有关更多信息,请参阅 Slurm 文档中的 EXCLUSIVE。 有效值:
true|false默认值:
false注意
从AWS ParallelCluster版本 3.7.0 开始支持
JobExclusiveAllocation。 CustomSlurmSettings(可选,Dict)-
定义自定义 Slurm 分区(队列)配置设置。
指定应用于队列(分区)的自定义 Slurm 配置参数键值对的字典。
每个单独的键值对(例如
Param1: Value1)都以Param1=Value1格式单独添加到 Slurm 分区配置行的末尾。您只能指定未在
CustomSlurmSettings中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 被拒登名单 Slurm 的配置参数 CustomSlurmSettings。AWS ParallelCluster仅检查参数是否在拒绝列表中。AWS ParallelCluster不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。
有关如何使用指定自定义Slurm配置参数的更多信息AWS ParallelCluster,请参阅Slurm 配置自定义。
有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf
。 注意
从AWS ParallelCluster版本 3.6.0 开始支持
CustomSlurmSettings。 Tags(可选,[字符串])-
标签键值对的列表。ComputeResource 标签覆盖 Tags 部分或
SlurmQueues/Tags中指定的重复标签。Key(可选,String)-
标签键。
Value(可选,String)-
标签值。
HealthChecks(可选)-
指定队列中所有计算资源上的计算节点运行状况检查。
Gpu(可选)-
指定队列中所有计算资源上的 GPU 运行状况检查。
注意
AWS ParallelCluster在使用
alinux2ARM 操作系统的节点Gpu中不支持HealthChecks/。这些平台不支持 NVIDIA 数据中心 GPU 管理器 (DCGM)。 不建议在使用 GPU 内存总大小高于 327680 MiB 的实例类型时启用 GPU 运行状况检查。
Enabled(可选,Boolean)-
是否AWS ParallelCluster对计算节点执行 GPU 运行状况检查。默认值为
false。
Gpu运行状况检查行为-
如果
Gpu/Enabled设置为true,则AWS ParallelCluster对队列中的计算资源执行 GPU 运行状况检查。 -
Gpu运行状况检查会对计算资源执行 GPU 运行状况检查,以防止在 GPU 降级的节点上提交作业。 -
如果某个计算节点未通过
Gpu运行状况检查,则该计算节点的状态将更改为DRAIN。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后,如果该计算节点是动态节点,则会终止;如果是静态节点,则会被替换。 -
Gpu运行状况检查的持续时间取决于所选实例类型、实例 GPUs 中的数量、GPU 内存总量和Gpu运行状况检查目标的数量(等同于作业 GPU 目标的数量)。例如,在 p4d.24xlarge 上,典型的持续时间为 3 分钟。 -
如果
Gpu运行状况检查在不受支持的实例上运行,它将退出,作业将在计算节点上运行。例如,如果一个实例没有 GPU,或者一个实例有 GPU,但不是 NVIDIA GPU,则运行状况检查将会退出,作业将在计算节点上运行。仅支持 NVIDIA GPUs 。 -
Gpu运行状况检查使用dcgmi工具对节点执行运行状况检查,并采取以下步骤:当在节点中开始
Gpu运行状况检查时:-
它会检测
nvidia-dcgm和nvidia-fabricmanager服务是否正在运行。 -
如果这些服务未运行,则
Gpu运行状况检查将会启动这些服务。 -
它会检测是否启用了持久性模式。
-
如果未启用持久性模式,则
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 队列的网络配置。
Networking: SubnetIds: -stringAssignPublicIp:booleanSecurityGroups: -stringAdditionalSecurityGroups: -stringPlacementGroup: Enabled:booleanId:stringName:stringProxy: HttpProxyAddress:string
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Networking 属性
SubnetIds(必需,[String])-
您在 IDs 其中配置Slurm队列的现有子网。
如果您在 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 的文件存储时,可能会发生这种情况。有关更多信息,请参阅同一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)-
为 Slurm 队列中的节点创建或分配公有 IP 地址。支持的值为
true和false。您指定的子网决定默认值。具有公共 IPs 默认值的子网,用于分配公有 IP 地址。如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须将 HeadNode/Networking/设置为ElasticIp
true以提供公共访问权限。AWS public IPs 只能分配给使用单个网络接口启动的实例。对于这种情况,我们建议您使用 NAT 网关为集群计算节点提供公有访问权限。在这种情况下,请将AssignPublicIp设置为false。有关 IP 地址的更多信息,请参阅 Amazon Linux 实例 EC2 用户指南中的在实例启动期间分配公有 IPv4 地址。 SecurityGroups(可选,[String])-
用于Slurm 队列的安全组的列表。如果未指定安全组,则会为您AWS ParallelCluster创建安全组。
验证您的SharedStorage系统是否正确配置了安全组。
警告
此警告适用于所有 3.
x。yAWS 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 队列的其他安全组的列表。
PlacementGroup(可选)-
指定 Slurm 队列的置放群组设置。
PlacementGroup: Enabled:booleanId:stringName:string更新策略:必须停止所有计算节点才能删除托管置放群组。必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Enabled(可选,Boolean)-
指示是否对 Slurm 队列使用置放群组。默认值为
false。 Id(可选,String)-
Slurm队列使用的现有集群置放群组的置放群组 ID。请务必提供置放群组 ID 而不是名称。
Name(可选,String)-
Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组名称 而不是 ID。
注意
-
如果
PlacementGroup/Enabled设置为true而未定义Name或Id,则会为每个计算资源分配自己的托管置放群组,除非将 ComputeResources/Networking/PlacementGroup 定义为覆盖此设置。 -
从AWS ParallelCluster版本 3.3.0 开始,添加Name了 SlurmQueuesNetworkingPlacementGroup///作为/ SlurmQueuesNetworkingPlacementGroup/Id的首选替代方案。
PlacementGroup/Id 和 PlacementGroup/Name 是等效的。您可以使用任何一个。
如果同时包含 PlacementGroup/Id和 PlacementGroup/Name,AWS 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 AMIs。您可以使用 C pcluster LI 命令查看默认值列表 AMIs。
注意
AMI 必须基于头节点所使用的相同操作系统。
pcluster list-official-images如果自定义 AMI 需要其他权限才能启动,则必须将这些权限添加到头节点策略中。
例如,如果自定义 AMI 具有与之关联的加密快照,则头节点策略中需要以下其他策略:
要排查自定义 AMI 验证警告,请参阅排查自定义 AMI 问题。
ComputeResources
(必需)定义 Slurm 队列的 ComputeResources 配置。
注意
-
在更新期间,集群大小可能会更改。有关更多信息,请参阅集群容量大小和更新。
-
只有当新的计算资源部署在属于创建集群时存在的 CIDR 块的子网中时,才能将其添加到集群。
ComputeResources: - Name:stringInstanceType:stringInstances: - InstanceType:stringMinCount:integerMaxCount:integerDynamicNodePriority:integerStaticNodePriority:integerSpotPrice:floatDisableSimultaneousMultithreading:booleanSchedulableMemory:integerHealthChecks: Gpu: Enabled:booleanEfa: Enabled:booleanGdrSupport:booleanCapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:stringNetworking: PlacementGroup: Enabled:booleanName:stringCustomSlurmSettings:dictTags: - Key:stringValue:string
更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。
ComputeResources 属性
Name(必需,String)-
Slurm 队列计算环境的名称。名称最多可以包含 25 个字符。
InstanceType(必需,String)-
此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构。实例可以使用
x86_64或arm64架构。集群配置必须定义InstanceType或实例。如果两者都被定义,AWS ParallelCluster则失败。
定义
InstanceType时,不能定义多个子网。如果您只配置一种实例类型并想要使用多个子网,请在Instances而不是InstanceType中定义您的实例类型。有关更多信息,请参阅 Networking/SubnetIds。如果您定义了p4d或hpc6id实例类型,或者其他具有多个网络接口或网络接口卡的实例类型,则必须按照中所述在私有子网中启动计算实例AWS ParallelCluster使用两个子网。AWS public IPs 只能分配给使用单个网络接口启动的实例。有关更多信息,请参阅 Amazon Linux 实例 EC2 用户指南中的在实例启动期间分配公有 IPv4 地址。
Instances(必需)-
指定计算资源的实例类型列表。要为实例类型列表指定分配策略,请参阅 AllocationStrategy。
集群配置必须定义 InstanceType 或 Instances。如果同时定义了两者,则AWS ParallelCluster将会失败。
有关更多信息,请参阅 Slurm 的多实例类型分配。
Instances: - InstanceType:string注意
从 3.7.0 AWS ParallelCluster版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 AWS ParallelCluster版本。
x,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling无法启用。更新策略:对于此列表值设置,可以在更新期间添加新值,或者在删除现有值时必须停止计算实例集。
InstanceType(必需,String)-
要在此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构,即
x86_64或arm64。Instances 中列出的实例类型必须:
-
相同数量的 vCPUs,或者,如果设置DisableSimultaneousMultithreading为
true,则为相同数量的内核。 -
具有相同制造商的相同数量的加速器。
Instances 中列出的实例类型可以具有:
-
不同的内存量。
在这种情况下,应将最小内存设置为可消耗的 Slurm 资源。
注意
从 3.7.0 AWS ParallelCluster版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 AWS ParallelCluster版本。
x,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling无法启用。 -
不同的网卡。
在这种情况下,为计算资源配置的网络接口数量由网卡数量最少的实例类型定义。
-
不同的网络带宽。
-
不同的实例存储大小。
如果您定义了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_BLOCK,MaxCount必须等于MinCount和大于 0,因为容量块预留的所有实例部分都作为静态节点进行管理。在创建集群时,头节点会等待所有静态节点准备就绪,然后再发出集群创建成功的信号。但是,当您使用时
CapacityType = CAPACITY_BLOCK,此检查将不考虑与容量块关联的计算资源的节点部分。即使不是所有配置的容量块都处于活动状态,也会创建集群。注意
在更新期间,集群大小可能会更改。有关更多信息,请参阅集群容量大小和更新
DynamicNodePriority(可选,Integer)-
队列计算资源中动态节点的优先级。该优先级映射到计算资源动态节点的 Slurm 节点
Weight配置参数。默认值为 1000。Slurm 将
Weight值最低的节点设置为最高优先级。警告
在 Slurm 分区(队列)中使用许多不同的
Weight值可能会减慢队列中作业调度的速度。在AWS ParallelCluster 3.7.0 之前的版本中,静态节点和动态节点的默认权重相同。
1在这种情况下,由于静态和动态节点的命名架构,Slurm 可能会将空闲的动态节点的优先级设置为高于空闲的静态节点。如果所有其他条件相同,Slurm 会按名称的字母顺序调度节点。注意
DynamicNodePriority已在 3.7.0 AWS ParallelCluster版本中添加。 StaticNodePriority(可选,Integer)-
队列计算资源中静态节点的优先级。该优先级映射到计算资源静态节点的 Slurm 节点
Weight配置参数。默认值为 1。Slurm 将
Weight值最低的节点设置为最高优先级。警告
在 Slurm 分区(队列)中使用许多不同的
Weight值可能会减慢队列中作业调度的速度。注意
StaticNodePriority已在 3.7.0 AWS ParallelCluster版本中添加。 SpotPrice(可选,Float)-
在启动任何实例之前为 Amazon EC2 竞价型实例支付的最高价格。默认值为按需价格。
DisableSimultaneousMultithreading(可选,Boolean)-
如果为
true,则禁用 Slurm 队列中节点上的多线程。默认值为false。并非所有实例类型都可禁用多线程。有关支持禁用多线程的实例类型列表,请参阅 A mazon EC2 用户指南中每种实例类型的 CPU 核心和每个 CPU 内核的线程。
SchedulableMemory(可选,Integer)-
在 Slurm 参数
RealMemory中为计算资源的计算节点配置的内存量,以 MiB 为单位。如果启用了 SlurmSettings/EnableMemoryBasedScheduling,则此值为可供作业使用的节点内存的上限。默认值是亚马逊 EC2 实例类型中列出并由亚马逊EC2 API 返回的内存的 95% DescribeInstanceTypes。确保将以 GiB 为单位给出的值转换为 MiB 单位。 支持的值:
1-EC2MemoryEC2Memory是在亚马逊 EC2 实例类型中列出并由亚马EC2 逊 API 返回的内存(以 MiB 为单位)。DescribeInstanceTypes确保将以 GiB 为单位给出的值转换为 MiB 单位。 当启用了 SlurmSettings/EnableMemoryBasedScheduling 时,此选项最相关。有关更多信息,请参阅 Slurm 基于内存的调度。
注意
从AWS ParallelCluster版本 3.2.0 开始支持
SchedulableMemory。从版本 3.2.0 开始,默认情况下,AWS ParallelCluster将Slurm计算节点配置
RealMemory为 Ama EC2 zon API 返回的内存的 95%。DescribeInstanceTypes此配置与EnableMemoryBasedScheduling的值无关。 HealthChecks(可选)-
指定计算资源上的运行状况检查。
Gpu(可选)-
指定计算资源上的 GPU 运行状况检查。
Enabled(可选,Boolean)-
是否AWS ParallelCluster对队列中的计算资源执行 GPU 运行状况检查。默认值为
false。注意
AWS ParallelCluster在使用
alinux2ARM 操作系统的节点Gpu中不支持HealthChecks/。这些平台不支持 NVIDIA 数据中心 GPU 管理器 (DCGM)。
Gpu运行状况检查行为-
如果
Gpu/设置Enabled为true,则对计算资源AWS ParallelCluster执行 GPU 运行状况检查。 -
Gpu运行状况检查会对计算资源执行运行状况检查,以防止在 GPU 降级的节点上提交作业。 -
如果某个计算节点未通过
Gpu运行状况检查,则该计算节点的状态将更改为DRAIN。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后,如果该计算节点是动态节点,则会终止;如果是静态节点,则会被替换。 -
Gpu运行状况检查的持续时间取决于所选实例类型、实例 GPUs 中的数量和Gpu运行状况检查目标的数量(等同于作业 GPU 目标的数量)。对于具有 8 的实例 GPUs,典型持续时间小于 3 分钟。 -
如果
Gpu运行状况检查在不受支持的实例上运行,它将退出,作业将在计算节点上运行。例如,如果一个实例没有 GPU,或者一个实例有 GPU,但不是 NVIDIA GPU,则运行状况检查将会退出,作业将在计算节点上运行。仅支持 NVIDIA GPUs 。 -
Gpu运行状况检查使用dcgmi工具对节点执行运行状况检查,并采取以下步骤:当在节点中开始
Gpu运行状况检查时:-
它会检测
nvidia-dcgm和nvidia-fabricmanager服务是否正在运行。 -
如果这些服务未运行,则
Gpu运行状况检查将会启动这些服务。 -
它会检测是否启用了持久性模式。
-
如果未启用持久性模式,则
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(可选)-
为 Slurm 队列中的节点指定 Elastic Fabric Adapter (EFA) 设置。
Efa: Enabled:booleanGdrSupport:boolean更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Enabled(可选,Boolean)-
指定 Elastic Fabric Adapter (EFA) 已启用。要查看支持 EFA 的亚马逊 EC2 实例列表,请参阅亚马逊 Linux 实例 EC2 用户指南中的支持的实例类型。有关更多信息,请参阅 Elastic Fabric Adapter。我们建议您使用集群 SlurmQueues/Networking/PlacementGroup 最大限度地缩短实例之间的延迟。
默认值为
false。注意
不支持在不同的可用区之间使用 Elastic Fabric Adapter (EFA)。有关更多信息,请参阅 SubnetIds。
警告
如果您在中定义自定义安全组 SecurityGroups,请确保您的启用 EFA 的实例是允许所有入站和出站流量进入自身的安全组的成员。
GdrSupport(可选,Boolean)-
(可选)从AWS ParallelCluster版本 3.0.2 开始,此设置无效。如果计算资源和操作系统的实例类型支持 GPUDirect RDMA(远程直接内存访问)的 Elastic Fabric Adapter (EFA),则始终启用对 RDMA(远程直接内存访问)Slurm的支持。
CapacityReservationTarget-
CapacityReservationTarget: CapacityReservationId:stringCapacityReservationResourceGroupArn:string指定要用于计算资源的按需容量预留。
CapacityReservationId(可选,String)-
要用于队列计算资源的现有容量预留的 ID。ID 可以指的是 ODCR 或适用于 ML 的容量块。
如果在计算资源级别指定此参数 InstanceType是可选的,则将自动从预留中检索该参数。
CapacityReservationResourceGroupArn(可选,String)-
指示用作计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。AWS ParallelCluster确定并使用组中最适当的容量预留。对于为计算资源列出的每种实例类型,资源组必须至少有一个 ODCR。有关更多信息,请参阅 使用按需容量预留(ODCR)启动实例。
-
如果
PlacementGroup在 SlurmQueues/Networking或 SlurmQueues//中启用 Networking,则AWS ParallelCluster选择以实例类型PlacementGroup为目标的资源组和计算资源(如果存在)。ComputeResourcesPlacementGroup必须以 ComputeResources 中定义的实例类型之一为目标。 -
如果
PlacementGroup未在 SlurmQueues/Networking或 SlurmQueuesComputeResources/中启用 Networking,则AWS ParallelCluster选择仅针对计算资源的实例类型(如果存在)的资源组。
-
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
注意
从AWS ParallelCluster版本 3.3.0 开始添加了
CapacityReservationTarget。 Networking-
Networking: PlacementGroup: Enabled:booleanName: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 AWS ParallelCluster版本中添加。
CustomSlurmSettings(可选,Dict)-
(可选)定义自定义 Slurm 节点(计算资源)配置设置。
指定应用于 Slurm 节点(计算资源)的自定义 Slurm 配置参数键值对的字典。
每个单独的键值对(例如
Param1: Value1)都以Param1=Value1格式单独添加到 Slurm 节点配置行的末尾。您只能指定未在
CustomSlurmSettings中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 被拒登名单 Slurm 的配置参数 CustomSlurmSettings。AWS ParallelCluster仅检查参数是否在拒绝列表中。AWS ParallelCluster不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。
有关如何使用指定自定义Slurm配置参数的更多信息AWS ParallelCluster,请参阅Slurm 配置自定义。
有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf
。 注意
从AWS ParallelCluster版本 3.6.0 开始支持
CustomSlurmSettings。 Tags(可选,[字符串])-
标签键值对的列表。
ComputeResource标签覆盖 Tags 部分或 SlurmQueues/Tags中指定的重复标签。Key(可选,String)-
标签键。
Value(可选,String)-
标签值。
ComputeSettings
(必需)定义 Slurm 队列的 ComputeSettings 配置。
ComputeSettings 属性
指定 Slurm 队列中节点的 ComputeSettings 的属性。
ComputeSettings: LocalStorage: RootVolume: Size:integerEncrypted:booleanVolumeType:stringIops:integerThroughput:integerEphemeralVolume: MountDir:string
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
LocalStorage(可选)-
指定 Slurm 队列中节点的
LocalStorage的属性。LocalStorage: RootVolume: Size:integerEncrypted:booleanVolumeType:stringIops:integerThroughput:integerEphemeralVolume: MountDir:string更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
RootVolume(可选)-
指定 Slurm 队列中节点的根卷的详细信息。
RootVolume: Size:integerEncrypted:booleanVolumeType:stringIops:integerThroughput: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。有关更多信息,请参阅《亚马逊 EC2 用户指南》中的 Amaz on 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(io2Block 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值。有关更多信息,请参阅《亚马逊 EC2 用户指南》中的 “io2屏蔽 Express 卷”。 Throughput(可选,Integer)-
定义
gp3卷类型的吞吐量,以 MiB/s 为单位。此设置仅在VolumeType为gp3时有效。默认值为125。支持的值:125–1000 MiB/sThroughput与Iops的比率不能超过 0.25。如果最大吞吐量为 1000,则该Iops设置 MiB/s 必须至少为 4000。
EphemeralVolume(可选,Boolean)-
指定临时卷的设置。临时卷是通过将所有实例存储卷合并到
ext4文件系统格式的单个逻辑卷而创建的。默认值为/scratch。如果实例类型没有任何实例存储卷,则不会创建临时卷。有关更多信息,请参阅 Amazon EC2 用户指南中的实例存储卷。EphemeralVolume: MountDir:string更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
MountDir(可选,String)-
Slurm 队列中每个节点的临时卷的挂载目录。
CustomActions
(可选)指定要在 Slurm 队列中的节点上运行的自定义脚本。
CustomActions: OnNodeStart: Sequence: - Script:stringArgs: -stringScript:stringArgs: -stringOnNodeConfigured: Sequence: - Script:stringArgs: -stringScript:stringArgs: -string
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
CustomActions 属性
OnNodeStart(可选,String)-
指定在启动任何节点部署引导操作之前,要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。AWS ParallelCluster不支持同一个自定义操作同时包含单个脚本和
Sequence。有关更多信息,请参阅自定义引导操作。Sequence(可选)-
要运行的脚本的列表。
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Script(必需,String)-
要使用的文件。文件路径可以
https://或s3://开头。 Args(可选,[String])-
要传递到脚本的参数的列表。
Script(必需,String)-
用于单个脚本的文件。文件路径可以
https://或s3://开头。 Args(可选,[String])-
要传递到单个脚本的参数的列表。
OnNodeConfigured(可选,String)-
指定在所有节点引导操作完成之后,要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。AWS ParallelCluster不支持同一个自定义操作同时包含单个脚本和
Sequence。有关更多信息,请参阅自定义引导操作。Sequence(可选)-
要运行的脚本的列表。
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
Script(必需,String)-
要使用的文件。文件路径可以
https://或s3://开头。 Args(可选,[String])-
要传递到脚本的参数的列表。
Script(必需,String)-
用于单个脚本的文件。文件路径可以
https://或s3://开头。 Args(可选,[String])-
要传递到单个脚本的参数的列表。
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
注意
Sequence是从 3.6.0 AWS ParallelCluster版本开始添加的。指定后Sequence,您可以列出一个自定义操作的多个脚本。AWS ParallelCluster继续支持使用单个脚本配置自定义操作,不包括脚本Sequence。AWS ParallelCluster不支持同时包含单个脚本和
Sequence同一个自定义操作。
Iam
(可选)定义 Slurm 队列的可选 IAM 设置。
Iam: S3Access: - BucketName:stringEnableWriteAccess:booleanKeyName:stringAdditionalIamPolicies: - Policy:stringInstanceProfile:stringInstanceRole:string
Iam 属性
InstanceProfile(可选,String)-
指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例配置文件。您不能同时指定
InstanceProfile和InstanceRole。格式为arn:${Partition}:iam::${Account}:instance-profile/${InstanceProfileName}。如果指定此设置,则不能指定
S3Access和AdditionalIamPolicies设置。我们建议您指定
S3Access和AdditionalIamPolicies设置中的一个或两个,因为添加到AWS ParallelCluster中的功能通常需要新权限。 InstanceRole(可选,String)-
指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例角色。您不能同时指定
InstanceProfile和InstanceRole。格式为arn:${Partition}:iam::${Account}:role/${RoleName}。如果指定此设置,则不能指定
S3Access和AdditionalIamPolicies设置。我们建议您指定
S3Access和AdditionalIamPolicies设置中的一个或两个,因为添加到AWS ParallelCluster中的功能通常需要新权限。 S3Access(可选)-
为 Slurm 队列指定存储桶。此设置用于生成针对 Slurm 队列中的存储桶授予指定访问权限的策略。
如果指定此设置,则不能指定
InstanceProfile和InstanceRole设置。我们建议您指定
S3Access和AdditionalIamPolicies设置中的一个或两个,因为添加到AWS ParallelCluster中的功能通常需要新权限。S3Access: - BucketName:stringEnableWriteAccess:booleanKeyName:stringBucketName(必需,String)-
存储桶的名称。
KeyName(可选,String)-
存储桶的密钥。默认值为
*。 EnableWriteAccess(可选,Boolean)-
指示是否为存储桶启用写入权限。
AdditionalIamPolicies(可选)-
指定适用于亚马逊 IAM 策略的亚马逊资源名称 (ARNs) 列表 EC2 。除了所需的权限外,此列表还附在用于Slurm队列的根角色上AWS ParallelCluster。
IAM 策略名称及其 ARN 不相同。不能使用名称。
如果指定此设置,则不能指定
InstanceProfile和InstanceRole设置。我们建议您使用
AdditionalIamPolicies,因为AdditionalIamPolicies已经添加到AWS ParallelCluster所需的权限中,而InstanceRole必须包含所有必需的权限。随着功能的不断添加,所需权限通常会随版本发生变化。没有默认值。
AdditionalIamPolicies: - Policy:stringPolicy(必需,[String])-
IAM 策略的列表。
SlurmSettings
(可选)为 Slurm 定义应用到整个集群的设置。
SlurmSettings: ScaledownIdletime:integerQueueUpdateStrategy:stringEnableMemoryBasedScheduling:booleanCustomSlurmSettings:[dict]CustomSlurmSettingsIncludeFile:stringDatabase: Uri:stringUserName:stringPasswordSecretArn:stringExternalSlurmdbd: Host:stringPort:integerDns: DisableManagedDns:booleanHostedZoneId:stringUseEc2Hostnames:boolean
SlurmSettings 属性
ScaledownIdletime(可选,Integer)-
定义 Slurm 节点终止前没有作业的时间(以分钟为单位)。
默认值为
10。 MungeKeySecretArn(可选,String)-
纯文本 Secrets AWS Manager 密钥的亚马逊资源名称 (ARN),其中包含要在集群中使用的 base64 编码的 munge 密钥。Slurm该 munge 密钥将用于验证 Slurm 客户端命令与作为远程服务器的 Slurm 进程守护程序之间的 RPC 调用。如果未提供,AWS ParallelCluster将 MungeKeySecretArn 为集群生成一个随机 munge 密钥。
注意
从AWS ParallelCluster版本 3.8.0 开始支持
MungeKeySecretArn。警告
如果 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") -
QueueUpdateStrategy(可选,String)-
为具有以下更新策略的 SlurmQueues 部分参数指定替换策略:
更新策略:必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。
仅在集群更新过程开始时使用
QueueUpdateStrategy值。有效值:
COMPUTE_FLEET_STOP|DRAIN|TERMINATE默认值:
COMPUTE_FLEET_STOPDRAIN-
队列中更改了参数值的节点将设置为
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。注意
从 3.7.0 AWS ParallelCluster版开始,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling可以启用。
适用于 3.2.0 到 3.6 AWS ParallelCluster版本。
x,如果您在实例中配置了多个实例类型,则EnableMemoryBasedScheduling无法启用。 CustomSlurmSettings(可选,[Dict])-
定义应用到整个集群的自定义 Slurm 设置。
指定要附加到AWS 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-模式。这些模式是为AWS ParallelCluster托管的节点预留的。如果您在
CustomSlurmSettings中指定自定义 Slurm 配置参数,则不得为CustomSlurmSettingsIncludeFile指定自定义 Slurm 配置参数。您只能指定未在
CustomSlurmSettings中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 被拒登名单 Slurm 的配置参数 CustomSlurmSettings。AWS ParallelCluster仅检查参数是否在拒绝列表中。AWS ParallelCluster不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。
有关如何使用指定自定义Slurm配置参数的更多信息AWS ParallelCluster,请参阅Slurm 配置自定义。
有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf
。 注意
从AWS ParallelCluster版本 3.6.0 开始支持
CustomSlurmSettings。 CustomSlurmSettingsIncludeFile(可选,String)-
定义应用到整个集群的自定义 Slurm 设置。
指定将包含自定义 Slurm 配置参数的自定义 Slurm 文件附加到AWS ParallelCluster生成的
slurm.conf文件的末尾。必须包括该文件的路径。路径可以
https://或s3://开头。如果您为
CustomSlurmSettingsIncludeFile指定自定义 Slurm 配置参数,则不得为CustomSlurmSettings指定自定义 Slurm 配置参数。注意
自定义 Slurm 节点的名称中不得包含
-st-或-dy-模式。这些模式是为AWS ParallelCluster托管的节点预留的。您只能指定未在
CustomSlurmSettingsIncludeFile中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息,请参阅 被拒登名单 Slurm 的配置参数 CustomSlurmSettings。AWS ParallelCluster仅检查参数是否在拒绝列表中。AWS ParallelCluster不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败,从而导致集群创建和更新失败。
有关如何使用指定自定义Slurm配置参数的更多信息AWS ParallelCluster,请参阅Slurm 配置自定义。
有关 Slurm 配置参数的更多信息,请参阅 Slurm 文档中的 slurm.conf
。 注意
从AWS ParallelCluster版本 3.6.0 开始支持
CustomSlurmSettings。
Database
(可选)定义用于在集群上启用 Slurm 会计的设置。有关更多信息,请参阅 Slurm 用会计 AWS ParallelCluster。
Database: Uri:stringUserName:stringPasswordSecretArn:string
Database 属性
Uri(必需,String)-
用作 Slurm 会计后端的数据库服务器的地址。此 URI 必须采用
host:port格式且不得包含架构,例如mysql://。主机可以是 IP 地址,也可以是头节点可解析的 DNS 名称。如果未提供端口,AWS ParallelCluster将使用 MySQL 默认端口 3306。AWS ParallelCluster将Slurm记账数据库引导到集群,并且必须访问该数据库。
在执行以下操作之前,必须可以访问该数据库:
-
创建集群。
-
通过集群更新启用 Slurm 会计。
-
UserName(必需,String)-
Slurm 用于连接数据库、写入会计日志和执行查询的身份。用户必须对数据库具有读取和写入权限。
PasswordSecretArn(必需,String)-
包含
UserName纯文本密码的AWS Secrets Manager密钥的 Amazon 资源名称 (ARN)。此密码与UserName和 Slurm 会计一起使用,用于在数据库服务器上进行身份验证。注意
-
使用AWS Secrets Manager控制台创建密钥时,请务必选择 “其他类型的密钥”,选择纯文本,并且仅在密钥中包含密码文本。
-
你不能在数据库密码中使用 “#” 字符,因为 Slurm 在 slurmdbd.conf 中不支持它。
-
有关如何使用创建密钥AWS Secrets Manager的更多信息,请参阅创建AWS Secrets Manager密钥。
如果用户拥有 DescribeSecret 的权限,则会验证
PasswordSecretArn。如果指定的密钥存在,则PasswordSecretArn有效。如果用户 IAM 策略不包括DescribeSecret,则不验证PasswordSecretArn并显示警告消息。有关更多信息,请参阅 基本AWS ParallelCluster pcluster 用户策略。更新
PasswordSecretArn时,必须停止计算实例集。如果更改了密钥值而未更改密钥 ARN,则不会使用新数据库密码自动更新集群。要针对新密钥值更新集群,您必须在停止计算实例集后从头节点内运行以下命令。$sudo /opt/parallelcluster/scripts/slurm/update_slurm_database_password.sh警告
我们建议仅在已停止计算实例集的情况下更改数据库密码以避免会计数据丢失。
-
DatabaseName(可选,String)-
数据库服务器上用于 Slurm 会计的数据库名称(由 Uri 参数定义)。
数据库名称可以包含小写字母、数字和下划线。名称长度不得超过 64 个字符。
此参数映射到 slurmdbd.conf
的 StorageLoc参数。如果未提供,
DatabaseName则 ParallelCluster 将使用集群的名称为定义值StorageLoc。允许更新
DatabaseName,但要注意以下几点:-
如果数据库服务器上尚 DatabaseName 不存在具有名称的数据库,slurmdbd 将创建该数据库。您有责任根据需要重新配置新数据库(例如,添加会计实体 — 集群、账户、用户 QOSs、关联等)。
-
如果数据库服务器上 DatabaseName 已经存在同名数据库,slurmdbd 会将其用于会计功能。Slurm
-
注意
从版本 3.3.0 开始添加了 Database。
ExternalSlurmdbd
(可选)定义通过外部 slurmdbd 服务器启用 Slurm Accounting 的设置。有关更多信息,请参阅使用进行Slurm会计AWS ParallelCluster。
ExternalSlurmdbd: Host:stringPort:integer
ExternalSlurmdbd 属性
-
Host(必需,String) -
用于 Slurm 会计的外部 slurmdbd 服务器的地址。主机可以是 IP 地址,也可以是头节点可解析的 DNS 名称。
-
Port(可选,Integer) -
slurmdbd 服务监听的端口。默认值为
6819。
Dns
(可选)为 Slurm 定义应用到整个集群的设置。
Dns: DisableManagedDns:booleanHostedZoneId:stringUseEc2Hostnames:boolean
Dns 属性
DisableManagedDns(可选,Boolean)-
如果为
true,则不创建集群的 DNS 条目,并且无法解析 Slurm 节点名称。默认情况下,AWS ParallelCluster创建一个 Route 53 托管区域,启动时将在其中注册节点。默认值为
false。如果设置DisableManagedDns为true,则托管区域不是由创建的AWS ParallelCluster。要了解如何使用此设置在没有互联网访问权限的子网中部署集群,请参阅AWS ParallelCluster在无法访问互联网的单个子网中。
警告
集群需要名称解析系统才能正常运行。如果
DisableManagedDns设置为true,则必须提供名称解析系统。要使用亚马逊 EC2 默认 DNS,请将设置UseEc2Hostnames为true。或者配置您自己的 DNS 解析程序,并确保在启动实例时注册节点名称。例如,您可以通过配置 CustomActions/OnNodeStart 来实现这一目标。 HostedZoneId(可选,String)-
定义要用于集群 DNS 名称解析的自定义 Route 53 托管区 ID。如果提供,则在指定的托管区域中AWS ParallelCluster注册集群节点,并且不会创建托管托管区域。
UseEc2Hostnames(可选,Boolean)-
如果是
true,则使用默认 EC2主机名配置集群计算节点。还会使用此信息更新 SlurmNodeHostName。默认值为false。要了解如何使用此设置在没有互联网访问权限的子网中部署集群,请参阅AWS ParallelCluster在无法访问互联网的单个子网中。
注意
从AWS ParallelCluster版本 3.3.0 开始,此备注不相关。
对于 3.3.0 之前的AWS ParallelCluster支持版本:
如果设置
UseEc2Hostnames为true,则使用AWS ParallelClusterprolog和epilog脚本设置 Slurm 配置文件:-
分配了每个作业后,
prolog用于向计算节点上的/etc/hosts中添加节点信息。 -
epilog用于清理prolog写入的内容。
要添加自定义
epilog或prolog脚本,请分别将其添加到/opt/slurm/etc/pcluster/prolog.d/或/opt/slurm/etc/pcluster/epilog.d/文件夹。 -