GPU e AI mettono in crisi autoscaler e scheduler di Kubernetes
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
I pod restano pending anche con capacità di acceleratori libera perché l'autoscaler aggiunge nodi che lo scheduler non può usare.
Con carichi AI su GPU, pod che dovrebbero partire restano pending anche quando il cluster ha ancora capacità utile: l’autoscaler aggiunge nodi che lo scheduler non userà. Lo segnala la Cloud Native Computing Foundation in un articolo del 19 ottobre 20261.
Per anni Kubernetes ha retto su due loop separati. Lo scheduler piazza i pod su nodi esistenti. L’autoscaler crea nodi quando i pod non ci stanno. La separazione ha funzionato perché il calcolo era in gran parte intercambiabile. Ogni loop poteva decidere senza conoscere a fondo l’altro1.
Con l’AI cambiano le condizioni. Gli acceleratori rendono i nodi meno fungibili. La scelta del nodo diventa vincolo, non dettaglio. Conta la tipologia, contano le risorse presenti. Qui emerge il difetto: i due loop non si parlano abbastanza per legare la scala al bisogno reale del pod1.
Chi gestisce GPU conosce la scena. Un pod resta pending. Il cluster non è a secco. Capacità di acceleratori esiste, ma resta inutilizzata. L’istinto punta alla scarsità di regione. A volte è così. Altre volte no: il nodo che l’autoscaler è pronto ad aggiungere non è un nodo che lo scheduler potrà accettare per quel pod.
Risultato: spreco. GPU ferme, applicazioni in attesa. La catena si inceppa prima della scelta del nodo utile. La domanda operativa non è più solo se scalare. Conta cosa scalare perché lo scheduler possa collocare quel pod. Questa è la correzione di rotta proposta nel pezzo della fondazione1.
Non si demolisce il design originario. La separazione tra loop regge gran parte dei carichi. Gli edge case dell’AI però mostrano dove la divisione fatica. Un nodo “qualsiasi” non basta quando serve un certo acceleratore o una specifica capacità. La decisione di scala deve riflettere il vincolo espresso dal pod, non un’astrazione della capacità.
Il collo di bottiglia nasce dallo sfasamento nel tempo e nell’informazione. L’autoscaler vede che serve un nodo e lo aggiunge. Lo scheduler poi, con regole proprie, rifiuta quel nodo per quel pod. Il ciclo ricomincia. In mezzo rimane capacità di acceleratori senza uso.
Contare nodi o GPU “in aggregato” non basta. Serve legare la scelta del nodo al requisito concreto del carico in attesa. La CNCF riassume in una domanda pratica: non se scalare, ma cosa esattamente scalare, così che lo scheduler possa poi collocare il pod1.
C’è un motivo di tempistica. Il ritmo con cui evolvono i carichi AI sposta questi bordi del sistema da curiosità a priorità. È qui che operatori e sviluppatori possono intervenire: allineare i due loop sulla realtà dei vincoli, prima che la capacità resti di nuovo parcheggiata.1
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Fedeltà alle fonti. Un secondo passaggio toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 9/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 7,9/10 dopo 1 revisione.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.