YaLM 100B es una red neuronal similar a GPT para generar y procesar texto. Puede ser utilizado libremente por desarrolladores e investigadores de todo el mundo.
El modelo aprovecha 100 mil millones de parámetros. Se necesitaron 65 días para entrenar el modelo en un grupo de 800 tarjetas gráficas A100 y 1,7 TB de textos en línea, libros y otras innumerables fuentes tanto en inglés como en ruso.
Los detalles del entrenamiento y las mejores prácticas sobre aceleración y estabilización se pueden encontrar en los artículos Medium (inglés) y Habr (ruso).
Usamos DeepSpeed para entrenar el modelo y nos inspiramos en el ejemplo de Megatron-LM. Sin embargo, el código de este repositorio no es el mismo código que se utilizó para entrenar el modelo. Más bien, es un ejemplo estándar del repositorio de DeepSpeed con cambios mínimos necesarios para inferir nuestro modelo.
Asegúrese de tener 200 GB de espacio libre en el disco antes de descargar pesas. Se supone que el modelo (el código está basado en microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) se ejecuta en múltiples GPU con paralelismo tensorial. Se probó en 4 (A100 80g) y 8 (V100 32g) GPU, pero puede trabajar con diferentes configuraciones con ≈200 GB de memoria GPU en total que dividen las dimensiones de peso correctamente (por ejemplo, 16, 64, 128).
bash download/download.sh
para descargar los pesos y el vocabulario de los modelos../yalm100b_checkpoint/weights/
y el vocabulario se descargará en ./yalm100b_checkpoint/vocab/
.docker/pull.sh
. Es compatible con A100 y V100.docker/build.sh
(que simplemente creará una imagen de la ventana acoplable a partir de docker/Dockerfile
).docker/run.sh
(los volúmenes, el nombre y otros parámetros se pueden cambiar) . Puede comenzar con los siguientes scripts:
examples/generate_interactive.sh
: generación interactiva desde la línea de comandos, la forma más sencilla de probar el modelo.examples/generate_conditional_sampling.sh
: generación condicional con estrategia de muestreo. Top-p se usa de forma predeterminada, siéntase libre de cambiar la temperatura o usar top-k. La entrada es jsonlines (ejemplo: examples/example_cond_input.json
), la salida será la misma jsonlines con el campo de texto generado agregado a cada línea.examples/generate_conditional_greedy.sh
: igual que el anterior, pero la generación es codiciosa. Adecuado para resolver problemas con pocos disparos.examples/generate_unconditional.sh
: generación incondicional. No se utiliza ninguna entrada, la salida será jsonlines. El modelo está publicado bajo la licencia Apache 2.0 que permite tanto uso comercial como de investigación, Megatron-LM está bajo la licencia Megatron-LM.
El conjunto de datos utilizado para el entrenamiento de YaLM-100B se compone de las siguientes partes (los porcentajes aproximados se miden en tokens vistos por el modelo):
25% The Pile: conjunto de datos abiertos en inglés del equipo de Eleuther AI
75% Textos en ruso recopilados por nuestro equipo (se dan porcentajes de todo el conjunto de datos)
El 49 % de las páginas web rusas del índice de búsqueda de Yandex se filtraron de ~100 Tb a ~1 Tb mediante la siguiente heurística:
12% Noticias de diversas fuentes del índice de búsqueda de Yandex
10% Libros del conjunto de datos utilizados en Russian Distributional Thesarus
3% Textos varios del conjunto de datos de Taiga
1,5% Diálogos de redes sociales preprocesados de manera similar a cómo se procesa Reddit en The Pile
0,5% porción rusa de Wikipedia
Algunos subconjuntos se recorrieron hasta 3 veces durante el entrenamiento.
El modelo se entrenó en un grupo de 800 A100 durante aproximadamente 65 días. En ese tiempo consumió 300 mil millones de tokens. Puedes ver TensorBoard con LR y cronograma de aceleración, métricas de entrenamiento y nuestros "termómetros" en la página de HF.