Použití spotových virtuálních počítačů s úlohami Batch

Azure Batch nabízí spotové virtuální počítače, aby se snížily náklady na úlohy služby Batch. Spotové virtuální počítače umožňují nové typy úloh Batch tím, že umožňují použití velkého výpočetního výkonu za nízké náklady.

Spotové virtuální počítače využívají nadbytečnou kapacitu v Azure. Množství nadbytečné kapacity, která je k dispozici, se liší v závislosti na faktorech, jako je řada virtuálních počítačů, velikost virtuálního počítače, oblast a denní doba. Když ve fondech zadáte Spot virtuální počítače, Azure Batch může tento přebytek využít, pokud je k dispozici.

Kompromisem při používání spotových virtuálních počítačů je, že tyto virtuální počítače nemají žádnou smlouvu SLA a žádné záruky dostupnosti. Spotové virtuální počítače mohou být kdykoliv přerušeny, včetně okamžiku jejich vytvoření. Z tohoto důvodu jsou spotové virtuální počítače nejvhodnější pro úlohy dávkového a asynchronního zpracování, kde je doba dokončení úlohy flexibilní a práce se distribuuje napříč mnoha virtuálními počítači.

Pokud dojde k preempci, vyřadí se spotový výpočetní uzel a ztratí se veškerá práce, která nebyla správně označena kontrolním bodem. Vytváření kontrolních bodů je volitelné a záleží na koncovém uživateli služby Batch, zda je implementuje. Spuštěná úloha Batch, která byla přerušena z důvodu preempce, bude automaticky znovu zařazena do fronty k provedení na jiném výpočetním uzlu. Předem připravený virtuální počítač může později obnovit platforma Azure, ale obnovení se pokusí provést pouze po dobu prvních 48 hodin po preempci a není zaručeno, že se nakonec úspěšně podaří.

Spotové virtuální počítače se nabízejí za sníženou cenu ve srovnání s vyhrazenými virtuálními počítači. Další informace o cenách najdete v tématu Ceny služby Batch.

Podpora služby Batch pro spotové virtuální počítače

Azure Batch nabízí několik možností, které usnadňují využívání spotových virtuálních počítačů a jejich výhody:

  • Fondy batch můžou obsahovat jak vyhrazené virtuální počítače, tak spotové virtuální počítače. Počet jednotlivých typů virtuálních počítačů je možné zadat při vytvoření fondu nebo kdykoliv změnit u existujícího fondu pomocí explicitní operace změny velikosti nebo pomocí automatického škálování. Odesílání úloh a úkolů může zůstat beze změny bez ohledu na typy virtuálních počítačů ve fondu. Můžete také nakonfigurovat fond tak, aby úplně používal spotové virtuální počítače ke spouštění úloh co nejlevněji, ale při poklesu kapacity pod minimální prahovou hodnotu spustil vyhrazené virtuální počítače, aby úlohy zůstaly spuštěné.
  • Batch pooly automaticky se snaží dosáhnout cílového počtu spotových virtuálních počítačů. Pokud jsou virtuální počítače nuceně přerušené nebo nedostupné, služba Batch se pokusí nahradit ztracenou výpočetní kapacitu a vrátit se k původnímu cíli.
  • Když dojde k přerušení úkolů, služba Batch zjistí a automaticky znovu zařadí úkoly do fronty, aby se znovu spustily.
  • Spotové virtuální počítače mají samostatnou kvótu virtuálních procesorů, která se liší od kvóty pro vyhrazené virtuální počítače. Kvóta spotových virtuálních počítačů je vyšší než kvóta pro vyhrazené virtuální počítače, protože spotové virtuální počítače stojí méně. Další informace najdete v tématu Kvóty a omezení služby Batch.

Důležité informace a případy použití

Řada úloh Batch je vhodná pro spotové virtuální počítače. Zvažte použití spotových virtuálních počítačů, když jsou úlohy rozdělené do mnoha paralelních úloh nebo pokud máte mnoho úloh, které se škálují a distribuují napříč mnoha virtuálními počítači.

Mezi příklady případů použití dávkového zpracování, které jsou vhodné pro spotové virtuální počítače, patří:

  • Vývoj a testování: Zejména pokud se vyvíjejí rozsáhlá řešení, je možné realizovat významné úspory. Všechny typy testování můžou být přínosné, ale rozsáhlé zátěžové testování a regresní testování jsou skvělé využití.
  • Doplnění kapacity na vyžádání: Spotové virtuální počítače lze použít k doplnění běžných vyhrazených virtuálních počítačů. Pokud jsou k dispozici, úlohy se můžou škálovat a tím rychleji dosáhnout nižších nákladů; pokud není k dispozici, zůstane směrný plán vyhrazených virtuálních počítačů dostupný.
  • Flexibilní doba provádění úlohy: Pokud je časová úloha flexibilní, je možné tolerovat potenciální pokles kapacity. S přidáním spotových virtuálních počítačů ale úlohy často běží rychleji a za nižší náklady.

Fondy Batch lze konfigurovat tak, aby používaly spotové virtuální počítače různými způsoby:

  • Pool může používat pouze spotové virtuální počítače. V takovém případě služba Batch obnoví jakékoli předem ukončené kapacity, pokud jsou k dispozici. Tato konfigurace je nejlevnější způsob spouštění úloh.
  • Spotové virtuální počítače je možné použít se stabilním základem vyhrazených virtuálních počítačů. Pevný počet vyhrazených virtuálních počítačů zajišťuje, že vždy existuje určitá kapacita pro udržení pokroku v práci.
  • Pool může používat dynamickou kombinaci vyhrazených a Spot virtuálních počítačů tak, aby se levnější Spot virtuální počítače používaly výhradně, když jsou dostupné, ale plně placené vyhrazené virtuální počítače se škálovaly v případě potřeby. Tato konfigurace udržuje minimální dostupnou kapacitu, aby se zachoval průběh úloh.

Při plánování používání spotových virtuálních počítačů mějte na paměti následující postupy:

  • Aby se maximalizovalo využití nadbytečné kapacity v Azure, mohou vhodné úlohy škálovat horizontálně.
  • V některých případech nemusí být virtuální počítače dostupné nebo se přeruší, což vede ke snížení kapacity pro úlohy a může vést k přerušení úkolů a opětovnému spuštění.
  • Úlohy s kratší dobou provádění fungují nejlépe s spotovými virtuálními počítači. Úlohy s delšími úkoly můžou být v případě přerušení ovlivněny více. Pokud dlouhotrvající úlohy implementují vytváření kontrolních bodů pro uložení průběhu při jejich provádění, může se tento dopad snížit.
  • Dlouhotrvající úlohy MPI, které využívají více virtuálních počítačů, nejsou vhodné pro spotové virtuální počítače, protože jeden předčasně ukončený virtuální počítač může způsobit, že se celá úloha musí znovu spustit.
  • Spotové uzly mohou být označeny jako nepoužitelné, pokud jsou nesprávně nakonfigurovaná pravidla skupiny zabezpečení sítě (NSG).

Vytváření a správa fondů pomocí spotových virtuálních počítačů

Fond Batch může obsahovat vyhrazené i spotové virtuální počítače (označované také jako výpočetní uzly). Cílový počet výpočetních uzlů můžete nastavit pro vyhrazené i spotové virtuální počítače. Cílový počet uzlů určuje počet virtuálních počítačů, které chcete mít ve fondu.

Spotové virtuální počítače mohou být občas předběžně ukončeny. Když dojde k přerušení, úlohy spuštěné na přerušených virtuálních počítačích uzlů se znovu zařadí do fronty a spustí se znovu, když se kapacita obnoví. Služba Batch také provádí následující chování:

  • Přerušené virtuální počítače mají svůj stav aktualizován na Přerušené.
  • Virtuální počítač se efektivně odstraní, což vede ke ztrátě všech dat uložených místně na virtuálním počítači.
  • Operace seznamu uzlů v poolu stále vrací předběžně vyřazené uzly.
  • Fond se neustále pokouší dosáhnout cílového počtu dostupných spotových uzlů. Když se najde náhradní kapacita, uzly zachovávají svoje ID, ale jsou znovu inicializovány a procházejí stavy Vytváření a Spouštění , než budou dostupné pro plánování úkolů.
  • Počty přerušení jsou k dispozici jako metrika v Azure portálu.

Azure Batch SDK

Následující příklad vytvoří fond pomocí Azure virtuálních počítačů, v tomto případě virtuálních počítačů s Linuxem s cílem 5 vyhrazených virtuálních počítačů a 20 spotových virtuálních počítačů:

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "ubuntu-24_04-lts",
    sku: "server",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 24.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D4s_v3",
    virtualMachineConfiguration: virtualMachineConfiguration);

Můžete získat aktuální počet uzlů pro vyhrazené i spotové virtuální počítače:

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

Uzly fondu mají vlastnost, která označuje, jestli je uzel vyhrazeným nebo spotovým virtuálním počítačem:

bool? isNodeDedicated = poolNode.IsDedicated;

Stejně jako u fondů, které se skládají výhradně z vyhrazených virtuálních počítačů, je možné škálovat fond obsahující spotové virtuální počítače voláním Resize metody nebo pomocí automatického škálování.

Operace změny velikosti fondu má druhý volitelný parametr, který aktualizuje hodnotu targetLowPriorityNodes:

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

Azure CLI

Vytvořte nový pool se spot instancemi:

az batch pool create \
  --id "vmpool" \
  --vm-size "Standard_D4s_v3" \
  --target-dedicated-nodes 5 \
  --target-low-priority-nodes 20 \
  --enable-inter-node-communication false \
  --image "Canonical:ubuntu-24_04-lts:server" \
  --node-agent-sku-id "batch.node.ubuntu 24.04" \
  --account-name <your-batch-account-name> \
  --account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"

Škálujte existující fond tak, aby používal Spot instance:

az batch pool resize \
  --pool-id <existing-pool-id> \
  --target-dedicated-nodes 5 \
  --target-low-priority-nodes 20 \
  --account-name <your-batch-account-name> \
  --account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"

Kontrola stavu poolu a přidělení uzlů

az batch pool show \
  --account-name <your-batch-account-name> \
  --account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com" \
  --pool-id <your-pool-id> \
  --query "{State:state, CurrentSpotNodes:currentLowPriorityNodes, TargetSpotNodes:scaleSettings.targetLowPriorityNodes, ResizeErrors:resizeErrors}"

Azure PowerShell

Vytvořit fond se Spot instancemi:

New-AzBatchPool `
  -Id "vmpool" `
  -VirtualMachineSize "Standard_D4s_v3" `
  -TargetDedicatedComputeNodes 5 `
  -TargetLowPriorityComputeNodes 20 `
  -VirtualMachineImageId "/subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.Compute/images/{image}" `
  -BatchContext $context

Ověření pomocí PowerShellu:

$pool = Get-AzBatchPool -Id "vmpool" -BatchContext $context
$pool | Select-Object Id, VmSize, @{Name="SpotNodes";Expression={$_.TargetLowPriorityComputeNodes}}, State

Azure Portal

  1. Na portálu Azure vyberte účet Batch a zobrazte existující fond nebo vytvořte nový fond.

  2. V části Škálování vyberte buď cílové vyhrazené uzly , nebo cílové spotové uzly nebo uzly s nízkou prioritou.

    Snímek obrazovky, který ukazuje, jak škálovat cílové uzly

  3. U existujícího fondu vyberte fond a pak výběrem možnosti Škálovat aktualizujte požadovaný počet spotových uzlů.

  4. Vyberte Uložit.

Automatické škálování s využitím spotových virtuálních počítačů

Kromě přímého nastavení počtu cílových virtuálních počítačů můžete volitelně definovat vzorec automatického škálování pro fond. Vzorec automatického škálování fondu podporuje spotové virtuální počítače následujícím způsobem:

  • Můžete získat nebo nastavit hodnotu proměnné definované službou $TargetLowPriorityNodes.
  • Můžete získat hodnotu proměnné definované službou $CurrentLowPriorityNodes.
  • Můžete získat hodnotu proměnné definované službou $PreemptedNodeCount. Tato proměnná vrátí počet uzlů v přerušeném stavu a umožňuje zvýšit nebo snížit počet vyhrazených uzlů v závislosti na počtu nedostupných přerušených uzlů.

Další informace najdete v průvodci automatickým škálováním služby Batch.

Konfigurace úloh a úkolů

Úlohy a úkoly můžou vyžadovat další konfiguraci spotových uzlů:

  • Vlastnost JobManagerTask úlohy má AllowLowPriorityNode vlastnost. Pokud je tato vlastnost pravdivá, může být úkol správce úloh naplánován na vyhrazeném nebo spotovém uzlu. Pokud je to nepravda, pak je úkol správce úloh naplánován pouze na vyhrazený uzel.
  • AZ_BATCH_NODE_IS_DEDICATED Proměnná prostředí je k dispozici pro aplikační úlohu, aby bylo možné určit, jestli je spuštěná na Spot instance nebo na vyhrazeném výpočetním uzlu.

Zobrazení metrik pro spotové virtuální počítače

Nové metriky jsou k dispozici na portálu Azure pro spotové uzly. Tyto metriky jsou:

  • Počet uzlů s nízkou prioritou
  • Počet jader s nízkou prioritou
  • Počet předpětěných uzlů

Pokud chcete zobrazit tyto metriky na portálu Azure:

  1. Na portálu Azure přejděte ke svému účtu Batch.
  2. V části Monitorování vyberte Metriky.
  3. V seznamu metrik vyberte požadované metriky.

Omezení

  • Spotové virtuální počítače ve službě Batch neumožňují nastavení maximální cenové hladiny a nepodporují cenově motivovaná vyřazení. Mohou být vyřazeny pouze z důvodů kapacity.
  • Spotové virtuální počítače nejsou k dispozici pro některé typy nabídek cloudů, velikostí virtuálních počítačů a předplatných. Další informace o omezeních spotových virtuálních počítačů
  • Ephemeral OS disky se v současné době nepodporují u spotových virtuálních počítačů kvůli zásadám vyřazení spravované službou, konkrétně Stop-Deallocate.

Další kroky