YaLM 100B neurális hálózat a gyakorlatban.

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

Június végén a Yandex
nyilvánosságra hozta a YaLM 100B néven 100 milliárd paramétert tartalmazó neurális hálózatot . Ez a legnagyobb nyilvános GPT-szerű neurális hálózat. Elmondja, hogyan tanítottak, mutatták a legjobb példákat, és mire képes a neuron. De vajon olyan jó ez a gyakorlatban és otthon is alkalmazható? Erről a cikk hallgat, ráadásul futtatni és ellenőrizni sem olyan egyszerű, hiszen hozzávetőleg 200 Gb GPU RAM szükséges. Ez a Habré-hoz írt
megjegyzés mutatja meg a legpontosabban a helyzetet
.

Állítólag a Yandexben minden ilyen okos ember, és még egy normális útmutatót sem tettek közzé. Nincs api egy nagy modellhez, nincs kész lecsupaszított közepes vagy kicsi modell hétköznapi emberek számára (a Google Colabban). Nem adunk példát a modell felállítására, szöveg generálására. Csupán annyi, hogy a cikk egy-két árnyalatot jelez a nebulók számára, és ennyi. Elég, ha közelebbről megnézi, hogyan csinálta a bank a “C” betűvel, és ugyanezt tegye. Az volt a benyomásom, hogy ez a modell csak egyike azoknak a sikertelen kísérleteknek, amelyeket kár volt kidobni a szemétbe, ezért felkerült a nyílt forráskódra, hogy megmutassa, milyen nagyszerű modelleket hoz létre a Yandex, ráadásul nyílt forráskódú!

Rengeteg kérdés kering az interneten, hogyan kell futtatni a yalm-ot, vagy akár online próbálni, de erre nincs válasz. A felhasználók között voltam, akik feltették ezeket a kérdéseket. És nekiállt kitalálni. Mivel nagyon kellett egy mód, hogy szövegeket generáljak a pénzügyi robotoknak. Hogy ne csak megjósolhassák az értékeket, hanem szövegesen is kommentálhassák, a pénzügyi beszámolók alapján. Lényegében ugyanaz lesz, mint amit a pénzügyi elemzők csinálnak, csak mesterséges intelligencia használatával. A yalm futtatásának két módja van.
Béreljen szervert a felhőben200+ Gb GPU RAM-mal, vagy véglegesítse a kódot és futtassa mélysebességű nulla tehermentesítéssel (amikor a GPU szekvenciálisan feldolgozza a neurális hálózat egy részét, a többit pedig a CPU RAM vagy az NVMe tárolja). Az első nagyon drága, körülbelül 2500 rubel óránként vagy 1,7 millió havonta. A második ismeretlen, mert a repository kódja nincs megadva, csak
utal a repository kiadására, amit nem nehéz megtenni. Kezdjük egyszerűen.

YaLM 100B indítási utasítások

1. 200 GB GPU RAM-ot bérelünk, például itt .

YaLM 100B neurális hálózat a gyakorlatban.

Legalább 200 GB teljes videomemóriára van szüksége. 8×40 = 320 GB. Csak ez illik hozzá. 200-nál kevesebb lehetetlen, több lehetséges. A nyíl a CPU RAM-ot jelzi, nem nézzük meg. Bárki lehet.

Kb. 300 GB-os lemezt jelezünk, hogy tartalék és lehetőleg gyors lemezzel, mert. több tíz gigabájt adatot fognak átvinni rá és onnan.

YaLM 100B neurális hálózat a gyakorlatban.A forrásokban való létrehozáskor válassza az Ubuntu ML (gépi tanulás) lehetőséget. Ez azért kötelező, hogy a videokártyák konfigurálva legyenek, és semmit se kelljen külön telepíteni.

A szerver aktiválása után (5-10 percet is igénybe vehet), csatlakozzon a szerverhez ssh-n keresztül vagy közvetlenül a webkonzolon a szerver oldalon, és hajtsa végre a parancsot.

nvidia-smi

Az eredmény egy táblázat videokártyákkal, illesztőprogram-verzióval és cuda-val. Körülbelül így.
YaLM 100B neurális hálózat a gyakorlatban.Az illesztőprogram verziójának fejlécében és hol. A bal oldalon az eszközszámok, középen a készülékmemória mérete látható. Ha nem rendelkezik ezzel az információval, akkor rossz forrásból gyűjtötte be a szervert. Ubuntu ML (Machine Learnong) szükséges a fent leírtak szerint.

2. Klónozza a tárat a YaLM segítségével

sudo git klón https://github.com/yandex/YaLM-100B/ yalm
cd yalm

Klónozza a saját mappájába, hogy ne kelljen utána szerkesztenie a docker konfigurációt. Ha valahol máshol klónozták, akkor
menjen ide , és adja hozzá a klónozás elérési útját.

3. Töltse le az ellenőrző pontokat (alapvető modell-képzési információk)

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

Ez körülbelül egy órát vesz igénybe. Hogy ne vesztegessük hiába az időt, létrehozunk egy új ssh kapcsolatot, és ezzel párhuzamosan nekiállunk egy docker konténer építésének.

4. Telepítse az nvidiadocker 2 -t

A normál docker nem megfelelő, az
nvidia-docker2 szükséges .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Konténer építése a YaLM számára

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

Ez is körülbelül egy óra.

Life hack. Letölthet ellenőrzőpontokat, telepíthet dockert és egy olcsó szerveren konténert építhet egyetlen videokártyával. Idővel ugyanaz lesz, így lehet egy kicsit spórolni. Egy olcsó szerveren való összeszerelés után töröljük, és egy olcsó szerverről származó lemez segítségével létrehozunk egy harci szervert. Akkor nem kell túlfizetnie az összeszerelésre való várakozás és az ellenőrzőpontok kiszivattyúzásának idejét.

6. Tartalom előkészítése

6.1 Ellenőrző pontok

Az ellenőrzőpontok letöltése után be kell csúsztatnod őket a konfigurációkba. Két módja van: a paraméterek helyesbítése vagy az ellenőrzőpontok átvitele. Mindenhol elvárható, hogy az ellenőrző pontok a projekt főkönyvtárában legyenek, illetve a letöltötteket a fenti letöltési mappából kell átvinni. A yalm mappában lévő futtatás

mv ./download/yalm100b_checkpoint ./

Vagy módosítsa a fájlok elérési útját a példafájlokban:
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Videokártyák

Ellenőrizzük, hogy a videokártyák megfelelően vannak-e beállítva. Ha nyolc videokártyája van, akkor semmit sem kell változtatni. Ha eltér a szám, akkor ezeket a sorokat változtatjuk
YaLM 100B neurális hálózat a gyakorlatban.A második sorban a használt eszközök számai (az általad már elindított nvidia-smi-ben nézheted meg). A negyedikben a számuk.

7. Futtassa a dokkolótartályt

A yalm mappában hajtsa végre a parancsot

sudo bash ./docker/run.sh

Ha minden rendben van, akkor egy konténerbe kerül, amelyben a saját könyvtárában lévő yalm mappába kell lépnie.

cd ~/yalm

8. Futtassa a példát a YaLM 100B-ből

Készen állunk, hogy elindítsuk az egyik példát. Itt vannak leírva
.

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

Légy türelemmel, várni kell még 10-15 percet, amíg létrejön a GPT2 modell és betöltődnek az ellenőrző pontok súlyai.
YaLM 100B neurális hálózat a gyakorlatban.

Amikor az összeállítás befejeződik, a MegatronML felkéri, hogy adjon meg egy kontextust a szöveg létrehozásához. Legyen óvatos, amikor gépel. Bizonyos körülmények között hiba lép fel, a program összeomlik, és újra kell indítania az összeállítást. Ezért jobb olyan példákat használni, amelyek szöveget vesznek át egy fájlból.

9. A munka eredményei

YaLM 100B neurális hálózat a gyakorlatban.
YaLM 100B neurális hálózat a gyakorlatban.Érdekesnek tűnik. Persze ezek csak jó példák. Különböző mintákon futtattam le a tesztet. Ahogy az várható volt, minél jobb a kontextus, annál értelmesebb szöveg jön létre. A kísérleti generációk teljes készlete megtekinthető az alábbi linkeken:

Az árért körülbelül 9 ezer rubelembe került a különböző kapacitású szerverek bérbeadása a képzéstől és a felkészüléstől a generációig. Külön csalódás volt, hogy nem lehet mindent azonnal generálni. Nagyon sokáig tart az indítás, és a szöveg nem generál olyan gyorsan, mint szeretnénk, tekintettel a szerver óránkénti költségére.
YaLM 100B neurális hálózat a gyakorlatban. 

Hogyan lehet futtatni a YaLM-et 200 Gb GPU RAM nélkül?

Deepspeed zero offload-ot kell hozzáadni a konfigurációhoz. Azok számára, akik tudják, miről beszélünk, nagyon könnyű lesz megtenni. Mások számára ez egyáltalán nem triviális feladat. Fontos tudni, hogy a kitöltés történhet CPU RAM-ban vagy NVMe-ben. Az NVMe-t pillanatnyilag elfelejtheti, mert. nagyon nagy mennyiségű adat kerül feldolgozásra, és a lemez nem tud megbirkózni vele. A nulla tehermentesítő CPU valóságosabb. Igaz, ehhez 200+ Gb CPU RAM kell raktáron, ami szintén nem olcsó. Egy szöveg pedig körülbelül 20-40 percig fog generálódni, mivel két videokártyán még nem lehetett párhuzamosítani. Ahogy az alábbi képernyőképen is látható, a generálásban csak egy videokártya vett részt, és akkor is csak a memória negyede. Továbbra is látni kell, hogy miért nincs kihasználva mind a 24 GB,
YaLM 100B neurális hálózat a gyakorlatban.Nos, befejezésül elmondom, hogy akár egyetlen RTX 3070 TI-n is lehet futni. De ennek nincs különösebb értelme, mert. Az NVMe nem teszi lehetővé 150 GB adat gyors feldolgozását a swapban, amely 96 GB RAM-hoz tartozik.
YaLM 100B neurális hálózat a gyakorlatban.

Összegezve

Természetesen továbbra is megpróbálom megtalálni az optimális indítási utakat. De eddig arra a következtetésre jutottam, hogy a YaLM 100b túl drága / túl lassú a feladataimhoz. Ugyanannyi pénzért az emberek sokkal többet és sokkal jobban fognak írni. De szerintem ez átmeneti, majd meglátjuk. Ha segítségre van szüksége a yalm indításához, beállításához, vagy szeretné látni a kontextuspéldák eredményeit, írjon e-mailre vagy táviratra.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply