Che cosa ha a che fare Kubernetes con il successo di GPT-3
Kubernetes è un sistema open source utilizzato per raggruppare i contenitori che compongono un’applicazione in unità logiche per una facile gestione e scoperta.
“Le applicazioni e l’hardware che OpenAI esegue con Kubernetes sono molto diversi da quelli che si possono incontrare in un’azienda tipica.”
OpenAI supportato da Microsoft ha consegnato blockbuster back to back con GPT-3 e CLIP , DALL.E in un arco di sei mesi. Mentre GPT-3 ha permesso a OpenAI di avventurarsi nello spazio API commerciale, CLIP e DALL.E hanno inaugurato una nuova era di modelli di fusione . Tuttavia, questi modelli sono grandi. GPT-3 devia tutti i dati su Internet per la formazione. E costa qualche milione di dollari. “Il ridimensionamento dell’infrastruttura di OpenAI è diverso da quello che fa una tipica startup. Quindi, anche se usano servizi familiari come Kubernetes, le pratiche sono uniche per OpenAI. Oggi, molti fornitori di servizi software implementano Kubernetes per facilitare le operazioni, ma OpenAI afferma di farlo in modo diverso “, hanno affermato i ricercatori di OpenAI.
Convenzionalmente, le applicazioni con funzionalità diverse sono racchiuse in un unico artefatto distribuibile. E i monoliti sono un modo accettabile per creare applicazioni anche oggi. Ma hanno ancora i loro svantaggi. Ad esempio, le distribuzioni richiedono molto tempo poiché tutto deve essere implementato insieme. E se parti diverse del monolite sono gestite da team diversi, la preparazione del lancio potrebbe incorrere in ulteriori complessità. Lo stesso vale per il ridimensionamento: i team devono inviare risorse all’intera applicazione, anche se il collo di bottiglia si trova su un singolo canale. Per risolvere questo problema, gli sviluppatori hanno ideato dei microservizi.
Ogni parte di funzionalità è suddivisa in singoli artefatti più piccoli. In caso di aggiornamento, è necessario sostituire solo il servizio esatto. Il modello di microservizio offre vantaggi in termini di scalabilità. Ora i singoli servizi possono essere ridimensionati per adattarsi al loro traffico, quindi è più facile evitare i colli di bottiglia senza over-provisioning. Fin qui tutto bene. Ma avere una macchina per ogni servizio richiederebbe molte risorse e un intero gruppo di macchine. È qui che i contenitori tornano utili. Con i container, i team possono imballare i loro servizi in modo ordinato. Tutte le applicazioni, le loro dipendenze e qualsiasi configurazione necessaria vengono consegnate insieme. Significa che i servizi funzioneranno allo stesso modo, indipendentemente da dove vengono eseguiti. Inoltre, Kubernetes si occupa della gestione di questi contenitori.
Kubernetes , o K8s, è un sistema open source utilizzato per raggruppare i contenitori che compongono un’applicazione in unità logiche per una facile gestione e scoperta. Kubernetes automatizza l’intero processo di ridimensionamento e gestione. Kubernetes proviene dal garage di Google dopo quasi 15 anni di lavoro. Gli attributi chiave di Kubernetes includono:
Kubernetes può svolgere molte operazioni pesanti e assicurarsi che le applicazioni siano sempre in esecuzione nel modo in cui dovrebbero essere eseguite.
Kubernetes consente agli sviluppatori di concentrarsi sulle applicazioni e di non preoccuparsi dell’ambiente sottostante.
Kubernetes esegue continuamente controlli di integrità sui servizi, riavviando i contenitori che non funzionano o si sono bloccati.
Kubernetes semplifica la modernizzazione delle applicazioni e consente agli sviluppatori di creare nuove app più velocemente.
Kubernetes consente di distribuire applicazioni in loco e cloud pubblici, nonché distribuzioni ibride intermedie.
Kubernetes consente agli utenti di scalare automaticamente le applicazioni, su e giù, in base alla domanda e di eseguirle in modo efficiente.
“OpenAI ha scalato i cluster Kubernetes a 7.500 nodi, producendo un’infrastruttura scalabile per modelli di grandi dimensioni come GPT-3, CLIP e DALL · E.”
In OpenAI, i carichi di lavoro cambiano costantemente. Il team di OpenAI crea applicazioni a livello di produzione anche se di breve durata. La natura della ricerca sull’IA in OpenAI richiede infrastrutture di alta qualità anche per applicazioni che non vedranno mai la luce del giorno. Sui nostri cluster più grandi, ha affermato OpenAI, potremmo avere circa 200.000 indirizzi IP in uso contemporaneamente.
Kubernetes è bravo a gestire cluster di grandi dimensioni. In OpenAI, i server API Kubernetes e etcd sono componenti critici per un cluster funzionante e in buone condizioni. etcd è un archivio di valori chiave coerente e ad alta disponibilità utilizzato come archivio di backup di Kubernetes per tutti i dati del cluster.
“Il vantaggio della scalabilità Kubernetes è una semplice infrastruttura che consente ai nostri team di ricerca sull’apprendimento automatico di muoversi più velocemente e scalare senza modificare il loro codice.”
I server API consumano molta memoria e tendono a scalare in modo lineare con il numero di nodi nel cluster. Quando il team di OpenAI è arrivato a 7.500 nodi, ogni server ha utilizzato 70 GB di spazio.
In genere, i server API vengono eseguiti all’interno dei servizi kube , ma OpenAI preferisce eseguirli al di fuori del cluster stesso. Entrambi i server etcd e API di OpenAI vengono eseguiti sui propri nodi dedicati. I cluster più grandi del laboratorio di ricerca eseguono 5 server API e 5 nodi etcd per distribuire il carico e ridurre al minimo l’impatto se uno dovesse spegnersi.
Man mano che i loro cluster sono cresciuti, il team di OpenAI ha dovuto affrontare modifiche all’auto scaling. I ricercatori hanno trovato difficile ottenere tutta la capacità assegnata. I sistemi tradizionali di pianificazione del lavoro, ha affermato OpenAI, hanno molte funzionalità diverse disponibili per eseguire in modo equo il lavoro tra i team concorrenti, cosa che Kubernetes non ha.Il team ha preso ispirazione dai sistemi di pianificazione del lavoro e ha costruito diverse funzionalità in modo nativo di Kubernetes.
“Abbiamo scoperto che Kubernetes è una piattaforma eccezionalmente flessibile per le nostre esigenze di ricerca. Ha la capacità di scalare per soddisfare i carichi di lavoro più impegnativi che abbiamo utilizzato “, ha concluso OpenAI.
OpenAI Infra By The Numbers
I cluster più grandi di OpenAI eseguono 5 server API e 5 nodi etcd per distribuire il carico e ridurre al minimo l’impatto.
Il cluster di OpenAI con 7.500 nodi richiede 70 GB di heap per API Server.
L’indirizzamento IP basato su alias viene utilizzato poiché i cluster più grandi e circa 200.000 indirizzi IP possono essere utilizzati in qualsiasi momento.