View a markdown version of this page

Policy - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Policy

La governance delle SageMaker HyperPod attività di Amazon semplifica l'allocazione delle risorse del cluster Amazon EKS e l'assegnazione delle priorità alle attività. Di seguito vengono fornite informazioni sulle HyperPod politiche dei cluster EKS. Per informazioni su come configurare la governance delle attività, consulta Configurazione della governance delle attività.

Le policy sono suddivise in Priorità delle risorse di calcolo e Allocazione delle risorse di calcolo I concetti delle policy seguenti vengono organizzati nel contesto di tali policy.

La priorità delle risorse di calcolo, o policy del cluster, determina in che modo le risorse di calcolo inattive vengono presa in prestito e in che modo i team assegnano priorità alle attività.

  • Allocazione delle risorse di calcolo inattive definisce in che modo le risorse di calcolo inattive vengono allocate tra i team. In altre parole, definisce in che modo le risorse di calcolo inutilizzate possono essere prese in prestito dai team. Quando selezioni Allocazione delle risorse di calcolo inattive, puoi scegliere tra:

    • Primo arrivato, primo servito: se applicata, questa opzione non assegna priorità ai team e ogni attività in arrivo ha la stessa probabilità di ottenere risorse oltre la quota stabilita. Alle attività viene assegnata una priorità in base all’ordine di invio. Ciò significa che un utente potrebbe utilizzare il 100% delle risorse di calcolo inattive se le richiede per primo.

    • Condivisione equa: quando viene applicata, i team prendono in prestito risorse di calcolo inattive in base al Peso di condivisione equa loro assegnato. Questi pesi sono definiti in Allocazione delle risorse di calcolo. Per ulteriori informazioni su come utilizzare questa opzione, consulta Esempi di condivisione di risorse di calcolo inattive.

  • La prioritizzazione delle attività definisce il modo in cui le attività vengono messe in coda non appena il calcolo diventa disponibile. Quando scegli una prioritizzazione delle attività, puoi scegliere tra:

    • Primo arrivato, primo servito: se viene applicata questa opzione, le attività vengono messe in coda nell’ordine in cui sono state richieste.

    • Classificazione delle attività: se viene applicata questa opzione, le attività vengono messe in coda nell’ordine definito dalla loro priorità. Se scegli questa opzione, devi aggiungere le classi di priorità e i pesi in base ai quali viene assegnata la priorità. Le attività della stessa classe di priorità vengono eseguite in base al principio “primo arrivato, primo servito”. Se l’opzione è abilitata in Allocazione delle risorse di calcolo, le attività con priorità più bassa vengono sostituite dalle attività con priorità più alta all’interno del team.

      Quando i Data Scientist inviano i processi al cluster, utilizzano il nome della classe di priorità nel file YAML. La classe di priorità è nel formato priority-class-name-priority. Per vedere un esempio, consulta Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale.

    • Classi di priorità: queste classi stabiliscono una priorità relativa per le attività quando prendono in prestito quote di capacità. Quando un’attività viene eseguita utilizzando una quota presa in prestito, può essere interrotta da un’altra attività con priorità più elevata, se la capacità disponibile per l’attività in entrata è terminata. Se Prelazione è abilitato in Allocazione delle risorse di calcolo, un’attività con priorità più elevata può anche interrompere altre attività all’interno del proprio team.

  • La condivisione delle risorse non allocate consente ai team di prendere in prestito risorse di elaborazione che non sono assegnate a nessun team tramite la quota di elaborazione. Se abilitata, la capacità del cluster non allocata diventa disponibile per i team che possono prenderla in prestito automaticamente. Per ulteriori informazioni, consulta Come funziona la condivisione delle risorse non allocate.

L’Allocazione delle risorse di calcolo, o quota di calcolo, definisce l’allocazione delle risorse di calcolo di un team e il peso (o il livello di priorità) assegnato a un team per un’allocazione equa delle risorse di calcolo inattive.

  • Nome del team: il nome del team. Viene creato un Namespace corrispondente, di tipo hyperpod-ns-team-name.

  • Membri: i membri del namespace del team. Dovrai configurare un controllo degli accessi basato sui ruoli (RBAC) Kubernetes per gli utenti di data scientist che desideri far parte di questo team, per eseguire attività su cluster orchestrati con Amazon EKS. HyperPod Per configurare un RBAC Kubernetes, utilizza le istruzioni in create team role.

  • Peso di condivisione equa: si tratta del livello di priorità assegnato al team quando viene applicata la Condivisione equa per l’opzione Allocazione delle risorse di calcolo inattive. La priorità più alta ha un peso di 100, mentre quella più bassa è 0. Un peso maggiore consente a un team di accedere più rapidamente alle risorse inutilizzate all’interno della capacità condivisa. Un peso zero indica la priorità più bassa, che significa che il team sarà sempre in svantaggio rispetto agli altri team.

    Il peso di condivisione equa offre un margine di vantaggio al team quando compete con altri team per le risorse disponibili. L’ammissione dà priorità alla pianificazione delle attività svolte dai team con i pesi più alti e il minor numero di risorse prese in prestito. Ad esempio, se il Team A ha un peso di 10 e il Team B ha un peso di 5, il Team A avrebbe un accesso prioritario alle risorse inutilizzate, perché ha processi pianificati prima del Team B.

  • Prelazione delle attività: le risorse di calcolo vengono prese da un’attività in base alla priorità. Per impostazione predefinita, il team che presta le risorse di calcolo inattive avrà la prelazione rispetto alle attività degli altri team.

  • Prestare e prendere in prestito: definisce in che modo il team presta le risorse di calcolo inattive e specifica se il team può prendere in prestito risorse da altri team.

    • Limite di prestito basato sulla percentuale: il limite di elaborazione inattiva che un team può prendere in prestito, espresso come percentuale della quota garantita. Un team può prendere in prestito fino al 10.000% delle risorse di calcolo allocate. Il valore fornito qui viene interpretato come percentuale. Ad esempio, un valore pari a 500 verrà interpretato come 500%. Questa percentuale si applica in modo uniforme a tutti i tipi di risorse (CPU, GPU, memoria) e ai tipi di istanze inclusi nella quota del team.

    • Limite assoluto di prestito: il limite di elaborazione inattiva che un team può prendere in prestito, definito come valori assoluti delle risorse per tipo di istanza. Ciò fornisce un controllo granulare sul comportamento di prestito per tipi di istanze specifici. È necessario specificare i limiti assoluti utilizzando lo stesso schema di Compute Quota, incluso il conteggio delle istanze, gli acceleratori, la vCPU, la memoria o le partizioni di accelerazione. Puoi specificare limiti assoluti per uno o più tipi di istanze nella quota del tuo team.

Per informazioni su come vengono utilizzati i concetti come le classi di priorità e i namespace, consulta Esempi di comandi di governance delle HyperPod AWS CLI attività.

Esempi di condivisione di risorse di calcolo inattive

La quota totale riservata non deve superare la capacità disponibile del cluster per quella risorsa, al fine di garantire una corretta gestione delle quote. Ad esempio, se un cluster comprende 20 istanze ml.c5.2xlarge, la quota cumulativa assegnata ai team dovrebbe rimanere inferiore a 20.

Se le policy Allocazione delle risorse di calcolo per i team consentono Presta e prendi in prestito o Presta, la capacità inattiva viene condivisa tra questi team. Ad esempio, il Team A e il Team B hanno abilitato Presta e prendi in prestito. Il Team A ha una quota pari a 6, ma utilizza solo 2 risorse per i processi, mentre il Team B ha una quota pari a 5 e utilizza 4 risorse. Un processo inviato al Team B richiede 4 risorse, quindi il Team B prenderà in prestito 3 risorse dal Team A.

Se la policy Allocazione delle risorse di calcolo di un team è impostata su Non prestare, il team non potrà prendere in prestito alcuna capacità aggiuntiva oltre alle proprie allocazioni.

Come funziona la condivisione delle risorse non allocate

La condivisione delle risorse non allocate gestisce automaticamente il pool di risorse che non sono allocate a nessuna quota di elaborazione nel cluster. Ciò significa che monitora HyperPod continuamente lo stato del cluster e si aggiorna automaticamente alla configurazione corretta nel tempo.

Configurazione iniziale

  • Quando l'impostazione è impostata su Enabled in your ClusterSchedulerConfig (IdleResourceSharingper impostazione predefinitaDisabled), la governance delle HyperPod attività inizia a monitorare il cluster e calcola le risorse inattive disponibili sottraendo le quote del team dalla capacità totale dei nodi.

  • La condivisione non allocata delle risorse viene creata per rappresentare il pool di risorse che ClusterQueues possono essere prese in prestito.

  • Quando si abilita per la prima volta la condivisione di risorse non allocate, la configurazione dell'infrastruttura richiede diversi minuti. È possibile monitorare i progressi tramite policy Status e in. DetailedStatus ClusterSchedulerConfig

Riconciliazione in corso

  • HyperPod la governance delle attività monitora continuamente le modifiche, come l'aggiunta o la rimozione di nodi e gli aggiornamenti delle quote delle code dei cluster.

  • Quando si verificano modifiche, la condivisione delle risorse non allocate ricalcola la quota e gli aggiornamenti. ClusterQueues La riconciliazione viene in genere completata in pochi secondi.

Monitoraggio

Puoi verificare che la condivisione delle risorse non allocate sia completamente configurata controllando la condivisione delle risorse non allocate: ClusterQueues

kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing

Quando vedi ClusterQueues con nomi comehyperpod-ns-idle-resource-sharing-cq-1, la condivisione delle risorse non allocate è attiva. Tieni presente che ClusterQueues possono esistere più condivisioni di risorse non allocate a seconda del numero di tipi di risorse presenti nel cluster.

Idoneità dei nodi per la condivisione di risorse non allocate

La condivisione delle risorse non allocate include solo i nodi che soddisfano i seguenti requisiti:

  1. Stato Node Ready

    • I nodi devono essere in Ready stato per poter contribuire al pool di risorse non allocate.

    • I nodi in stato non pronto NotReady o in altri stati non pronti sono esclusi dai calcoli della capacità.

    • Quando un nodo diventaReady, viene automaticamente incluso nel ciclo di riconciliazione successivo.

  2. Stato programmabile del nodo

    • I nodi con spec.unschedulable: true sono esclusi dalla condivisione di risorse non allocate.

    • Quando un nodo torna a essere programmabile, viene automaticamente incluso nel ciclo di riconciliazione successivo.

  3. Configurazione MIG (solo nodi GPU)

    • Per i nodi GPU con partizionamento MIG (Multi-Instance GPU), l'nvidia.com/mig.config.stateetichetta deve indicare che il nodo contribuisce con i profili MIG alla condivisione success di risorse non allocate.

    • Questi nodi verranno riprovati automaticamente una volta completata correttamente la configurazione MIG.

  4. Tipi di istanze supportati

    • L'istanza deve essere un tipo di SageMaker HyperPod istanza supportato.

    • Vedi l'elenco dei tipi di istanza supportati nel SageMaker HyperPod cluster.