Red neuronal YaLM 100B en la práctica.

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

A fines de junio, Yandex
lanzó al público una red neuronal con 100 mil millones de parámetros llamada YaLM 100B . Es la red neuronal similar a GPT más grande del dominio público. Cuenta cómo enseñaron, mostraron los mejores ejemplos y de lo que es capaz la neurona. Pero, ¿es tan bueno en la práctica y aplicable en casa? El artículo no dice nada al respecto, además, no es tan fácil ejecutarlo y verificarlo, ya que se requieren aproximadamente 200 Gb de GPU RAM. Este comentario sobre Habré
revela la situación con mayor precisión
.

Supuestamente, en Yandex, todas esas personas inteligentes, y ni siquiera publicaron un Cómo hacerlo normal. No hay una API para un modelo grande, no hay un modelo mediano o pequeño ya hecho y simplificado para la gente común (en Google Colab). No se da ningún ejemplo sobre cómo configurar el modelo, cómo generar texto. Es que el artículo indica un par de matices para nerds y ya está. Basta con echar un vistazo más de cerca a cómo lo hizo el banco con la letra «C» y hacer lo mismo. Me dio la impresión de que este modelo es solo uno de los experimentos fallidos que fue una pena tirarlo a la basura, por lo que se publicó en código abierto para mostrar los excelentes modelos que crea Yandex y, además, ¡es de código abierto!

Hay muchas preguntas en Internet sobre cómo ejecutar yalm o incluso probar en línea, pero no hay respuestas para esto. Yo estaba entre los usuarios que hicieron estas preguntas. Y se puso a averiguarlo. Ya que realmente necesitaba una forma de generar textos para robots financieros. Para que puedan predecir no solo los valores, sino también comentarlos en el texto, en función de los informes financieros. En esencia, será lo mismo que hacen los analistas financieros, solo que con el uso de inteligencia artificial. Hay dos formas de ejecutar yalm.
Alquile un servidor en la nubecon GPU RAM de más de 200 Gb o finalice el código y ejecútelo con descarga cero de velocidad profunda (cuando la GPU procesa secuencialmente parte de la red neuronal y el resto se almacena en CPU RAM o NVMe). El primero es muy caro, unos 2500 rublos por hora o 1,7 millones al mes. La segunda incógnita, porque no se proporciona el código en el repositorio, solo
sugerencias en el tema del repositorio, lo cual no es difícil de hacer. Comencemos de forma sencilla.

Instrucciones de lanzamiento de YaLM 100B

1. Alquilamos GPU RAM de 200 GB, por ejemplo aquí .

Red neuronal YaLM 100B en la práctica.

Necesita al menos 200 GB de memoria de video total. 8×40 = 320 GB. Solo cabe este. Menos de 200 es imposible, más es posible. La flecha indica la RAM de la CPU, no la miramos. Ella puede ser cualquiera.

Indicamos un disco de unos 300 GB, por lo que con un disco de repuesto y preferiblemente rápido, pues. se transferirán decenas de gigabytes de datos hacia y desde él.

Red neuronal YaLM 100B en la práctica.Al crear en fuentes, seleccione Ubuntu ML (Aprendizaje automático). Esto es obligatorio para que las tarjetas de video estén configuradas y no sea necesario instalar nada adicional.

Después de activar el servidor (puede tardar de 5 a 10 minutos), conéctese al servidor a través de ssh o directamente en la consola web en la página del servidor y ejecute el comando.

nvidia-smi

El resultado debería ser una tabla con tarjetas de video, versión de controlador y cuda. Aproximadamente así.
Red neuronal YaLM 100B en la práctica.En el encabezado de la versión del controlador y dónde. En el lado izquierdo están los números de dispositivo, en el centro está el tamaño de la memoria del dispositivo. Si no tiene esta información, entonces ha recopilado el servidor de la fuente incorrecta. Se requiere Ubuntu ML (Machine Learnong), como se describe anteriormente.

2. Clonar el repositorio con YaLM

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

Clone a su carpeta de inicio para que no tenga que editar la configuración de la ventana acoplable después. Si se clonó en otro lugar,
vaya aquí y agregue la ruta donde se clonó.

3. Descargar puntos de control (información básica de entrenamiento del modelo)

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

Esto tomará alrededor de una hora. Para no perder el tiempo en vano, creamos una nueva conexión ssh y, en paralelo, comenzamos a construir un contenedor docker.

4. Instalar nvidiaventana acoplable 2

La ventana acoplable normal no es adecuada,
se necesita nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Construyendo un contenedor para YaLM

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

También es alrededor de una hora.

Truco de vida. Puede descargar puntos de control, instalar Docker y construir un contenedor en un servidor económico con una tarjeta de video. Será lo mismo en el tiempo, por lo que puede ahorrar un poco. Después de ensamblarlo en un servidor barato, lo eliminamos y creamos un servidor de combate usando un disco de un servidor barato. Entonces no pagará de más el tiempo de espera para el montaje y el bombeo de los puntos de control.

6. Prepara el contenido

6.1 Puntos de control

Una vez que finaliza la descarga de los puntos de control, debe insertarlos en las configuraciones. Hay dos formas, corregir parámetros o transferir puntos de control. En todas partes, se espera que los puntos de control estén en el directorio principal del proyecto, respectivamente, lo que se descarga debe transferirse desde la carpeta de descarga anterior. Estar en la carpeta yalm ejecutar

mv ./descargar/yalm100b_punto de control ./

O cambie las rutas a los archivos en los archivos de ejemplo
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Tarjetas de video

Verificamos que las tarjetas de video estén configuradas correctamente. Si tiene ocho tarjetas de video, entonces no necesita cambiar nada. Si el número es diferente, entonces cambiamos estas líneas
Red neuronal YaLM 100B en la práctica.En la segunda línea, los números de los dispositivos utilizados (puede verlos en nvidia-smi, que ya ha lanzado). En el cuarto, su número.

7. Ejecute el contenedor docker

Estando en la carpeta yalm, ejecuta el comando

sudo bash ./docker/run.sh

Si todo está bien, se lo llevará a un contenedor en el que debe ir a la carpeta yalm en su directorio de inicio.

cd ~/yalm

8. Ejecute el ejemplo desde YaLM 100B

Estamos listos para lanzar uno de los ejemplos. Se describen
aquí .

chmod +x ./ejemplos/generar_interactivo.sh
./ejemplos/generar_interactivo.sh

Tenga paciencia, queda esperar otros 10-15 minutos hasta que se cree el modelo GPT2 y se carguen los pesos de los puntos de control.
Red neuronal YaLM 100B en la práctica.

Cuando finalice la compilación, MegatronML le pedirá que ingrese un contexto para generar texto. Tenga cuidado al escribir. En determinadas circunstancias, se produce un error, el programa falla y es necesario volver a iniciar el ensamblaje. Por lo tanto, es mejor usar ejemplos que tomen texto de un archivo.

9. Resultados del trabajo

Red neuronal YaLM 100B en la práctica.
Red neuronal YaLM 100B en la práctica.Parece interesante. Por supuesto, estos son sólo buenos ejemplos. Hice la prueba en diferentes muestras. Como era de esperar, cuanto mejor sea el contexto, se generará un texto más significativo. El conjunto completo de generaciones experimentales se puede ver en los enlaces:

Por el precio, me costó alrededor de 9 mil rublos por alquilar servidores de diferentes capacidades desde el entrenamiento y desde la preparación hasta la generación. Una decepción particular fue que no se puede generar todo al instante. Tarda mucho en iniciarse y el texto no se genera tan rápido como nos gustaría, dado el coste del servidor por hora.
Red neuronal YaLM 100B en la práctica. 

¿Cómo ejecutar YaLM sin GPU RAM de 200 Gb?

Debe agregar la descarga cero de velocidad profunda a la configuración. Para los que sepan de lo que hablamos, será muy fácil hacerlo. Para otros, esta no es una tarea trivial en absoluto. Es importante saber que la descarga puede ser en CPU RAM o NVMe. Puedes olvidarte de NVMe en este momento, porque. se está procesando una gran cantidad de datos y el disco no puede manejarlos. La CPU de descarga cero es más real. Es cierto que para esto necesita tener más de 200 Gb de RAM de CPU en stock, que tampoco es barato. Y se generará un texto durante unos 20-40 minutos, ya que aún no ha sido posible paralelizarlo en dos tarjetas de video. Como puede ver en la captura de pantalla a continuación, solo una tarjeta de video estuvo involucrada en la generación, y solo para una cuarta parte de la memoria. Queda por ver por qué no se usan los 24 GB,
Red neuronal YaLM 100B en la práctica.Bueno, en conclusión, diré que es posible ejecutar incluso en una RTX 3070 TI. Pero no hay ningún sentido particular en esto, porque. NVMe no le permitirá procesar rápidamente 150 GB de datos en el intercambio, que se encuentran en el apéndice de 96 GB de RAM.
Red neuronal YaLM 100B en la práctica.

Resumiendo

Por supuesto, intentaré encontrar las rutas de lanzamiento óptimas. Pero hasta ahora he llegado a la conclusión de que YaLM 100b es demasiado caro/demasiado lento para mis tareas. Por el mismo dinero, la gente escribirá mucho más y mucho mejor. Pero creo que es temporal, ya veremos. Si necesita ayuda con el lanzamiento, la configuración de yalm o desea ver los resultados en sus ejemplos de contexto, escriba al correo o al telegrama.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Responder
  2. Данила

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

    Responder
  3. Дмитрий

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

    Responder