Sdílet prostřednictvím


CycleCloud Slurm 3.0

Podpora plánovače slurm byla přepsána jako součást verze CycleCloud 8.4.0. Mezi klíčové přínosy patří:

  • Podpora dynamických uzlů a dynamických oddílů prostřednictvím dynamických uzlů, podpora jedné i více velikostí virtuálních počítačů
  • Nové verze 23.02 a 22.05.8
  • Generování sestav nákladů prostřednictvím azslurm rozhraní příkazového řádku
  • azslurm Automatické škálování na základě rozhraní příkazového řádku
  • Podpora Ubuntu 20
  • Odstraněna potřeba modulu plug-in topologie, a proto také jakýkoli odeslat plugin

Slurm Clusters in CycleCloud verze < 8.4.0

Další informace najdete v tématu Přechod z verze 2.7 na verzi 3.0 .

Provádění změn clusteru

Cluster Slurm nasazený v CycleCloudu obsahuje rozhraní příkazového řádku s názvem azslurm , které usnadňuje provádění změn v clusteru. Po provedení jakýchkoli změn v clusteru spusťte následující příkaz jako root na uzlu Plánovač slurm, který znovu sestaví azure.conf uzly v clusteru a aktualizuje je:

      $ sudo -i
      # azslurm scale

Tím by se měly vytvořit oddíly se správným počtem uzlů a gres.conf restartovat slurmctld.

Už se nevytvářely uzly spouštěné předem.

Od verze 3.0.0 projektu CycleCloud Slurm už nevytváříme uzly v CycleCloudu předem. Uzly se vytvoří při azslurm resume vyvolání nebo ručním vytvořením v CycleCloudu prostřednictvím rozhraní příkazového řádku.

Vytváření dalších oddílů

Výchozí šablona, která se dodává s Azure CycleCloudem, má tři oddíly (hpca htcdynamic) a můžete definovat vlastní uzly, které se mapují přímo na oddíly Slurm. Pokud chcete například vytvořit oddíl GPU, přidejte do šablony clusteru následující část:

   [[nodearray gpu]]
   MachineType = $GPUMachineType
   ImageName = $GPUImageName
   MaxCoreCount = $MaxGPUExecuteCoreCount
   Interruptible = $GPUUseLowPrio
   AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs

      [[[configuration]]]
      slurm.autoscale = true
      # Set to true if nodes are used for tightly-coupled multi-node jobs
      slurm.hpc = false

      [[[cluster-init cyclecloud/slurm:execute:3.0.1]]]
      [[[network-interface eth0]]]
      AssociatePublicIpAddress = $ExecuteNodesPublic

Dynamické oddíly

Od verze 3.0.1podporujeme dynamické oddíly. Mapování na dynamický oddíl můžete vytvořit nodearray přidáním následujícího příkazu. Všimněte si, že myfeature popis funkce může být libovolný. Může to být také více než jedna funkce oddělená čárkou.

      [[[configuration]]]
      slurm.autoscale = true
      # Set to true if nodes are used for tightly-coupled multi-node jobs
      slurm.hpc = false
      # This is the minimum, but see slurmd --help and [slurm.conf](https://slurm.schedmd.com/slurm.conf.html) for more information.
      slurm.dynamic_config := "-Z --conf \"Feature=myfeature\""

Tím se vygeneruje dynamický oddíl podobný následujícímu.

# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns

Automatické škálování pomocí dynamických oddílů

Ve výchozím nastavení v dynamickém oddílu nedefinujeme žádné uzly. Místo toho můžete spustit uzly přes CycleCloud nebo ručním vyvoláním azslurm resume a připojí se ke clusteru s libovolným názvem, který jste vybrali. Služba Slurm ale o těchto uzlech neví, takže je nemůže automaticky škálovat.

Místo toho můžete záznamy uzlů vytvořit předem předem, což umožňuje, aby je služba Slurm automaticky škálovala.

scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD

Další výhodou dynamických oddílů je, že ve stejném oddílu můžete podporovat více velikostí virtuálních počítačů. Jednoduše přidejte název velikosti virtuálního počítače jako funkci a pak azslurm můžete rozlišit, kterou velikost virtuálního počítače chcete použít.

Poznámka Velikost virtuálního počítače se přidá implicitně. Nemusíte ho přidávat do slurm.dynamic_config

scontrol create nodename=f4-[1-10] Feature=myfeature,Standard_F4 State=CLOUD
scontrol create nodename=f8-[1-10] Feature=myfeature,Standard_F8 State=CLOUD

Ať tak či onak, jakmile tyto uzly vytvoříte v objektu, State=Cloud budou teď k dispozici pro automatické škálování jako jiné uzly.

Pokud chcete v uzlu CycleCloud podporovat více velikostí virtuálních počítačů, můžete šablonu upravit tak, aby umožňovala více velikostí virtuálních počítačů, a to přidáním Config.Mutiselect = true.

        [[[parameter DynamicMachineType]]]
        Label = Dyn VM Type
        Description = The VM type for Dynamic nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_F2s_v2
        Config.Multiselect = true

Dynamické vertikální snížení kapacity

Ve výchozím nastavení budou všechny uzly v dynamickém oddílu vertikálně snížit kapacitu stejně jako ostatní oddíly. Pokud chcete tuto možnost zakázat, přečtěte si téma SuspendExcParts.

Ruční škálování

Pokud cyclecloud_slurm zjistí, že automatické škálování je zakázané (SuspendTime=-1), použije stav FUTURE k označení uzlů, které jsou vypnuté, místo toho, aby se spoléhala na stav napájení ve službě Slurm. Tj. Pokud je povolené automatické škálování, uzly mimo uzly se označí jako idle~ ve sinfo. Pokud je automatické škálování zakázané, mimo uzly se ve sinfo nezobrazí vůbec. Jejich definici stále uvidíte pomocí scontrol show nodes --futurepříkazu .

Pokud chcete spustit nové uzly, spusťte příkaz /opt/azurehpc/slurm/resume_program.sh node_list (např. htc-[1-10]).

Pokud chcete vypnout uzly, spusťte příkaz /opt/azurehpc/slurm/suspend_program.sh node_list (např. htc-[1-10]).

Pokud chcete spustit cluster v tomto režimu, jednoduše přidejte SuspendTime=-1 do další konfigurace slurm v šabloně.

Pokud chcete přepnout cluster do tohoto režimu, přidejte SuspendTime=-1 do souboru slurm.conf a spusťte scontrol reconfigurepříkaz . Potom spusťte azslurm remove_nodes && azslurm scale.

Řešení potíží

Přechod z verze 2.7 na verzi 3.0

  1. Instalační složka se změnila. /opt/cycle/slurm ->/opt/azurehpc/slurm

  2. Protokoly automatického /var/log/slurmctldškálování jsou teď místo v /opt/azurehpc/slurm/logs . Poznámka: slurmctld.log Bude stále v této složce.

  3. cyclecloud_slurm.sh již neexistuje. Místo toho je k dispozici nové azslurm rozhraní příkazového řádku, které je možné spustit jako root. azslurm podporuje automatické dokončování.

    [root@scheduler ~]# azslurm
    usage: 
    accounting_info      - 
    buckets              - Prints out autoscale bucket information, like limits etc
    config               - Writes the effective autoscale config, after any preprocessing, to stdout
    connect              - Tests connection to CycleCloud
    cost                 - Cost analysis and reporting tool that maps Azure costs to Slurm Job Accounting data. This is an experimental feature.
    default_output_columns - Output what are the default output columns for an optional command.
    generate_topology    - Generates topology plugin configuration
    initconfig           - Creates an initial autoscale config. Writes to stdout
    keep_alive           - Add, remove or set which nodes should be prevented from being shutdown.
    limits               - 
    nodes                - Query nodes
    partitions           - Generates partition configuration
    refresh_autocomplete - Refreshes local autocomplete information for cluster specific resources and nodes.
    remove_nodes         - Removes the node from the scheduler without terminating the actual instance.
    resume               - Equivalent to ResumeProgram, starts and waits for a set of nodes.
    resume_fail          - Equivalent to SuspendFailProgram, shuts down nodes
    retry_failed_nodes   - Retries all nodes in a failed state.
    scale                - 
    shell                - Interactive python shell with relevant objects in local scope. Use --script to run python scripts
    suspend              - Equivalent to SuspendProgram, shuts down nodes
    wait_for_resume      - Wait for a set of nodes to converge.
    
  4. Uzly se už v CycleCloudu předem nevyplní. Vytvoří se jenom v případě potřeby.

  5. Všechny binární soubory služby jsou v azure-slurm-install-pkg*.tar.gz souboru v části slurm-pkgs. Přebíjí se z konkrétní binární verze. Aktuální binární verze je 2023-03-13

  6. U úloh MPI je ve výchozím nastavení jedinou hranicí sítě oddíl. Neexistuje více skupin umístění na oddíl jako 2.x. Takže na každý oddíl máte pouze jednu společně přidělenou škálovací sadu virtuálních počítačů. Neexistuje také použití modulu plug-in topologie, což vyžadovalo použití modulu plug-in pro odeslání úlohy, který už také není potřeba. Místo toho se teď doporučuje odesílání do více oddílů pro případy použití, které vyžadují odesílání úloh do více skupin umístění.

CycleCloud podporuje standardní sadu atributů automatického plánování napříč plánovači:

Atribut Popis
cyclecloud.cluster.autoscale.stop_enabled Je na tomto uzlu povolené automatické řešení? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs Doba (v sekundách) nečinnosti uzlu po dokončení úloh před vertikálním snížením kapacity.
cyclecloud.cluster.autoscale.idle_time_before_jobs Doba (v sekundách), po kterou má uzel před dokončením úloh sedět v nečinnosti, než dojde k vertikálnímu snížení kapacity.