Xarxa neuronal YaLM 100B a la pràctica.

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

A finals de juny, Yandex
va llançar al públic una xarxa neuronal amb 100.000 milions de paràmetres anomenada YaLM 100B . És la xarxa neuronal semblant a GPT més gran del domini públic. Explica com ensenyaven, mostrava els millors exemples i de què és capaç la neurona. Però és tan bo a la pràctica i aplicable a casa? L’article no parla d’això, a més, no és tan fàcil executar-lo i comprovar-ho, ja que es requereixen aproximadament 200 Gb de GPU RAM. Aquest comentari sobre Habré
revela la situació amb més precisió
.

Suposadament, a Yandex, totes aquestes persones intel·ligents, i ni tan sols van publicar una guia normal. No hi ha API per a un model gran, no hi ha un model mitjà o petit preparat per a la gent normal (a Google Colab). No es dóna cap exemple sobre com configurar el model, com generar text. És que l’article indica un parell de matisos per als nerds i ja està. N’hi ha prou amb mirar de prop com ho va fer el banc amb la lletra “C” i fer el mateix. Vaig tenir la impressió que aquest model és només un dels experiments fallits que va ser una llàstima llençar-lo a la paperera, així que es va publicar a Open Source per mostrar quins grans models crea Yandex i, a més, és de codi obert!

Hi ha moltes preguntes a Internet sobre com executar yalm o fins i tot provar en línia, però no hi ha respostes a això. Jo estava entre els usuaris que van fer aquestes preguntes. I posa’t a esbrinar-ho. Ja que realment necessitava una manera de generar textos per a robots financers. Perquè puguin predir no només els valors, sinó també comentar-los en text, a partir d’informes financers. En essència, serà el mateix que fan els analistes financers, només amb l’ús de la intel·ligència artificial. Hi ha dues maneres d’executar l’alm.
Llogueu un servidor al núvolamb més de 200 Gb de RAM de GPU o finalitzeu el codi i executeu-lo mitjançant la descàrrega de velocitat zero (quan la GPU processa seqüencialment part de la xarxa neuronal i la resta s’emmagatzema a la RAM de la CPU o NVMe). El primer és molt car, uns 2500 rubles per hora o 1,7 milions al mes. La segona incògnita, perquè el codi del repositori no es proporciona, només hi ha
pistes en el problema del repositori, cosa que no és difícil de fer. Comencem senzill.

Instruccions de llançament de YaLM 100B

1. Lloguem 200 GB de GPU RAM, per exemple aquí .

Xarxa neuronal YaLM 100B a la pràctica.

Necessites almenys 200 GB de memòria de vídeo total. 8×40 = 320 GB. Només encaixa aquesta. Menys de 200 és impossible, més és possible. La fletxa indica la memòria RAM de la CPU, no la mirem. Ella pot ser qualsevol.

Indiquem un disc d’uns 300 GB, de manera que amb un disc de recanvi i preferiblement un disc ràpid, perquè. s’hi transferiran desenes de gigabytes de dades.

Xarxa neuronal YaLM 100B a la pràctica. Quan creeu fonts, seleccioneu Ubuntu ML (Aprenentatge automàtic). Això és obligatori perquè les targetes de vídeo estiguin configurades i no cal instal·lar res addicionalment.

Després d’activar el servidor (pot trigar entre 5 i 10 minuts), connecteu-vos al servidor mitjançant ssh o directament a la consola web de la pàgina del servidor i executeu l’ordre.

nvidia-smi

El resultat hauria de ser una taula amb targetes de vídeo, versió del controlador i cuda. Aproximadament així.
Xarxa neuronal YaLM 100B a la pràctica. A la capçalera de la versió del controlador i on. Al costat esquerre hi ha els números del dispositiu, al centre hi ha la mida de la memòria del dispositiu. Si no teniu aquesta informació, aleshores heu recollit el servidor d’una font incorrecta. Es requereix Ubuntu ML (Machine Learnong), tal com es descriu anteriorment.

2. Clona el dipòsit amb YaLM

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

Clona a la teva carpeta d’inici perquè no hagis d’editar la configuració de Docker després. Si es clona en un altre lloc,
aneu aquí i afegiu el camí a on es clona.

3. Baixeu els punts de control (informació bàsica sobre la formació del model)

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

Això trigarà aproximadament una hora. Per no perdre el temps en va, creem una nova connexió ssh i en paral·lel comencem a construir un contenidor docker.

4. Instal·leu nvidiadocker 2

El docker normal no és adequat,
cal nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Construir un contenidor per a YaLM

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

També és aproximadament una hora.

Hack de vida. Podeu descarregar punts de control, instal·lar Docker i crear un contenidor en un servidor barat amb una targeta de vídeo. Serà el mateix amb el temps, així que pots estalviar una mica. Després del muntatge en un servidor barat, l’eliminem i creem un servidor de combat utilitzant un disc d’un servidor barat. Aleshores no pagareu en excés el temps d’espera per a l’assemblea i el bombeig dels punts de control.

6. Preparar contingut

6.1 Punts de control

Un cop finalitzada la descàrrega dels punts de control, cal que els introduïu a les configuracions. Hi ha dues maneres, corregir paràmetres o transferir punts de control. A tot arreu s’espera que els punts de control estiguin al directori principal del projecte, respectivament, el que es descarrega s’ha de transferir des de la carpeta de descàrregues de dalt. Estar a la carpeta yalm executeu

mv ./download/yalm100b_checkpoint ./

O canvieu els camins als fitxers dels fitxers d’exemple
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Targetes de vídeo

Comprovem que les targetes de vídeo estiguin correctament configurades. Si teniu vuit targetes de vídeo, no cal canviar res. Si el número és diferent, llavors canviem aquestes línies
Xarxa neuronal YaLM 100B a la pràctica. A la segona línia, els números dels dispositius utilitzats (els podeu mirar a nvidia-smi, que ja heu llançat). En el quart, el seu nombre.

7. Executeu el contenidor docker

Estant a la carpeta yalm, executeu l’ordre

sudo bash ./docker/run.sh

Si tot està bé, se us portarà a un contenidor en el qual haureu d’anar a la carpeta yalm del vostre directori d’inici.

cd ~/yalm

8. Executeu l’exemple de YaLM 100B

Estem preparats per llançar un dels exemples. Es descriuen
aquí .

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

Tingueu paciència, cal esperar 10-15 minuts més fins que es creï el model GPT2 i es carreguin els pesos dels punts de control.
Xarxa neuronal YaLM 100B a la pràctica.

Quan acabi la construcció, MegatronML us demanarà que introduïu un context per generar text. Aneu amb compte quan escriviu. En determinades circumstàncies, es produeix un error, el programa es bloqueja i cal que torneu a iniciar el muntatge. Per tant, és millor utilitzar exemples que prenen text d’un fitxer.

9. Resultats del treball

Xarxa neuronal YaLM 100B a la pràctica.
Xarxa neuronal YaLM 100B a la pràctica. Sembla interessant. Per descomptat, aquests són només bons exemples. Vaig fer la prova en diferents mostres. Com era d’esperar, com millor sigui el context, més significatiu es generarà el text. El conjunt complet de generacions experimentals es pot veure als enllaços:

Pel preu, em va costar uns 9 mil rubles per llogar servidors de diferents capacitats, des de la formació i la preparació fins a la generació. Una decepció particular va ser que no es pot generar tot a l’instant. Es triga molt a començar i el text no es genera tan ràpid com voldríem, donat el cost del servidor per hora.
Xarxa neuronal YaLM 100B a la pràctica.  

Com executar YaLM sense RAM de GPU de 200 Gb?

Heu d’afegir una descàrrega de velocitat zero a la configuració. Per als que sàpiguen de què estem parlant, serà molt fàcil fer-ho. Per a altres, aquesta no és una tasca trivial. És important saber que la descàrrega es pot fer a la RAM de la CPU o a NVMe. Podeu oblidar-vos de NVMe en aquest moment, perquè. s’està processant una quantitat molt gran de dades i el disc no pot fer-hi front. La CPU de descàrrega zero és més real. És cert que per a això cal tenir més de 200 Gb de RAM de CPU en estoc, que tampoc és barat. I es generarà un text durant uns 20-40 minuts, ja que encara no s’ha pogut paral·lelitzar-lo en dues targetes de vídeo. Com podeu veure a la captura de pantalla següent, només hi havia una targeta de vídeo involucrada en la generació, i només per a una quarta part de la memòria. Caldrà veure per què no s’utilitzen els 24 GB,
Xarxa neuronal YaLM 100B a la pràctica. Bé, en conclusió, diré que és possible funcionar fins i tot amb un RTX 3070 TI. Però això no té cap sentit particular, perquè. NVMe no us permetrà processar ràpidament 150 GB de dades a l’intercanvi, que es troben a l’apèndix de 96 GB de RAM.
Xarxa neuronal YaLM 100B a la pràctica.

Resumint

Per descomptat, encara intentaré trobar els camins de llançament òptims. Però fins ara he arribat a la conclusió que YaLM 100b és massa car / massa lent per a les meves tasques. Pels mateixos diners, la gent escriurà molt més i molt millor. Però crec que és temporal, ja veurem. Si necessiteu ajuda per iniciar, configurar yalm o voleu veure els resultats dels vostres exemples de context, escriviu al correu o al telegrama.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply