Réseau de neurones YaLM 100B en pratique.

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

Fin juin, Yandex
a rendu public un réseau de neurones avec 100 milliards de paramètres appelé YaLM 100B . Il s’agit du plus grand réseau neuronal de type GPT dans le domaine public. Il raconte comment ils ont enseigné, montré les meilleurs exemples et ce dont le neurone est capable. Mais est-ce si bon dans la pratique et applicable à la maison ? L’article est muet à ce sujet, de plus, il n’est pas si facile de l’exécuter et de le vérifier, car environ 200 Go de RAM GPU sont nécessaires. Ce commentaire sur Habré
révèle la situation avec le plus de justesse
.

Apparemment, à Yandex, toutes ces personnes intelligentes n’ont même pas publié de tutoriel normal. Il n’y a pas d’API pour un grand modèle, il n’y a pas de modèle moyen ou petit prêt à l’emploi pour les gens ordinaires (dans Google Colab). Aucun exemple n’est donné sur la façon de mettre en place le modèle, comment générer du texte. C’est juste que l’article indique quelques nuances pour les nerds et c’est tout. Il suffit de regarder de plus près comment la banque l’a fait avec la lettre « C » et de faire de même. J’ai eu l’impression que ce modèle n’était qu’une des expériences ratées qu’il était dommage de le jeter à la poubelle, il a donc été posté en Open Source pour montrer les super modèles créés par Yandex, et en plus, c’est open source !

Il y a beaucoup de questions sur Internet sur la façon d’exécuter yalm ou même d’essayer en ligne, mais il n’y a pas de réponse à cela. J’étais parmi les utilisateurs qui ont posé ces questions. Et se mettre à le découvrir. Comme j’avais vraiment besoin d’un moyen de générer des textes pour les robots financiers. Afin qu’ils puissent non seulement prédire les valeurs, mais aussi les commenter dans le texte, sur la base des rapports financiers. En substance, ce sera la même chose que ce que font les analystes financiers, mais avec l’utilisation de l’intelligence artificielle. Il y a deux façons d’exécuter yalm.
Louer un serveur dans le cloudavec plus de 200 Go de RAM GPU ou finalisez le code et exécutez-le à l’aide d’un déchargement zéro à grande vitesse (lorsque le GPU traite séquentiellement une partie du réseau neuronal et que le reste est stocké dans la RAM CPU ou NVMe). Le premier est très cher, environ 2500 roubles par heure ou 1,7 million par mois. La seconde inconnue, car le code dans le référentiel n’est pas fourni, seulement
des indices dans le numéro du référentiel, ce qui n’est pas difficile à faire. Commençons simple.

Instructions de lancement YaLM 100B

1. Nous louons 200 Go de RAM GPU, par exemple ici .

Réseau de neurones YaLM 100B en pratique.

Vous avez besoin d’au moins 200 Go de mémoire vidéo totale. 8×40 = 320 Go. Seul celui-ci convient. Moins de 200 est impossible, plus est possible. La flèche indique la RAM du CPU, on ne la regarde pas. Elle peut être n’importe qui.

Nous indiquons un disque d’environ 300 Go, de sorte qu’avec un disque de rechange et de préférence un disque rapide, car. des dizaines de gigaoctets de données seront transférés vers et depuis celui-ci.

Réseau de neurones YaLM 100B en pratique.Lors de la création dans les sources, sélectionnez Ubuntu ML (Machine Learning). Ceci est obligatoire pour que les cartes vidéo soient configurées et rien ne doit être installé en plus.

Une fois le serveur activé (cela peut prendre 5 à 10 minutes), connectez-vous au serveur via ssh ou directement dans la console Web sur la page du serveur et exécutez la commande.

nvidia-smi

Le résultat devrait être un tableau avec les cartes vidéo, la version du pilote et cuda. À peu près comme ça.
Réseau de neurones YaLM 100B en pratique.Dans l’en-tête de la version du pilote et où. Sur le côté gauche se trouvent les numéros d’appareil, au centre se trouve la taille de la mémoire de l’appareil. Si vous ne disposez pas de ces informations, vous avez collecté le serveur à partir de la mauvaise source. Ubuntu ML (Machine Learnong) est requis, comme décrit ci-dessus.

2. Cloner le référentiel avec YaLM

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

Clonez dans votre dossier personnel pour ne pas avoir à modifier la configuration du docker par la suite. S’il est cloné ailleurs,
allez ici et ajoutez le chemin d’accès à l’emplacement du clonage.

3. Télécharger les points de contrôle (informations de base sur la formation du modèle)

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

Cela prendra environ une heure. Afin de ne pas perdre de temps en vain, nous créons une nouvelle connexion ssh et en parallèle nous commençons à construire un conteneur docker.

4. Installez nvidiadocker 2

Docker normal ne convient pas,
nvidia-docker2 est nécessaire .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Construire un conteneur pour YaLM

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

C’est aussi environ une heure.

Hack de la vie. Vous pouvez télécharger des points de contrôle, installer docker et créer un conteneur sur un serveur bon marché avec une seule carte vidéo. Il en sera de même dans le temps, vous pourrez donc économiser un peu. Après assemblage sur un serveur bon marché, nous le supprimons et créons un serveur de combat en utilisant un disque d’un serveur bon marché. Ensuite, vous ne paierez pas trop le temps d’attente pour l’assemblage et le pompage des points de contrôle.

6. Préparez le contenu

6.1 Points de contrôle

Une fois le téléchargement des points de contrôle terminé, vous devez les glisser dans les configurations. Il y a deux façons, corriger les paramètres ou transférer les points de contrôle. Partout, on s’attend à ce que les points de contrôle soient dans le répertoire principal du projet, respectivement, ce qui est téléchargé doit être transféré à partir du dossier de téléchargement ci-dessus. Être dans le dossier yalm exécuter

mv ./download/yalm100b_checkpoint ./

Ou modifiez les chemins d’accès aux fichiers dans les fichiers d’exemple
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Cartes vidéo

Nous vérifions que les cartes vidéo sont correctement configurées. Si vous avez huit cartes vidéo, rien ne doit être changé. Si le nombre est différent, alors nous changeons ces lignes
Réseau de neurones YaLM 100B en pratique.Dans la deuxième ligne, les numéros des appareils utilisés (vous pouvez les regarder dans nvidia-smi, que vous avez déjà lancé). Au quatrième, leur nombre.

7. Exécutez le conteneur docker

Étant dans le dossier yalm, exécutez la commande

sudo bash ./docker/run.sh

Si tout va bien, vous serez redirigé vers un conteneur dans lequel vous devrez accéder au dossier yalm de votre répertoire personnel.

cd ~/yalm

8. Exécutez l’exemple de YaLM 100B

Nous sommes prêts à lancer l’un des exemples. Ils sont décrits
ici .

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

Soyez patient, il reste à attendre encore 10-15 minutes jusqu’à ce que le modèle GPT2 soit créé et que les poids des points de contrôle soient chargés.
Réseau de neurones YaLM 100B en pratique.

Une fois la construction terminée, MegatronML vous invitera à entrer un contexte pour générer du texte. Soyez prudent lorsque vous tapez. Dans certaines circonstances, une erreur se produit, le programme se bloque et vous devez recommencer l’assemblage. Par conséquent, il est préférable d’utiliser des exemples qui prennent du texte à partir d’un fichier.

9. Résultats des travaux

Réseau de neurones YaLM 100B en pratique.
Réseau de neurones YaLM 100B en pratique.Semble intéressant. Bien sûr, ce ne sont que de bons exemples. J’ai fait le test sur différents échantillons. Comme prévu, meilleur est le contexte, plus le texte généré sera significatif. L’ensemble complet des générations expérimentales peut être consulté sur les liens :

Pour le prix, cela m’a coûté environ 9 000 roubles pour la location de serveurs de différentes capacités de formation et de préparation à la génération. Une déception particulière était que vous ne pouvez pas tout générer instantanément. Le démarrage est très long et le texte ne se génère pas aussi vite que nous le souhaiterions, compte tenu du coût du serveur à l’heure.
Réseau de neurones YaLM 100B en pratique. 

Comment exécuter YaLM sans 200 Go de RAM GPU ?

Vous devez ajouter le déchargement zéro deepspeed à la configuration. Pour ceux qui savent de quoi on parle, il sera très facile de le faire. Pour d’autres, ce n’est pas du tout une tâche triviale. Il est important de savoir que le déchargement peut se faire soit dans la RAM du processeur, soit dans NVMe. Vous pouvez oublier NVMe pour le moment, car. une très grande quantité de données est en cours de traitement et le disque ne peut pas y faire face. Le CPU sans déchargement est plus réel. Certes, pour cela, vous devez disposer de plus de 200 Go de RAM CPU en stock, ce qui n’est pas non plus bon marché. Et un texte sera généré pendant environ 20 à 40 minutes, car il n’a pas encore été possible de le paralléliser sur deux cartes vidéo. Comme vous pouvez le voir dans la capture d’écran ci-dessous, une seule carte vidéo a été impliquée dans la génération, et seulement pour un quart de la mémoire. Reste à savoir pourquoi tous les 24 Go ne sont pas utilisés,
Réseau de neurones YaLM 100B en pratique.Eh bien, en conclusion, je dirai qu’il est possible de fonctionner même sur un RTX 3070 TI. Mais il n’y a pas de sens particulier à cela, parce que. NVMe ne vous permettra pas de traiter rapidement 150 Go de données dans le swap, qui sont en annexe de 96 Go de RAM.
Réseau de neurones YaLM 100B en pratique.

Résumé

Bien sûr, je vais quand même essayer de trouver les chemins de lancement optimaux. Mais jusqu’à présent, je suis arrivé à la conclusion que YaLM 100b est trop cher / trop lent pour mes tâches. Pour le même prix, les gens écriront beaucoup plus et beaucoup mieux. Mais je pense que c’est temporaire, on verra. Si vous avez besoin d’aide pour lancer, configurer yalm ou si vous souhaitez voir les résultats sur vos exemples de contexte, écrivez au courrier ou au télégramme.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Répondre
  2. Данила

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

    Répondre
  3. Дмитрий

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

    Répondre