Neŭrala reto YaLM 100B en praktiko.

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

Fine de junio, Yandex publikigis neŭralan reton kun 100 miliardoj da parametroj nomitaj YaLM 100B al la publiko . Ĝi estas la plej granda GPT-simila neŭrala reto en la publika domeno. Ĝi rakontas pri kiel ili instruis, montris la plej bonajn ekzemplojn kaj pri kio kapablas la neŭrono. Sed ĉu ĝi estas tiel bona en la praktiko kaj aplikebla hejme? La artikolo silentas pri tio, krome, ne estas tiel facile ruli kaj kontroli ĝin, ĉar necesas proksimume 200 Gb da GPU-RAM. Ĉi tiu komento pri Habré
malkaŝas la situacion plej ĝuste .

Supoze, en Yandex, ĉiuj tiaj inteligentaj homoj, kaj ili eĉ ne afiŝis normalan Kiel-al. Ne ekzistas api por granda modelo, ne ekzistas preta senvestigita meza aŭ malgranda modelo por ordinaraj homoj (en Guglo Colab). Neniu ekzemplo estas donita pri kiel agordi la modelon, kiel generi tekston. Nur ke la artikolo indikas kelkajn nuancojn por nerdoj kaj jen. Sufiĉas pli detale rigardi kiel la banko faris ĝin per la litero “C” kaj fari la samon. Mi havis la impreson, ke ĉi tiu modelo estas nur unu el la malsukcesaj eksperimentoj, kiuj estis domaĝe ĵeti en la rubon, do ĝi estis afiŝita en Malferma Fonto por montri, kiajn bonegajn modelojn kreas Yandex, kaj plie, ĝi estas malferma fonto!

Estas multaj demandoj en la Interreto kiel ruli yalm aŭ eĉ provi interrete, sed ne ekzistas respondoj al ĉi tio. Mi estis inter la uzantoj, kiuj faris ĉi tiujn demandojn. Kaj ekkomprenu ĝin. Ĉar mi vere bezonis manieron generi tekstojn por financaj robotoj. Por ke ili povu antaŭdiri ne nur la valorojn, sed ankaŭ komenti ĝin en teksto, surbaze de financaj raportoj. En esenco, ĝi estos la sama kiel kion faras financaj analizistoj, nur kun la uzo de artefarita inteligenteco. Estas du manieroj kuri yalm. Luu servilon en la nubokun 200+ Gb GPU-RAM aŭ modifi la kodon kaj funkcii kun deepspeed nul malŝarĝo (kiam la GPU sinsekve prilaboras parton de la neŭrala reto, kaj la resto estas stokita en CPU-RAM aŭ NVMe). La unua estas tre multekosta, ĉirkaŭ 2500 rubloj hore aŭ 1,7 milionoj monate. La dua nekonata, ĉar la kodo en la deponejo ne estas provizita, nur aludoj en la afero de la deponejo, kio ne malfacilas fari. Ni komencu simple.

YaLM 100B Lanĉa Instrukcioj

1. Ni luas 200 GB GPU RAM, ekzemple ĉi tie .

Neŭrala reto YaLM 100B en praktiko.

Vi bezonas almenaŭ 200 GB da totala videomemoro. 8×40 = 320 GB. Nur ĉi tiu taŭgas. Malpli ol 200 neeblas, pli eblas. La sago indikas la CPU-RAM, ni ne rigardas ĝin. Ŝi povas esti iu ajn.

Ni indikas diskon de ĉirkaŭ 300 GB, tiel ke kun rezerva kaj prefere rapida disko, ĉar. dekoj da gigabajtoj da datumoj estos transdonitaj al kaj de ĝi.

Neŭrala reto YaLM 100B en praktiko. Kreante en fontoj, elektu Ubuntu ML (Maŝina Lernado). Ĉi tio estas deviga por ke la vidkartoj estu agordita kaj nenio devas esti instalita aldone.

Kiam vi kreas servilon, estas nuancoj kun kvotoj, vi eble havas la senton, ke la ekipaĵo ne disponeblas, sed fakte vi nur bezonas pliigi la kvotojn en la agordoj. Post kiam la servilo estas aktivigita (ĝi povas daŭri 5-10 minutojn), konektu al la servilo per ssh aŭ rekte en la retkonzolo sur la servila paĝo kaj ekzekutu la komandon.

nvidia-smi

La rezulto devus esti tablo kun vidkartoj, ŝoforversio kaj cuda. Proksimume tiel.
Neŭrala reto YaLM 100B en praktiko. En la ŝoforo versio kaplinio kaj kie. Maldekstre estas la aparataj numeroj, en la centro estas la grandeco de la aparata memoro. Se vi ne havas ĉi tiun informon, tiam vi kolektis la servilon de la malĝusta fonto. Ubuntu ML (Machine Learnong) estas postulata, kiel priskribite supre.

2. Klonu la deponejon kun YaLM

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

Klonu al via hejma dosierujo, por ke vi ne devu redakti la docker-agordon poste. Se klonite aliloke, tiam iru ĉi tien kaj aldonu la vojon al kie klonis.

3. Elŝutu kontrolpunktojn (bazaj modelaj trejnaj informoj)

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

Ĉi tio daŭros ĉirkaŭ unu horo. Por ne vane perdi tempon, ni kreas novan ssh-konekton kaj paralele ni komencas konstrui docker-ujon.

4. Instalu nvidiadocker 2

Normala docker ne taŭgas, necesas nvidia-docker2 . https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Konstruante ujon por YaLM

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

Estas ankaŭ proksimume horo.

Viva hako. Vi povas elŝuti kontrolpunktojn, instali docker kaj konstrui ujon sur malmultekosta servilo per unu vidkarto. Ĝi estos la sama en la tempo, do vi povas ŝpari iom. Post muntado sur malmultekosta servilo, ni forigas ĝin, kaj kreas batalservilon uzante diskon de malmultekosta servilo. Tiam vi ne tropagos la tempon por atendi la asembleon kaj elpumpi transirejojn.

6. Preparu enhavon

6.1 Kontrolpunktoj

Post kiam la elŝuto de transirejoj finiĝas, vi devas gliti ilin en la agordojn. Estas du manieroj, ĝustaj parametroj aŭ transigaj kontrolpunktoj. Ĉie estas atendite, ke la kontrolpunktoj estos en la ĉefa dosierujo de la projekto, respektive, tio, kio estis elŝutita, devas esti translokigita el la elŝuta dosierujo supre. Estante en la yalm dosierujo ekzekuti

mv ./download/yalm100b_checkpoint ./

Aŭ ŝanĝu la vojojn al la dosieroj en la ekzemplodosieroj https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Vidkartoj

Ni kontrolas, ke la vidkartoj estas ĝuste fiksitaj. Se vi havas ok vidkartojn, tiam nenio devas esti ŝanĝita. Se la nombro estas malsama, tiam ni ŝanĝas ĉi tiujn liniojn Neŭrala reto YaLM 100B en praktiko. En la dua linio, la nombroj de la uzataj aparatoj (vi povas rigardi ilin en nvidia-smi, kiun vi jam lanĉis). En la kvara, ilia nombro.

7. Rulu la docker-ujon

Estante en la dosierujo yalm, ekzekutu la komandon

sudo bash ./docker/run.sh

Se ĉio estas en ordo, tiam vi estos kondukata al ujo, en kiu vi devas iri al la dosierujo yalm en via hejma dosierujo.

cd ~/yalm

8. Rulu la ekzemplon de YaLM 100B

Ni pretas lanĉi unu el la ekzemploj. Ili estas priskribitaj ĉi tie .

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

Estu pacienca, restas atendi aliajn 10-15 minutojn ĝis la GPT-modelo estas kreita kaj la pezoj de la kontrolpunktoj estas ŝarĝitaj.
Neŭrala reto YaLM 100B en praktiko.

Kiam la konstruo finiĝos, MegatronML petos vin enigi kuntekston por generi tekston. Atentu kiam vi tajpas. Sub certaj cirkonstancoj, eraro okazas, la programo kraŝas kaj vi devas komenci la asembleon denove. Tial, estas pli bone uzi ekzemplojn, kiuj prenas tekston el dosiero.

9. Rezultoj de la laboro

Neŭrala reto YaLM 100B en praktiko.
Neŭrala reto YaLM 100B en praktiko. Aspektas interese. Kompreneble, ĉi tiuj estas nur bonaj ekzemploj. Mi faris la teston sur malsamaj specimenoj. Kiel atendite, ju pli bona la kunteksto, des pli signifa teksto estos generita. La plena aro de eksperimentaj generacioj videblas ĉe la ligiloj:

Por la prezo, ĝi kostis al mi ĉirkaŭ 9 mil rublojn por lui servilojn de malsamaj kapabloj de trejnado kaj de preparado ĝis generacio. Aparta seniluziiĝo estis, ke vi ne povas tuj generi ĉion. Ĝi bezonas tre longan tempon por komenci kaj la teksto ne generas tiel rapide kiel ni ŝatus, pro la kosto de la servilo po horo.
Neŭrala reto YaLM 100B en praktiko.  

Kiel ruli YaLM sen 200Gb GPU RAM?

Vi devas aldoni deepspeed nul malŝarĝo al la agordo. Por tiuj, kiuj scias, pri kio ni parolas, estos tre facile fari ĝin. Por aliaj, ĉi tio tute ne estas bagatela tasko. Gravas scii, ke malŝarĝo povas esti aŭ en CPU-RAM aŭ NVMe. Vi povas forgesi pri NVMe nuntempe, ĉar. tre granda kvanto da datumoj estas prilaborata kaj la disko ne povas elteni ĝin. Nula malŝarĝa CPU estas pli reala. Vere, por tio vi devas havi 200+ Gb CPU-RAM en stoko, kio ankaŭ ne estas malmultekosta. Kaj unu teksto estos generita dum ĉirkaŭ 20-40 minutoj, ĉar ankoraŭ ne eblis paraleligi ĝin sur du vidkartoj. Kiel vi povas vidi en la ekrankopio sube, nur unu vidkarto estis implikita en la generacio, kaj tiam nur por kvarono de la memoro. Restas vidi kial ĉiuj 24 GB ne estas uzataj,
Neŭrala reto YaLM 100B en praktiko. Nu, konklude, mi diros, ke eblas funkcii eĉ sur unu RTX 3070 TI. Sed ne estas aparta senco en ĉi tio, ĉar. NVMe ne permesos vin rapide prilabori 150 GB da datumoj en la interŝanĝo, kiuj estas en la aldonaĵo de 96 GB da RAM.
Neŭrala reto YaLM 100B en praktiko.

Resumante

Kompreneble, mi ankoraŭ provos trovi la optimumajn lanĉajn vojojn. Sed ĝis nun mi alvenis al la konkludo, ke YaLM 100b estas tro multekosta/tro malrapida por miaj taskoj. Por la sama mono, homoj skribos multe pli kaj multe pli bone. Sed mi pensas, ke ĝi estas provizora, ni vidos. Se vi bezonas helpon pri lanĉo, agordo de yalm aŭ volas vidi la rezultojn pri viaj kuntekstaj ekzemploj, skribu al la poŝto aŭ telegramo.

Daŭre pri lanĉo de yalm 100b hejme.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply