Νευρωνικό δίκτυο YaLM 100B στην πράξη.

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

Στα τέλη Ιουνίου, η Yandex
κυκλοφόρησε στο κοινό ένα νευρωνικό δίκτυο με 100 δισεκατομμύρια παραμέτρους που ονομάζεται YaLM 100B . Είναι το μεγαλύτερο νευρωνικό δίκτυο που μοιάζει με GPT στον δημόσιο τομέα. Λέει για το πώς δίδαξαν, έδειξε τα καλύτερα παραδείγματα και τι είναι ικανός ο νευρώνας. Είναι όμως τόσο καλό στην πράξη και εφαρμόζεται στο σπίτι; Το άρθρο είναι σιωπηλό σχετικά με αυτό, επιπλέον, δεν είναι τόσο εύκολο να το τρέξετε και να το ελέγξετε, καθώς απαιτούνται περίπου 200 Gb μνήμης GPU RAM. Αυτό το σχόλιο για το Habré
αποκαλύπτει την κατάσταση με την μεγαλύτερη ακρίβεια
.

Φέρεται, στο Yandex, όλοι τόσο έξυπνοι άνθρωποι και δεν δημοσίευσαν καν ένα κανονικό Πώς να. Δεν υπάρχει api για μεγάλο μοντέλο, δεν υπάρχει έτοιμο απογυμνωμένο μεσαίο ή μικρό μοντέλο για απλούς ανθρώπους (στο Google Colab). Δεν δίνεται παράδειγμα για το πώς να ρυθμίσετε το μοντέλο, πώς να δημιουργήσετε κείμενο. Απλώς το άρθρο υποδεικνύει μερικές αποχρώσεις για σπασίκλες και τέλος. Αρκεί να ρίξετε μια πιο προσεκτική ματιά στο πώς το έκανε η τράπεζα με το γράμμα “C” και να κάνετε το ίδιο. Είχα την εντύπωση ότι αυτό το μοντέλο είναι μόνο ένα από τα αποτυχημένα πειράματα που ήταν κρίμα να πετάξουμε στα σκουπίδια, οπότε δημοσιεύτηκε στο Open Source για να δείξει τι υπέροχα μοντέλα δημιουργεί η Yandex, και επιπλέον, είναι ανοιχτού κώδικα!

Υπάρχουν πολλές ερωτήσεις στο Διαδίκτυο πώς να τρέξετε το yalm ή ακόμα και να δοκιμάσετε online, αλλά δεν υπάρχουν απαντήσεις σε αυτό. Ήμουν μεταξύ των χρηστών που έκαναν αυτές τις ερωτήσεις. Και ξεκινήστε να το ανακαλύψετε. Επειδή χρειαζόμουν πραγματικά έναν τρόπο να δημιουργήσω κείμενα για οικονομικά ρομπότ. Για να μπορούν να προβλέψουν όχι μόνο τις αξίες, αλλά και να το σχολιάσουν σε κείμενο, βάσει οικονομικών εκθέσεων. Στην ουσία, θα είναι το ίδιο με αυτό που κάνουν οι οικονομικοί αναλυτές, μόνο με τη χρήση τεχνητής νοημοσύνης. Υπάρχουν δύο τρόποι για να τρέξετε το γιάλμ.
Ενοικίαση διακομιστή στο cloudμε 200+ Gb GPU RAM ή τροποποιήστε τον κώδικα και εκτελέστε με μηδενική εκφόρτωση βαθιάς ταχύτητας (όταν η GPU επεξεργάζεται διαδοχικά μέρος του νευρωνικού δικτύου και το υπόλοιπο αποθηκεύεται σε CPU RAM ή NVMe). Το πρώτο είναι πολύ ακριβό, περίπου 2500 ρούβλια την ώρα ή 1,7 εκατομμύρια το μήνα. Το δεύτερο άγνωστο, γιατί ο κωδικός στο αποθετήριο δεν παρέχεται, μόνο
υποδείξεις στο θέμα του αποθετηρίου, κάτι που δεν είναι δύσκολο να γίνει. Ας ξεκινήσουμε απλά.

Οδηγίες εκκίνησης YaLM 100B

1. Ενοικιάζουμε 200 GB GPU RAM, για παράδειγμα εδώ .

Νευρωνικό δίκτυο YaLM 100B στην πράξη.

Χρειάζεστε τουλάχιστον 200 GB συνολικής μνήμης βίντεο. 8×40 = 320 GB. Μόνο αυτό ταιριάζει. Λιγότερο από 200 είναι αδύνατο, περισσότερα είναι δυνατά. Το βέλος δείχνει τη μνήμη RAM της CPU, δεν την κοιτάμε. Μπορεί να είναι οποιοσδήποτε.

Υποδεικνύουμε έναν δίσκο περίπου 300 GB, έτσι ώστε με έναν εφεδρικό και κατά προτίμηση έναν γρήγορο δίσκο, επειδή. δεκάδες gigabyte δεδομένων θα μεταφερθούν προς και από αυτό.

Νευρωνικό δίκτυο YaLM 100B στην πράξη. Όταν δημιουργείτε σε πηγές, επιλέξτε Ubuntu ML (Machine Learning). Αυτό είναι υποχρεωτικό ώστε οι κάρτες γραφικών να έχουν ρυθμιστεί και να μην χρειάζεται να εγκατασταθεί τίποτα επιπλέον.

Κατά τη δημιουργία ενός διακομιστή, υπάρχουν αποχρώσεις με ποσοστώσεις, μπορεί να έχετε την αίσθηση ότι ο εξοπλισμός δεν είναι διαθέσιμος, αλλά στην πραγματικότητα απλά πρέπει να αυξήσετε τις ποσοστώσεις στις ρυθμίσεις. Αφού ενεργοποιηθεί ο διακομιστής (μπορεί να χρειαστούν 5-10 λεπτά), συνδεθείτε στον διακομιστή μέσω ssh ή απευθείας στην κονσόλα Ιστού στη σελίδα διακομιστή και εκτελέστε την εντολή.

nvidia-smi

Το αποτέλεσμα θα πρέπει να είναι ένας πίνακας με κάρτες γραφικών, έκδοση προγράμματος οδήγησης και cuda. Περίπου έτσι.
Νευρωνικό δίκτυο YaLM 100B στην πράξη. Στην κεφαλίδα της έκδοσης του προγράμματος οδήγησης και πού. Στην αριστερή πλευρά είναι οι αριθμοί συσκευών, στο κέντρο το μέγεθος της μνήμης της συσκευής. Εάν δεν έχετε αυτές τις πληροφορίες, τότε έχετε συλλέξει τον διακομιστή από λάθος πηγή. Απαιτείται Ubuntu ML (Machine Learnong), όπως περιγράφεται παραπάνω.

2. Κλωνοποιήστε το αποθετήριο με το YaLM

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

Κλωνοποιήστε τον αρχικό σας φάκελο, ώστε να μην χρειάζεται να επεξεργαστείτε τη διαμόρφωση του docker στη συνέχεια. Εάν έχει κλωνοποιηθεί κάπου αλλού, τότε
πηγαίνετε εδώ και προσθέστε τη διαδρομή προς το σημείο που κλωνοποιήθηκε.

3. Λήψη σημείων ελέγχου (βασικές πληροφορίες εκπαίδευσης μοντέλου)

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

Αυτό θα διαρκέσει περίπου μία ώρα. Για να μην χάνουμε χρόνο μάταια, δημιουργούμε μια νέα σύνδεση ssh και παράλληλα ξεκινάμε την κατασκευή ενός docker container.

4. Εγκαταστήστε το nvidiadocker 2

Το κανονικό docker δεν είναι κατάλληλο,
χρειάζεται nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Κατασκευή κοντέινερ για το YaLM

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

Είναι επίσης περίπου μια ώρα.

Life hack. Μπορείτε να κάνετε λήψη σημείων ελέγχου, να εγκαταστήσετε το docker και να δημιουργήσετε ένα κοντέινερ σε έναν φτηνό διακομιστή με μία κάρτα βίντεο. Το ίδιο θα γίνει με την πάροδο του χρόνου, ώστε να μπορείτε να εξοικονομήσετε λίγο. Μετά τη συναρμολόγηση σε έναν φθηνό διακομιστή, τον διαγράφουμε και δημιουργούμε έναν διακομιστή μάχης χρησιμοποιώντας έναν δίσκο από έναν φτηνό διακομιστή. Τότε δεν θα πληρώσετε υπερβολικά τον χρόνο αναμονής για τη συναρμολόγηση και την άντληση σημείων ελέγχου.

6. Προετοιμάστε περιεχόμενο

6.1 Σημεία ελέγχου

Αφού ολοκληρωθεί η λήψη των σημείων ελέγχου, πρέπει να τα βάλετε στις ρυθμίσεις παραμέτρων. Υπάρχουν δύο τρόποι, σωστές παραμέτρους ή μεταφορά σημείων ελέγχου. Παντού αναμένεται ότι τα σημεία ελέγχου θα βρίσκονται στον κύριο κατάλογο του έργου, αντίστοιχα, ότι έχει ληφθεί πρέπει να μεταφερθεί από τον φάκελο λήψης παραπάνω. Όντας στο φάκελο yalm εκτελέστε

mv ./download/yalm100b_checkpoint ./

Ή αλλάξτε τις διαδρομές προς τα αρχεία στα παραδείγματα αρχείων
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L

6.2 Κάρτες βίντεο

Ελέγχουμε ότι οι κάρτες γραφικών έχουν ρυθμιστεί σωστά. Εάν έχετε οκτώ κάρτες γραφικών, τότε δεν χρειάζεται να αλλάξετε τίποτα. Εάν ο αριθμός είναι διαφορετικός, τότε αλλάζουμε αυτές τις γραμμές
Νευρωνικό δίκτυο YaLM 100B στην πράξη. Στη δεύτερη γραμμή, τους αριθμούς των συσκευών που χρησιμοποιούνται (μπορείτε να τους δείτε στο nvidia-smi, το οποίο έχετε ήδη εκκινήσει). Στο τέταρτο, ο αριθμός τους.

7. Θέστε σε λειτουργία το κοντέινερ docker

Όντας στον φάκελο yalm, εκτελέστε την εντολή

sudo bash ./docker/run.sh

Εάν όλα είναι εντάξει, τότε θα μεταφερθείτε σε ένα κοντέινερ στο οποίο πρέπει να μεταβείτε στον φάκελο yalm στον αρχικό σας κατάλογο.

cd ~/yalm

8. Εκτελέστε το παράδειγμα από το YaLM 100B

Είμαστε έτοιμοι να παρουσιάσουμε ένα από τα παραδείγματα. Περιγράφονται
εδώ .

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

Υπομονή, μένει να περιμένετε άλλα 10-15 λεπτά μέχρι να δημιουργηθεί το μοντέλο GPT και να φορτωθούν τα βάρη από τα σημεία ελέγχου.
Νευρωνικό δίκτυο YaLM 100B στην πράξη.

Όταν ολοκληρωθεί η κατασκευή, το MegatronML θα σας ζητήσει να εισαγάγετε ένα περιβάλλον για τη δημιουργία κειμένου. Να είστε προσεκτικοί όταν πληκτρολογείτε. Υπό ορισμένες συνθήκες, παρουσιάζεται ένα σφάλμα, το πρόγραμμα διακόπτεται και πρέπει να ξεκινήσετε ξανά τη συναρμολόγηση. Επομένως, είναι καλύτερο να χρησιμοποιείτε παραδείγματα που παίρνουν κείμενο από ένα αρχείο.

9. Αποτελέσματα της εργασίας

Νευρωνικό δίκτυο YaLM 100B στην πράξη.
Νευρωνικό δίκτυο YaLM 100B στην πράξη. Φαίνεται ενδιαφέρον. Φυσικά, αυτά είναι απλώς καλά παραδείγματα. Έκανα τη δοκιμή σε διαφορετικά δείγματα. Όπως αναμενόταν, όσο καλύτερο είναι το πλαίσιο, τόσο πιο ουσιαστικό κείμενο θα δημιουργηθεί. Το πλήρες σύνολο των πειραματικών γενεών μπορείτε να το δείτε στους συνδέσμους:

Για την τιμή, μου κόστισε περίπου 9 χιλιάδες ρούβλια για την ενοικίαση διακομιστών διαφορετικής χωρητικότητας από εκπαίδευση και από προετοιμασία σε γενιά. Μια ιδιαίτερη απογοήτευση ήταν ότι δεν μπορείτε να δημιουργήσετε αμέσως τα πάντα. Χρειάζεται πολύς χρόνος για να ξεκινήσει και το κείμενο δεν δημιουργείται τόσο γρήγορα όσο θα θέλαμε, δεδομένου του κόστους του διακομιστή ανά ώρα.
Νευρωνικό δίκτυο YaLM 100B στην πράξη.  

Πώς να εκτελέσετε το YaLM χωρίς 200 Gb GPU RAM;

Πρέπει να προσθέσετε μηδενική εκφόρτωση βαθιάς ταχύτητας στη διαμόρφωση. Για όσους ξέρουν για τι πράγμα μιλάμε, θα είναι πολύ εύκολο να το κάνουν. Για άλλους, αυτό δεν είναι καθόλου ασήμαντο έργο. Είναι σημαντικό να γνωρίζετε ότι η εκφόρτωση μπορεί να είναι είτε σε CPU RAM είτε σε NVMe. Μπορείτε να ξεχάσετε το NVMe αυτή τη στιγμή, γιατί. ένας πολύ μεγάλος όγκος δεδομένων υπόκειται σε επεξεργασία και ο δίσκος δεν μπορεί να το αντιμετωπίσει. Η CPU μηδενικής εκφόρτωσης είναι πιο αληθινή. Είναι αλήθεια ότι για αυτό πρέπει να έχετε 200+ Gb CPU RAM σε απόθεμα, το οποίο επίσης δεν είναι φθηνό. Και ένα κείμενο θα δημιουργηθεί για περίπου 20-40 λεπτά, καθώς δεν έχει καταστεί ακόμη δυνατό να παραλληλιστεί σε δύο κάρτες βίντεο. Όπως μπορείτε να δείτε στο παρακάτω στιγμιότυπο οθόνης, μόνο μία κάρτα βίντεο συμμετείχε στη δημιουργία και στη συνέχεια μόνο για το ένα τέταρτο της μνήμης. Μένει να δούμε γιατί δεν χρησιμοποιούνται και τα 24 GB,
Νευρωνικό δίκτυο YaLM 100B στην πράξη. Λοιπόν, εν κατακλείδι, θα πω ότι είναι δυνατή η εκτέλεση ακόμη και σε ένα RTX 3070 TI. Αλλά δεν υπάρχει ιδιαίτερο νόημα σε αυτό, γιατί. Το NVMe δεν θα σας επιτρέψει να επεξεργαστείτε γρήγορα 150 GB δεδομένων στο swap, τα οποία βρίσκονται στο παράρτημα των 96 GB μνήμης RAM.
Νευρωνικό δίκτυο YaLM 100B στην πράξη.

Ανακεφαλαίωση

Φυσικά, θα προσπαθήσω ακόμα να βρω τις βέλτιστες διαδρομές εκτόξευσης. Αλλά μέχρι στιγμής έχω καταλήξει στο συμπέρασμα ότι το YaLM 100b είναι πολύ ακριβό / πολύ αργό για τις εργασίες μου. Για τα ίδια χρήματα, ο κόσμος θα γράψει πολύ περισσότερα και πολύ καλύτερα. Αλλά νομίζω ότι είναι προσωρινό, θα δούμε. Εάν χρειάζεστε βοήθεια για την εκκίνηση, τη ρύθμιση του yalm ή θέλετε να δείτε τα αποτελέσματα στα παραδείγματα του πλαισίου σας, γράψτε στο mail ή στο τηλεγράφημα.

pskucherov
Rate author

  1. Olha

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

    Απάντηση
  2. Данила

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

    Απάντηση
  3. Дмитрий

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

    Απάντηση