Rede neuronal YaLM 100B na práctica.

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

A finais de xuño, Yandex
lanzou ao público unha rede neuronal con 100 mil millóns de parámetros chamada YaLM 100B . É a rede neuronal tipo GPT máis grande do dominio público. Conta como ensinaron, mostrou os mellores exemplos e de que é capaz a neurona. Pero é tan bo na práctica e aplicable na casa? O artigo é silencioso respecto diso, ademais, non é tan fácil executalo e verificalo, xa que son necesarios aproximadamente 200 Gb de GPU RAM. Este comentario sobre Habré
revela a situación con máis precisión
.

Supostamente, en Yandex, todas esas persoas intelixentes, e nin sequera publicaron un How-to normal. Non hai API para un modelo grande, non hai un modelo mediano ou pequeno preparado para a xente común (en Google Colab). Non se dá ningún exemplo de como configurar o modelo, como xerar texto. É que o artigo indica un par de matices para os nerds e xa está. Basta con mirar máis de cerca como o fixo o banco coa letra “C” e facer o mesmo. Tiven a impresión de que este modelo é só un dos experimentos fallidos que foi unha mágoa tiralo ao lixo, polo que foi publicado en Open Source para mostrar que modelos fantásticos crea Yandex e, ademais, é de código aberto!

Hai moitas preguntas en Internet sobre como executar yalm ou incluso probalo en liña, pero non hai respostas a isto. Eu estaba entre os usuarios que fixeron estas preguntas. E púxose a descubrilo. Xa que realmente necesitaba unha forma de xerar textos para robots financeiros. Para que poidan predicir non só os valores, senón tamén comentalos en texto, a partir de informes financeiros. En esencia, será o mesmo que fan os analistas financeiros, só co uso da intelixencia artificial. Hai dúas formas de executar o alm.
Alugar un servidor na nubecon máis de 200 Gb de RAM de GPU ou finaliza o código e execútao usando a descarga cero de velocidade profunda (cando a GPU procesa secuencialmente parte da rede neuronal e o resto gárdase na memoria RAM da CPU ou NVMe). O primeiro é moi caro, uns 2500 rublos por hora ou 1,7 millóns ao mes. A segunda incógnita, porque o código no repositorio non se proporciona, só
indicacións no problema do repositorio, que non é difícil de facer. Imos comezar sinxelo.

Instrucións de lanzamento de YaLM 100B

1. Alugamos 200 GB de RAM GPU, por exemplo aquí .

Rede neuronal YaLM 100B na práctica.

Necesitas polo menos 200 GB de memoria de vídeo total. 8×40 = 320 GB. Só cabe este. Menos de 200 é imposible, máis é posible. A frecha indica a RAM da CPU, non a miramos. Ela pode ser calquera.

Indicamos un disco duns 300 GB, de xeito que cun disco de reposto e preferiblemente rápido, pois. decenas de gigabytes de datos transferiranse a el e desde el.

Rede neuronal YaLM 100B na práctica. Ao crear fontes, seleccione Ubuntu ML (Machine Learning). Isto é obrigatorio para que as tarxetas de vídeo estean configuradas e non sexa necesario instalar nada adicional.

Despois de activar o servidor (pode tardar entre 5 e 10 minutos), conéctese ao servidor mediante ssh ou directamente na consola web da páxina do servidor e execute o comando.

nvidia-smi

O resultado debería ser unha táboa con tarxetas de vídeo, versión do controlador e cuda. Aproximadamente así.
Rede neuronal YaLM 100B na práctica. Na cabeceira da versión do controlador e onde. No lado esquerdo están os números do dispositivo, no centro o tamaño da memoria do dispositivo. Se non tes esta información, entón recompilaches o servidor dunha fonte incorrecta. Requírese Ubuntu ML (Machine Learnong), como se describe anteriormente.

2. Clona o repositorio con YaLM

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

Clona no teu cartafol de inicio para que non teñas que editar a configuración do docker despois. Se se clona noutro lugar,
vai aquí e engade o camiño a onde se clona.

3. Descargar puntos de control (información básica do adestramento do modelo)

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

Isto levará aproximadamente unha hora. Para non perder o tempo en balde, creamos unha nova conexión ssh e paralelamente comezamos a construír un contenedor docker.

4. Instala nvidiadocker 2

O docker normal non é adecuado,
é necesario nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Construír un contedor para YaLM

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

Tamén son aproximadamente unha hora.

Truco de vida. Podes descargar puntos de control, instalar Docker e construír un contedor nun servidor barato cunha tarxeta de vídeo. Será o mesmo co tempo, así que podes aforrar un pouco. Despois da montaxe nun servidor barato, borrámolo e creamos un servidor de combate usando un disco dun servidor barato. Entón non pagarás de máis o tempo de espera da asemblea e de bombeo de puntos de control.

6. Preparar contidos

6.1 Puntos de control

Despois de que remate a descarga dos puntos de control, cómpre inserilos nas configuracións. Hai dous xeitos, parámetros correctos ou puntos de control de transferencia. En todas partes espérase que os puntos de control estean no directorio principal do proxecto, respectivamente, o que se descargue debe transferirse desde o cartafol de descargas anterior. Estando no cartafol yalm executa

mv ./download/yalm100b_checkpoint ./

Ou cambia os camiños dos ficheiros dos ficheiros de exemplo
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Tarxetas de vídeo

Comprobamos que as tarxetas de vídeo estean correctamente configuradas. Se tes oito tarxetas de vídeo, non hai que cambiar nada. Se o número é diferente, entón cambiamos estas liñas
Rede neuronal YaLM 100B na práctica. . Na segunda liña, os números dos dispositivos utilizados (podes miralos en nvidia-smi, que xa lanzaches). No cuarto, o seu número.

7. Execute o contedor docker

Estando no cartafol yalm, executa o comando

sudo bash ./docker/run.sh

Se todo está ben, levarase a un contedor no que debes ir ao cartafol yalm do teu directorio de inicio.

cd ~/yalm

8. Execute o exemplo de YaLM 100B

Estamos preparados para lanzar un dos exemplos. Descríbense
aquí .

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

Ten paciencia, queda esperar outros 10-15 minutos ata que se cree o modelo GPT2 e se carguen os pesos dos puntos de control.
Rede neuronal YaLM 100B na práctica.

Cando remate a compilación, MegatronML pediralle que introduza un contexto para xerar texto. Teña coidado ao escribir. En determinadas circunstancias, ocorre un erro, o programa falla e cómpre comezar de novo a montaxe. Polo tanto, é mellor utilizar exemplos que tomen texto dun ficheiro.

9. Resultados do traballo

Rede neuronal YaLM 100B na práctica.
Rede neuronal YaLM 100B na práctica. Parece interesante. Por suposto, estes son só bos exemplos. Fixen a proba en diferentes mostras. Como era de esperar, canto mellor sexa o contexto, máis texto se xerará. O conxunto completo de xeracións experimentais pódese ver nas ligazóns:

Polo prezo, custoume uns 9 mil rublos para alugar servidores de diferentes capacidades desde a formación e desde a preparación ata a xeración. Unha decepción particular foi que non pode xerar todo ao instante. Leva moito tempo comezar e o texto non se xera tan rápido como nos gustaría, dado o custo do servidor por hora.
Rede neuronal YaLM 100B na práctica.  

Como executar YaLM sen 200 Gb de RAM GPU?

Debe engadir a descarga deepspeed zero á configuración. Para os que saben do que estamos a falar, será moi sinxelo facelo. Para outros, esta non é unha tarefa trivial en absoluto. É importante saber que a descarga pode realizarse na memoria RAM da CPU ou na NVMe. Podes esquecerche de NVMe neste momento, porque. estase a procesar unha gran cantidade de datos e o disco non pode manexalo. A CPU sen descarga é máis real. É certo, para iso necesitas ter máis de 200 Gb de RAM de CPU en stock, o que tampouco é barato. E xerarase un texto durante uns 20-40 minutos, xa que aínda non foi posible paralelizalo en dúas tarxetas de vídeo. Como podes ver na captura de pantalla a continuación, só unha tarxeta de vídeo estivo implicada na xeración, e despois só para unha cuarta parte da memoria. Queda por ver por que non se usan os 24 GB,
Rede neuronal YaLM 100B na práctica. Ben, en conclusión, direi que é posible executar mesmo nun RTX 3070 TI. Pero non hai un sentido particular nisto, porque. NVMe non che permitirá procesar rapidamente 150 GB de datos no intercambio, que están no apéndice de 96 GB de RAM.
Rede neuronal YaLM 100B na práctica.

Resumindo

Por suposto, aínda intentarei atopar os camiños de lanzamento óptimos. Pero ata agora cheguei á conclusión de que YaLM 100b é demasiado caro/demasiado lento para as miñas tarefas. Polos mesmos cartos, a xente escribirá moito máis e moito mellor. Pero creo que é temporal, xa veremos. Se precisas axuda para lanzar, configurar o yalm ou queres ver os resultados dos teus exemplos de contexto, escribe ao correo ou ao telegrama.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply