Rete neurale YaLM 100B in pratica.

Программирование

Alla fine di giugno, Yandex
ha rilasciato al pubblico una rete neurale con 100 miliardi di parametri chiamata YaLM 100B . È la più grande rete neurale simile a GPT nel pubblico dominio. Racconta di come hanno insegnato, mostrato i migliori esempi e di cosa è capace il neurone. Ma è così buono nella pratica e applicabile a casa? L’articolo tace su questo, inoltre, non è così facile eseguirlo e controllarlo, dal momento che sono necessari circa 200 Gb di RAM della GPU. Questo commento su Habré
rivela la situazione nel modo più accurato
.

Presumibilmente, in Yandex, tutte queste persone intelligenti e non hanno nemmeno pubblicato un normale How-to. Non esiste un’API per un modello grande, non esiste un modello medio o piccolo già pronto per la gente comune (in Google Colab). Non viene fornito alcun esempio su come impostare il modello, come generare testo. È solo che l’articolo indica un paio di sfumature per i nerd e basta. Basta dare un’occhiata più da vicino a come ha fatto la banca con la lettera “C” e fare lo stesso. Ho avuto l’impressione che questo modello fosse solo uno degli esperimenti falliti ed è stato un peccato buttarlo nella spazzatura, quindi è stato pubblicato in Open Source per mostrare quali fantastici modelli crea Yandex e, inoltre, è open source!

Ci sono molte domande su Internet su come eseguire yalm o anche provare online, ma non ci sono risposte a questo. Sono stato tra gli utenti che hanno posto queste domande. E inizia a capirlo. Dal momento che avevo davvero bisogno di un modo per generare testi per i robot finanziari. In modo che possano prevedere non solo i valori, ma anche commentarli nel testo, sulla base dei rapporti finanziari. In sostanza, sarà lo stesso che fanno gli analisti finanziari, solo con l’uso dell’intelligenza artificiale. Ci sono due modi per eseguire yalm.
Noleggia un server nel cloudcon 200+ Gb di RAM GPU o finalizzare il codice ed eseguirlo utilizzando deepspeed zero offload (quando la GPU elabora in sequenza parte della rete neurale e il resto viene archiviato nella RAM della CPU o NVMe). Il primo è molto costoso, circa 2500 rubli all’ora o 1,7 milioni al mese. Il secondo sconosciuto, perché non viene fornito il codice nel repository, solo
suggerimenti nell’emissione del repository, cosa non difficile da fare. Iniziamo in modo semplice.

Istruzioni per l’avvio di YaLM 100B

1. Noleggiamo 200 GB di RAM GPU, ad esempio qui .

Rete neurale YaLM 100B in pratica.

Sono necessari almeno 200 GB di memoria video totale. 8×40 = 320 GB. Solo questo si adatta. Meno di 200 è impossibile, di più è possibile. La freccia indica la RAM della CPU, non la guardiamo. Può essere chiunque.

Indichiamo un disco di circa 300 GB, quindi con un disco di riserva e preferibilmente veloce, perché. decine di gigabyte di dati verranno trasferiti da e verso di essa.

Rete neurale YaLM 100B in pratica. Quando crei nei sorgenti, seleziona Ubuntu ML (Machine Learning). Questo è obbligatorio in modo che le schede video siano configurate e non sia necessario installare nulla in aggiunta.

Dopo che il server è stato attivato (potrebbero volerci 5-10 minuti), connettiti al server tramite ssh o direttamente nella console web nella pagina del server ed esegui il comando.

nvidia-smi

Il risultato dovrebbe essere una tabella con schede video, versione driver e cuda. Approssimativamente così.
Rete neurale YaLM 100B in pratica. Nell’intestazione della versione del driver e dove. Sul lato sinistro ci sono i numeri del dispositivo, al centro c’è la dimensione della memoria del dispositivo. Se non disponi di queste informazioni, hai raccolto il server dalla fonte sbagliata. È richiesto Ubuntu ML (Machine Learnong), come descritto sopra.

2. Clonare il repository con YaLM

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

Clona nella tua cartella home in modo da non dover modificare la configurazione della finestra mobile in seguito. Se clonato da qualche altra parte,
vai qui e aggiungi il percorso a dove clonato.

3. Scarica i checkpoint (informazioni di base sulla formazione del modello)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

Ci vorrà circa un’ora. Per non perdere tempo inutilmente, creiamo una nuova connessione ssh e parallelamente iniziamo a costruire un container docker.

4. Installa nvidiadocker 2

La normale finestra mobile non è adatta,
è necessario nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Creazione di un container per YaLM

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

È anche circa un’ora.

Trucchi per la vita. Puoi scaricare checkpoint, installare docker e creare un container su un server economico con una scheda video. Sarà lo stesso nel tempo, quindi puoi risparmiare un po ‘. Dopo l’assemblaggio su un server economico, lo cancelliamo e creiamo un server di combattimento utilizzando un disco da un server economico. Quindi non pagherai in eccesso il tempo di attesa per l’assemblaggio e il pompaggio dei checkpoint.

6. Prepara il contenuto

6.1 Punti di controllo

Al termine del download dei checkpoint, è necessario inserirli nelle configurazioni. Ci sono due modi, correggere i parametri o trasferire i checkpoint. Ovunque è previsto che i checkpoint si trovino rispettivamente nella directory principale del progetto, ciò che viene scaricato deve essere trasferito dalla cartella di download in alto. Essere nella cartella yalm eseguire

mv ./download/yalm100b_checkpoint ./

Oppure modifica i percorsi dei file nei file di esempio
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Schede video

Verifichiamo che le schede video siano impostate correttamente. Se hai otto schede video, non è necessario modificare nulla. Se il numero è diverso, allora cambiamo queste righe
Rete neurale YaLM 100B in pratica. Nella seconda riga, i numeri dei dispositivi utilizzati (potete guardarli in nvidia-smi, che avete già lanciato). Nel quarto, il loro numero.

7. Eseguire il contenitore Docker

Essendo nella cartella yalm, esegui il comando

sudo bash ./docker/run.sh

Se tutto è a posto, verrai portato in un contenitore in cui devi andare alla cartella yalm nella tua home directory.

cd ~/yalm

8. Eseguire l’esempio da YaLM 100B

Siamo pronti per lanciare uno degli esempi. Sono descritti
qui .

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

Sii paziente, resta da attendere altri 10-15 minuti prima che venga creato il modello GPT2 e vengano caricati i pesi dai checkpoint.
Rete neurale YaLM 100B in pratica.

Al termine della compilazione, MegatronML ti chiederà di inserire un contesto per generare il testo. Fai attenzione quando scrivi. In determinate circostanze, si verifica un errore, il programma si arresta in modo anomalo ed è necessario riavviare l’assembly. Pertanto, è meglio utilizzare esempi che prendono il testo da un file.

9. Risultati del lavoro

Rete neurale YaLM 100B in pratica.
Rete neurale YaLM 100B in pratica. Sembra interessante. Naturalmente, questi sono solo buoni esempi. Ho eseguito il test su diversi campioni. Come previsto, migliore è il contesto, più significativo sarà il testo generato. L’insieme completo delle generazioni sperimentali può essere visualizzato ai link:

Per il prezzo, mi è costato circa 9 mila rubli per l’affitto di server di diverse capacità dalla formazione e dalla preparazione alla generazione. Una delusione particolare è stata che non è possibile generare tutto istantaneamente. L’avvio richiede molto tempo e il testo non viene generato rapidamente come vorremmo, dato il costo orario del server.
Rete neurale YaLM 100B in pratica.  

Come eseguire YaLM senza 200 Gb di RAM GPU?

Devi aggiungere deepspeed zero offload al file config. Per chi sa di cosa stiamo parlando, sarà facilissimo farlo. Per altri, questo non è affatto un compito banale. È importante sapere che l’offload può essere nella RAM della CPU o NVMe. Al momento puoi dimenticare NVMe, perché. viene elaborata una quantità molto grande di dati e il disco non può farcela. Zero offload CPU è più reale. È vero, per questo è necessario disporre di 200+ Gb di RAM CPU in stock, il che non è economico. E verrà generato un testo per circa 20-40 minuti, poiché non è stato ancora possibile parallelizzarlo su due schede video. Come puoi vedere nello screenshot qui sotto, solo una scheda video è stata coinvolta nella generazione, e quindi solo per un quarto della memoria. Resta da vedere perché non vengono utilizzati tutti i 24 GB,
Rete neurale YaLM 100B in pratica. Ebbene, in conclusione, dirò che è possibile girare anche su una RTX 3070 TI. Ma non c’è un senso particolare in questo, perché. NVMe non ti consentirà di elaborare rapidamente 150 GB di dati nello scambio, che sono nell’appendice di 96 GB di RAM.
Rete neurale YaLM 100B in pratica.

Riassumendo

Certamente, cercherò comunque di trovare i percorsi di lancio ottimali. Ma finora sono giunto alla conclusione che YaLM 100b è troppo costoso/troppo lento per le mie attività. Per gli stessi soldi, le persone scriveranno molto di più e molto meglio. Ma penso che sia temporaneo, vedremo. Se hai bisogno di aiuto con l’avvio, la configurazione di yalm o vuoi vedere i risultati sui tuoi esempi di contesto, scrivi alla posta o al telegramma.

pskucherov
Rate author
Add a comment

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    Rispondi
  2. Данила

    Крутая статья! Спасибо автору!

    Rispondi
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    Rispondi