YaLM 100B est un réseau neuronal de type GPT pour générer et traiter du texte. Il peut être utilisé librement par les développeurs et les chercheurs du monde entier.
Le modèle exploite 100 milliards de paramètres. Il a fallu 65 jours pour entraîner le modèle sur un cluster de 800 cartes graphiques A100 et 1,7 To de textes, livres et d'innombrables autres sources en ligne en anglais et en russe.
Les détails de la formation et les meilleures pratiques sur l'accélération et les stabilisations peuvent être trouvés dans les articles Medium (anglais) et Habr (russe).
Nous avons utilisé DeepSpeed pour entraîner le modèle et nous sommes inspirés de l'exemple Megatron-LM. Cependant, le code de ce référentiel n'est pas le même que celui utilisé pour entraîner le modèle. Il s'agit plutôt d'un exemple de stock du référentiel DeepSpeed avec des modifications minimes nécessaires pour déduire notre modèle.
Assurez-vous de disposer de 200 Go d'espace disque libre avant de télécharger des poids. Le modèle (le code est basé sur Microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) est censé fonctionner sur plusieurs GPU avec parallélisme tensoriel. Il a été testé sur 4 (A100 80g) et 8 (V100 32g) GPU, mais est capable de fonctionner avec différentes configurations avec ≈200 Go de mémoire GPU au total qui divise correctement les dimensions de poids (par exemple 16, 64, 128).
bash download/download.sh
pour télécharger les poids et le vocabulaire du modèle../yalm100b_checkpoint/weights/
et le vocabulaire sera téléchargé vers ./yalm100b_checkpoint/vocab/
.docker/pull.sh
. Il est compatible avec A100 et V100.docker/build.sh
(qui créera simplement une image Docker à partir de docker/Dockerfile
).docker/run.sh
(les volumes, le nom et d'autres paramètres peuvent être modifiés) . Vous pouvez commencer avec les scripts suivants :
examples/generate_interactive.sh
: génération interactive depuis la ligne de commande, le moyen le plus simple d'essayer le modèle.examples/generate_conditional_sampling.sh
: génération conditionnelle avec stratégie d'échantillonnage. Top-p est utilisé par défaut, n'hésitez pas à changer la température ou à utiliser top-k. L'entrée est jsonlines (exemple : examples/example_cond_input.json
), la sortie sera la même jsonlines avec un champ de texte généré ajouté à chaque ligne.examples/generate_conditional_greedy.sh
: identique à la précédente, mais la génération est gourmande. Convient pour résoudre des problèmes avec quelques tirs.examples/generate_unconditional.sh
: génération inconditionnelle. Aucune entrée n'est utilisée, la sortie sera jsonlines. Le modèle est publié sous la licence Apache 2.0 qui permet à la fois la recherche et l'utilisation commerciale, Megatron-LM est sous licence Megatron-LM.
L'ensemble de données utilisé pour la formation de YaLM-100B est composé des parties suivantes (les pourcentages bruts sont mesurés en jetons vus par le modèle) :
25 % The Pile – ensemble de données ouvert en anglais par l'équipe Eleuther AI
75% Textes en russe collectés par notre équipe (les pourcentages de l'ensemble des données sont donnés)
49 % de pages Web russes de l'index Yandex Search filtrées de ~100 To à ~1 To par l'heuristique suivante :
12% Nouvelles provenant de diverses sources de l'index de recherche Yandex
10 % de livres de l'ensemble de données utilisés dans le thésarus distributionnel russe
3 % Textes divers de l'ensemble de données Taïga
1,5 % de dialogues provenant des médias sociaux prétraités d'une manière similaire à la façon dont Reddit est traité dans The Pile
0,5 % de partie russe de Wikipédia
Certains sous-ensembles ont été parcourus jusqu'à 3 fois au cours de la formation.
Le modèle a été formé sur un cluster de 800 A100 pendant environ 65 jours. Pendant cette période, il a consommé 300 milliards de jetons. Vous pouvez voir TensorBoard avec LR et le calendrier de montée en puissance, les métriques de formation et nos « thermomètres » sur la page HF.