បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។

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

នៅចុងខែមិថុនា Yandex
បានចេញផ្សាយ បណ្តាញសរសៃប្រសាទដែលមានប៉ារ៉ាម៉ែត្រ 100 ពាន់លានដែលហៅថា YaLM 100B ដល់សាធារណៈជន វាគឺជាបណ្តាញប្រសាទដូច GPT ដ៏ធំបំផុតនៅក្នុងដែនសាធារណៈ។ វាប្រាប់អំពីរបៀបដែលពួកគេបង្រៀន បង្ហាញពីគំរូដ៏ល្អបំផុត និងអ្វីដែលណឺរ៉ូនមានសមត្ថភាព។ ប៉ុន្តែវាល្អណាស់ក្នុងការអនុវត្ត និងអាចអនុវត្តបាននៅផ្ទះ? អត្ថបទនេះនៅស្ងៀមអំពីរឿងនេះ លើសពីនេះទៅទៀត វាមិនងាយស្រួលប៉ុន្មានទេក្នុងការដំណើរការ និងពិនិត្យមើលវា ព្រោះត្រូវការ RAM GPU ប្រហែល 200 Gb ។ ការអត្ថាធិប្បាយនេះ នៅលើ Habre
បង្ហាញពីស្ថានភាពយ៉ាងត្រឹមត្រូវបំផុត

តាមការចោទប្រកាន់នៅក្នុង Yandex មនុស្សឆ្លាតបែបនេះទាំងអស់ ហើយពួកគេមិនបានបង្ហោះរបៀបធ្វើធម្មតា។ មិនមាន api សម្រាប់ម៉ូដែលធំទេ មិនមានម៉ូដែលមធ្យម ឬតូចដែលត្រៀមរួចជាស្រេចសម្រាប់មនុស្សសាមញ្ញ (នៅក្នុង Google Colab) ។ គ្មាន​ឧទាហរណ៍​ត្រូវ​បាន​ផ្តល់​ឱ្យ​អំពី​របៀប​រៀបចំ​គំរូ របៀប​បង្កើត​អត្ថបទ​ទេ។ វាគ្រាន់តែថាអត្ថបទបង្ហាញពីការ nuances ពីរបីសម្រាប់ nerds ហើយនោះហើយជាវា។ វាគ្រប់គ្រាន់ហើយក្នុងការពិនិត្យមើលឱ្យកាន់តែច្បាស់អំពីរបៀបដែលធនាគារបានធ្វើវាដោយអក្សរ “C” ហើយធ្វើដូចគ្នា។ ខ្ញុំមានការចាប់អារម្មណ៍ថាគំរូនេះគ្រាន់តែជាការពិសោធន៍បរាជ័យមួយប៉ុណ្ណោះ ដែលគួរឱ្យអាណិតក្នុងការបោះចោលក្នុងធុងសំរាម ដូច្នេះវាត្រូវបានបង្ហោះក្នុង Open Source ដើម្បីបង្ហាញពីម៉ូដែលដ៏អស្ចារ្យដែល Yandex បង្កើត ហើយលើសពីនេះទៅទៀតវាគឺជាប្រភពបើកចំហរ!

មានសំណួរជាច្រើននៅលើអ៊ីនធឺណិតអំពីរបៀបដំណើរការយ៉ាល ឬសូម្បីតែសាកល្បងតាមអ៊ីនធឺណិត ប៉ុន្តែមិនមានចម្លើយចំពោះបញ្ហានេះទេ។ ខ្ញុំស្ថិតក្នុងចំណោមអ្នកប្រើប្រាស់ដែលបានសួរសំណួរទាំងនេះ។ ហើយកំណត់អំពីការស្វែងរកវា។ ដោយសារខ្ញុំពិតជាត្រូវការវិធីបង្កើតអត្ថបទសម្រាប់មនុស្សយន្តហិរញ្ញវត្ថុ។ ដូច្នេះពួកគេអាចទស្សន៍ទាយមិនត្រឹមតែតម្លៃប៉ុណ្ណោះទេប៉ុន្តែថែមទាំងផ្តល់យោបល់លើវានៅក្នុងអត្ថបទដោយផ្អែកលើរបាយការណ៍ហិរញ្ញវត្ថុ។ នៅក្នុងខ្លឹមសារ វានឹងដូចគ្នានឹងអ្វីដែលអ្នកវិភាគហិរញ្ញវត្ថុធ្វើដែរ គឺមានតែការប្រើប្រាស់បញ្ញាសិប្បនិម្មិតប៉ុណ្ណោះ។ មានវិធីពីរយ៉ាងដើម្បីរត់យ៉ាម។
ជួលម៉ាស៊ីនមេនៅក្នុងពពកជាមួយនឹង RAM GPU 200+ Gb ឬកែប្រែកូដ ហើយដំណើរការជាមួយនឹងល្បឿន deepspeed zero offload (នៅពេលដែល GPU ដំណើរការជាបន្តបន្ទាប់នូវផ្នែកនៃ neural network ហើយនៅសល់ត្រូវបានរក្សាទុកក្នុង CPU RAM ឬ NVMe)។ ទីមួយមានតម្លៃថ្លៃណាស់ប្រហែល 2500 រូប្លិ៍ក្នុងមួយម៉ោងឬ 1,7 លានក្នុងមួយខែ។ ទីពីរមិនស្គាល់, ដោយសារតែ លេខកូដនៅក្នុងឃ្លាំងមិនត្រូវបានផ្តល់ឱ្យទេ មានតែ
ការណែនាំនៅក្នុងបញ្ហានៃ ឃ្លាំងប៉ុណ្ណោះ ដែលមិនពិបាកធ្វើ។ ចូរចាប់ផ្តើមសាមញ្ញ។

សេចក្តីណែនាំអំពីការបើកដំណើរការ YaLM 100B

1. យើងជួល RAM GPU 200 GB ជាឧទាហរណ៍នៅទីនេះ

បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។

អ្នកត្រូវការយ៉ាងហោចណាស់ 200 GB នៃអង្គចងចាំវីដេអូសរុប។ 8×40 = 320 GB ។ មាន​តែ​មួយ​នេះ​សម។ តិចជាង 200 គឺមិនអាចទៅរួចទេ ច្រើនទៀតអាចធ្វើទៅបាន។ សញ្ញាព្រួញបង្ហាញពី CPU RAM យើងមិនមើលវាទេ។ នាងអាចជានរណាម្នាក់។

យើងចង្អុលបង្ហាញថាសប្រហែល 300 ជីកាបៃដូច្នេះជាមួយនឹងកន្លែងទំនេរនិងនិយមថាសលឿនព្រោះ។ ទិន្នន័យរាប់សិបជីហ្គាបៃនឹងត្រូវបានផ្ទេរទៅនិងពីវា។

បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។នៅពេលបង្កើតប្រភព សូមជ្រើសរើស Ubuntu ML (Machine Learning)។ នេះជាការចាំបាច់ដើម្បីឱ្យកាតវីដេអូត្រូវបានកំណត់ ហើយមិនចាំបាច់ដំឡើងអ្វីបន្ថែមនោះទេ។

នៅពេលបង្កើតម៉ាស៊ីនមេ មានភាពខុសប្លែកគ្នាជាមួយនឹងកូតា អ្នកអាចមានអារម្មណ៍ថាឧបករណ៍មិនអាចប្រើបាន ប៉ុន្តែតាមពិតអ្នកគ្រាន់តែត្រូវការបង្កើនកូតានៅក្នុងការកំណត់ប៉ុណ្ណោះ។ បន្ទាប់ពីម៉ាស៊ីនមេត្រូវបានធ្វើឱ្យសកម្ម (វាអាចចំណាយពេល 5-10 នាទី) ភ្ជាប់ទៅម៉ាស៊ីនមេតាមរយៈ ssh ឬដោយផ្ទាល់នៅក្នុងកុងសូលបណ្តាញនៅលើទំព័រម៉ាស៊ីនមេ ហើយប្រតិបត្តិពាក្យបញ្ជា។

nvidia-smi

លទ្ធផលគួរតែជាតារាងដែលមានកាតវីដេអូ កំណែកម្មវិធីបញ្ជា និង cuda ។ ប្រហាក់ប្រហែល។
បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។នៅក្នុងបឋមកថាកំណែកម្មវិធីបញ្ជានិងកន្លែងណា។ នៅផ្នែកខាងឆ្វេងគឺជាលេខឧបករណ៍ ហើយនៅចំកណ្តាលគឺជាទំហំនៃអង្គចងចាំឧបករណ៍។ ប្រសិនបើអ្នកមិនមានព័ត៌មាននេះទេ នោះអ្នកបានប្រមូលម៉ាស៊ីនមេពីប្រភពខុស។ Ubuntu ML (Machine Learnong) ត្រូវបានទាមទារ ដូចដែលបានពិពណ៌នាខាងលើ។

2. ក្លូនឃ្លាំងជាមួយ YaLM

sudo git ក្លូន https://github.com/yandex/YaLM-100B/ yalm
cd yalm

ក្លូនទៅថតផ្ទះរបស់អ្នក ដូច្នេះអ្នកមិនចាំបាច់កែសម្រួល docker config បន្ទាប់ពីនោះទេ។ ប្រសិន​បើ​ក្លូន​កន្លែង​ណា​ផ្សេង​ទៀត សូម
​ទៅ​ទី​នេះ ហើយ​បន្ថែម​ផ្លូវ​ទៅ​កន្លែង​ដែល​ក្លូន។

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

វាក៏ប្រហែលមួយម៉ោងដែរ។

ការ hack ជីវិត។ អ្នកអាចទាញយកប៉ុស្តិ៍ត្រួតពិនិត្យ ដំឡើង docker និងបង្កើតកុងតឺន័រនៅលើម៉ាស៊ីនមេដែលមានតំលៃថោកជាមួយនឹងកាតវីដេអូមួយ។ វានឹងដូចគ្នានៅក្នុងពេលវេលាដូច្នេះអ្នកអាចសន្សំបានតិចតួច។ បន្ទាប់ពីដំឡើងនៅលើម៉ាស៊ីនមេថោក យើងលុបវា ហើយបង្កើតម៉ាស៊ីនមេប្រយុទ្ធដោយប្រើថាសពីម៉ាស៊ីនមេថោក។ បន្ទាប់មកអ្នកនឹងមិនចំណាយលើសម៉ោងសម្រាប់ការរង់ចាំការជួបប្រជុំគ្នា និងការបូមចេញពីប៉ុស្តិ៍ត្រួតពិនិត្យនោះទេ។

6. រៀបចំមាតិកា

6.1 ប៉ុស្តិ៍ត្រួតពិនិត្យ

បន្ទាប់​ពី​ការ​ទាញ​យក​ចំណុច​ត្រួតពិនិត្យ​ត្រូវ​បាន​បញ្ចប់ អ្នក​ត្រូវ​ទម្លាក់​វា​ទៅ​ក្នុង​ការ​កំណត់​រចនាសម្ព័ន្ធ។ មានវិធីពីរយ៉ាង ប៉ារ៉ាម៉ែត្រត្រឹមត្រូវ ឬច្រកពិនិត្យផ្ទេរ។ គ្រប់ទីកន្លែងដែលគេរំពឹងថា ប៉ុស្តិ៍ត្រួតពិនិត្យនឹងស្ថិតនៅក្នុងថតសំខាន់នៃគម្រោងរៀងៗខ្លួន អ្វីដែលត្រូវបានទាញយកត្រូវតែផ្ទេរពីថតឯកសារទាញយកខាងលើ។ កំពុងស្ថិតនៅក្នុងថត យ៉ាល ប្រតិបត្តិ

mv ./download/yalm100b_checkpoint ./

ឬផ្លាស់ប្តូរផ្លូវទៅកាន់ឯកសារក្នុងឯកសារឧទាហរណ៍
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 កាតវីដេអូ

យើងពិនិត្យមើលថាកាតវីដេអូត្រូវបានកំណត់ត្រឹមត្រូវ។ ប្រសិនបើអ្នកមានកាតវីដេអូប្រាំបី នោះគ្មានអ្វីត្រូវផ្លាស់ប្តូរទេ។ ប្រសិនបើលេខខុសគ្នា នោះយើងប្តូរបន្ទាត់ទាំងនេះ
បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។នៅក្នុងជួរទីពីរ លេខនៃឧបករណ៍ដែលបានប្រើ (អ្នកអាចមើលពួកវានៅក្នុង nvidia-smi ដែលអ្នកបានបើកដំណើរការរួចហើយ)។ នៅក្នុងទីបួនចំនួនរបស់ពួកគេ។

7. ដំណើរការកុងតឺន័រ docker

ដោយនៅក្នុងថត យ៉ាល ប្រតិបត្តិពាក្យបញ្ជា

sudo bash ./docker/run.sh

ប្រសិនបើអ្វីៗទាំងអស់មិនអីទេ នោះអ្នកនឹងត្រូវយកទៅធុងដែលអ្នកត្រូវចូលទៅកាន់ថតឯកសារ យ៉ាល នៅក្នុងថតផ្ទះរបស់អ្នក។

ស៊ីឌី ~/យ៉ាម

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 ដោយគ្មាន RAM GPU 200Gb?

អ្នកត្រូវបន្ថែម Deepspeed zero offload ទៅក្នុង config។ សម្រាប់អ្នកដែលដឹងពីអ្វីដែលយើងកំពុងនិយាយអំពីវានឹងមានភាពងាយស្រួលក្នុងការធ្វើវា។ សម្រាប់អ្នកផ្សេងទៀត នេះមិនមែនជាកិច្ចការតូចតាចទាល់តែសោះ។ វាជាការសំខាន់ណាស់ដែលត្រូវដឹងថា offload អាចស្ថិតនៅក្នុង CPU RAM ឬ NVMe ។ អ្នកអាចភ្លេចអំពី NVMe នៅពេលនេះ ពីព្រោះ។ ចំនួនទិន្នន័យដ៏ច្រើនកំពុងត្រូវបានដំណើរការ ហើយថាសមិនអាចដោះស្រាយជាមួយវាបានទេ។ Zero offload CPU គឺពិតប្រាកដជាង។ ពិតសម្រាប់នេះអ្នកត្រូវមាន RAM CPU 200+ Gb នៅក្នុងស្តុក ដែលវាមិនថោកទេ។ ហើយអត្ថបទមួយនឹងត្រូវបានបង្កើតប្រហែល 20-40 នាទី ដោយសារវាមិនទាន់អាចធ្វើស្របគ្នានៅលើកាតវីដេអូពីរ។ ដូចដែលអ្នកអាចមើលឃើញនៅក្នុងរូបថតអេក្រង់ខាងក្រោមមានតែកាតវីដេអូមួយប៉ុណ្ណោះដែលត្រូវបានចូលរួមនៅក្នុងជំនាន់ហើយបន្ទាប់មកសម្រាប់តែមួយភាគបួននៃអង្គចងចាំប៉ុណ្ណោះ។ វានៅតែត្រូវបានគេមើលឃើញថាហេតុអ្វីបានជា 24 GB មិនត្រូវបានប្រើ,
បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។ជាការប្រសើរណាស់, នៅក្នុងការសន្និដ្ឋាន, ខ្ញុំនឹងនិយាយថាវាគឺអាចធ្វើទៅបានដើម្បីដំណើរការសូម្បីតែនៅលើ RTX 3070 TI មួយ។ ប៉ុន្តែមិនមានអត្ថន័យពិសេសនៅក្នុងរឿងនេះទេពីព្រោះ NVMe នឹងមិនអនុញ្ញាតឱ្យអ្នកដំណើរការទិន្នន័យ 150 ជីកាបៃយ៉ាងឆាប់រហ័សនៅក្នុងការផ្លាស់ប្តូរដែលមាននៅក្នុងផ្នែកបន្ថែមនៃ RAM ទំហំ 96 GB នោះទេ។
បណ្តាញសរសៃប្រសាទ YaLM 100B នៅក្នុងការអនុវត្ត។

សង្ខេប

ជាការពិត ខ្ញុំនឹងនៅតែព្យាយាមស្វែងរកផ្លូវបើកដំណើរការដ៏ល្អប្រសើរ។ ប៉ុន្តែរហូតមកដល់ពេលនេះខ្ញុំបានសន្និដ្ឋានថា YaLM 100b ថ្លៃពេក / យឺតពេកសម្រាប់ភារកិច្ចរបស់ខ្ញុំ។ សម្រាប់លុយដូចគ្នា មនុស្សនឹងសរសេរច្រើន និងល្អជាង។ ប៉ុន្តែ​ខ្ញុំ​គិត​ថា​វា​ជា​បណ្ដោះ​អាសន្ន យើង​នឹង​ឃើញ។ ប្រសិនបើអ្នកត្រូវការជំនួយក្នុងការបើកដំណើរការ រៀបចំ yalm ឬចង់ឃើញលទ្ធផលនៅលើឧទាហរណ៍បរិបទរបស់អ្នក សូមសរសេរទៅកាន់សំបុត្រ ឬតេឡេក្រាម។

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply