AWS Batch permette di ripartire la capacità di SageMaker Training tra quote all’interno di una coda di job compatibile, decidendo se la capacità inutilizzata resta riservata, può essere prestata o può anche essere presa in prestito. Per chi progetta carichi di training condivisi tra team o progetti, la scelta dipende da quanta capacità si vuole tenere disponibile e da quali job si è disposti a interrompere quando serve recuperarla.

Che cosa gestiscono le quote di AWS Batch

Le quote sono suddivisioni virtuali all’interno di una coda di job: regolano l’uso della capacità per i job di SageMaker Training, ma non aumentano le quote di servizio a livello di account. AWS Batch supporta questa gestione solo per code collegate a un ambiente di servizio SAGEMAKER_TRAINING (documentazione AWS Batch sulla gestione delle quote).

La capacità è espressa tramite limiti per i tipi di istanza supportati da SageMaker Training. Questo permette di assegnare risorse a gruppi diversi restando nella stessa coda, con regole distinte per la capacità inutilizzata.

Scegliere tra RESERVE, LEND e LEND_AND_BORROW

Le tre strategie determinano cosa succede alla capacità che una quota non sta usando (guida AWS Batch alle quote).

StrategiaCapacità inutilizzataPrestito da altre quote
RESERVEResta riservata alla quota.La quota non presta la propria capacità inutilizzata.
LENDPuò essere usata da altre quote.La quota non prende capacità in prestito tramite questa strategia.
LEND_AND_BORROWPuò essere prestata alle altre quote.La quota può anche prendere capacità in prestito, entro il limite configurato.

RESERVE privilegia la disponibilità per il gruppo titolare. LEND consente di usare meglio la capacità libera, ma AWS Batch può recuperarla quando il gruppo che l’ha prestata ne ha bisogno. LEND_AND_BORROW consente entrambi i flussi: conviene quindi considerare che il lavoro di una quota può dipendere da risorse richieste in seguito da un’altra.

Limiti e collegamenti da pianificare

Una coda può avere al massimo 20 quote; ciascuna deve avere da 1 a 5 limiti di capacità, definiti per tipi di istanza supportati da SageMaker Training. Un ambiente di servizio con gestione delle quote può essere collegato a una sola coda di job abilitata alla gestione delle quote (limiti delle quote, creazione delle risorse).

ElementoVincoloEffetto sulla progettazione
Coda di jobDeve essere collegata a un ambiente SAGEMAKER_TRAINING.La gestione delle quote non si applica a qualsiasi coda AWS Batch.
Quote per codaMassimo 20.Il numero di gruppi da gestire deve rientrare in questo limite.
Limiti per quotaDa 1 a 5, espressi per tipo di istanza supportato.Scegli i tipi di istanza accettati da SageMaker Training.
Ambiente di servizioUn solo collegamento a una coda abilitata alla gestione delle quote.Un ambiente non può servire più code di questo tipo.

Preparare policy, ambiente e coda

Prima di assegnare le quote, servono le autorizzazioni IAM per creare e gestire code AWS Batch, policy di scheduling e ambienti di servizio. La configurazione comprende una policy di scheduling compatibile con le quote, un ambiente SAGEMAKER_TRAINING con limiti per i tipi di istanza supportati e una coda compatibile collegata a queste risorse (procedura AWS per creare le risorse).

  1. Prepara la policy di scheduling. Deve essere compatibile con la gestione delle quote, perché la coda utilizzerà le quote per distribuire i job.
  2. Configura l’ambiente di servizio. Imposta i limiti usando i tipi di istanza accettati da SageMaker Training, anziché NUM_INSTANCES.
  3. Collega la coda compatibile. Usa una coda con ambiente SAGEMAKER_TRAINING e la policy di scheduling prevista. Un ambiente abilitato alle quote si collega a una sola coda abilitata.
  4. Definisci le quote e i relativi limiti. Assegna a ciascuna da uno a cinque limiti di capacità e scegli la strategia in base a come vuoi gestire le risorse inutilizzate.

Per verificare lo stato della coda, AWS indica i valori ENABLED e VALID, con motivo JobQueue Healthy.

Quando AWS Batch può interrompere un job

Se una quota ha prestato capacità e poi ne ha bisogno, AWS Batch può interrompere job che la stanno prendendo in prestito per restituirle le risorse. La scelta considera il numero e il tipo di istanze prese in prestito, le priorità relative dei job e la loro durata; AWS applica un’euristica, quindi questi fattori non costituiscono una garanzia sull’ordine esatto delle interruzioni (guida AWS Batch alle quote).

La preemption può avvenire anche all’interno di una quota: se questa opzione è configurata, i job a priorità più alta possono sostituire quelli a priorità più bassa negli stati SCHEDULED, STARTING o RUNNING. Inoltre, ridurre il limite di capacità di una quota può rendere idonei alla preemption i suoi job attivi quando la capacità utilizzata supera il nuovo limite, anche con LEND o RESERVE. Prima di abbassare un limite, considera quindi quali job potrebbero subire un’interruzione.

Nell’esempio illustrativo pubblicato da AWS, tre quote hanno ciascuna un limite di un’istanza ml.g5.xlarge e l’ambiente di servizio ha capacità massima pari a 3. La prima quota usa LEND_AND_BORROW, la seconda LEND e la terza RESERVE: è un esempio di ripartizione, non una configurazione universale.