အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။

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

ဇွန်လကုန်တွင်၊ Yandex
သည် YaLM 100B ဟုခေါ်သော ကန့်သတ်ဘောင် ၁၀၀ ဘီလီယံရှိသော အာရုံကြောကွန်ရက်ကို အများပြည်သူသို့ ထုတ်ပြန်ခဲ့သည် ၎င်းသည် အများသူငှာ ဒိုမိန်းတွင် အကြီးဆုံး GPT ကဲ့သို့သော အာရုံကြောကွန်ရက်ဖြစ်သည်။ ၎င်းတို့ သင်ကြားပုံ၊ အကောင်းဆုံး ဥပမာများနှင့် နျူရွန် စွမ်းဆောင်နိုင်မှုတို့ကို ပြသထားသည်။ ဒါပေမယ့် လက်တွေ့မှာ အရမ်းကောင်းပြီး အိမ်မှာသုံးလို့ရလား။ ဆောင်းပါးသည် ဤအကြောင်းကို နှုတ်ဆိတ်နေပါသည်၊ ထို့အပြင်၊ ၎င်းကို run ရန်နှင့် စစ်ဆေးရန်မှာ အလွန်လွယ်ကူသည်မဟုတ်ပေ၊ ခန့်မှန်းခြေအားဖြင့် GPU RAM 200 Gb လိုအပ်ပါသည်။ Habre တွင်
ဤမှတ်ချက် သည်အခြေအနေများကိုအတိကျဆုံးဖော်ပြသည်

Yandex တွင်၊ ထိုကဲ့သို့သော စမတ်ကျသောလူများအားလုံးသည် သာမန်လုပ်နည်းလုပ်နည်းကိုပင် မတင်ခဲ့ကြပါ။ မော်ဒယ်ကြီးများအတွက် api မရှိပါ၊ သာမန်လူများအတွက် အဆင်သင့်လုပ်ထားသော အလတ်စား သို့မဟုတ် သေးငယ်သော မော်ဒယ်လ် (Google Colab တွင်) မရှိပါ။ မော်ဒယ်ကို တပ်ဆင်နည်း၊ စာသားကို ဘယ်လိုဖန်တီးရမလဲဆိုတာနဲ့ ပတ်သက်ပြီး ဥပမာပေးထားတာ မရှိပါဘူး။ ဆောင်းပါးသည် nerds များအတွက် nuances နှစ်ခုကိုညွှန်ပြသည်နှင့်ဒါပါပဲ။ “C” စာလုံးနဲ့ ဘဏ်က ဘယ်လို လုပ်ခဲ့တာကို အနီးကပ် လေ့လာကြည့်ဖို့ လုံလောက်ပါတယ်။ ဒီမော်ဒယ်ဟာ အမှိုက်ပုံးထဲ ပစ်ချရတာ သနားစရာကောင်းတဲ့ မအောင်မြင်တဲ့ စမ်းသပ်မှုတွေထဲက တစ်ခုလို့ ထင်မြင်မိတာကြောင့် Yandex က ဘယ်လို မော်ဒယ်ကောင်းတွေ ဖန်တီးတယ်ဆိုတာကို ပြသဖို့ Open Source မှာ တင်ထားပြီး၊ ထို့အပြင်၊ ၎င်းသည် open source ဖြစ်ပါတယ်။

အင်တာနက်မှာ ယာလံကို ဘယ်လိုသုံးရမလဲ ဒါမှမဟုတ် အွန်လိုင်းမှာတောင် စမ်းကြည့်တဲ့မေးခွန်းတွေ အများကြီးရှိပေမယ့် အဲဒါအတွက် အဖြေမရှိပါဘူး။ ဒီမေးခွန်းတွေကို မေးတဲ့ သုံးစွဲသူတွေထဲမှာ ကျွန်တော်ပါပါတယ်။ ပြီးတော့ အဲဒါကို စဉ်းစားဖို့ ပြင်တယ်။ ငွေရေးကြေးရေး စက်ရုပ်များအတွက် စာသားများကို ဖန်တီးရန် နည်းလမ်းတစ်ခု လိုအပ်နေသောကြောင့် ဖြစ်သည်။ သို့မှသာ ၎င်းတို့သည် တန်ဖိုးများကို ခန့်မှန်းရုံသာမက ငွေကြေးဆိုင်ရာ အစီရင်ခံစာများကို အခြေခံ၍ ၎င်းကို စာသားဖြင့် မှတ်ချက်ပေးနိုင်သည်။ အနှစ်သာရအားဖြင့်၊ ၎င်းသည် ဉာဏ်ရည်တုကို အသုံးပြုခြင်းဖြင့်သာ ဘဏ္ဍာရေးဆိုင်ရာ လေ့လာသုံးသပ်သူများ လုပ်ဆောင်သည့်အရာနှင့် အတူတူပင်ဖြစ်သည်။ ယမ်ပြေးရန် နည်းလမ်းနှစ်မျိုးရှိသည်။
cloud ရှိ ဆာဗာကို ငှားပါ။200+ Gb GPU RAM ဖြင့် သို့မဟုတ် ကုဒ်ကို မွမ်းမံပြီး နက်ရှိုင်းသောအမြန်နှုန်း သုည offload ဖြင့် လုပ်ဆောင်ခြင်း (GPU သည် အာရုံကြောကွန်ရက်၏ အစိတ်အပိုင်းကို စဉ်ဆက်မပြတ် လုပ်ဆောင်ပြီး ကျန်အရာများကို CPU RAM သို့မဟုတ် NVMe တွင် သိမ်းဆည်းထားသည်)။ ပထမတစ်ခုသည်အလွန်စျေးကြီးသည်၊ တစ်နာရီလျှင်ရူဘယ် ၂၅၀၀ သို့မဟုတ်တစ်လလျှင် ၁.၇ သန်းဖြစ်သည်။ ဒုတိယ မသိရှိလို့ repository ရှိကုဒ်ကို ပေးမထားပါ
၊ လုပ်ရန်မခက်ခဲသော repository ပြဿနာအတွက် အရိပ်အမြွက် မျှသာ။ ရိုးရှင်းစွာစတင်ကြပါစို့။

YaLM 100B စတင်ခြင်း လမ်းညွှန်ချက်များ

1. ဥပမာ ဒီမှာ 200 GB GPU RAM ငှား တယ် ။

အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။

စုစုပေါင်း ဗီဒီယိုမမ်မိုရီ 200 GB လိုအပ်ပါသည်။ 8×40 = 320 GB။ ဒီတစ်ခုပဲ အဆင်ပြေတယ်။ 200 ထက်နည်းရင် မဖြစ်နိုင်ဘူး၊ ပိုဖြစ်နိုင်တယ်။ မြှားသည် CPU RAM ကိုညွှန်ပြသည်၊ ကျွန်ုပ်တို့က၎င်းကိုမကြည့်ပါ။ သူမသည်မည်သူမဆိုဖြစ်နိုင်သည်။

ကျွန်ုပ်တို့သည် 300 GB ခန့်ရှိသောဒစ်ကိုညွှန်ပြသောကြောင့်၊ အားလပ်ချိန်နှင့်ပိုကောင်းသည်မှာအမြန်ဒစ်ဖြစ်သောကြောင့်ဖြစ်သည်။ ဒေတာဆယ်ဂဏန်း ဂစ်ဂါဗိုက်ကို ၎င်းသို့ လွှဲပြောင်းပေးမည်ဖြစ်သည်။

အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။အရင်းအမြစ်များတွင် ဖန်တီးသည့်အခါ Ubuntu ML (Machine Learning) ကို ရွေးပါ။ ဗီဒီယိုကတ်များကို configure လုပ်ထားပြီး မည်သည့်အရာမှ ထပ်လောင်းထည့်ရန်မလိုအပ်ပါ။

ဆာဗာတစ်ခုဖန်တီးသောအခါတွင်၊ ခွဲတမ်းများနှင့် ကွဲလွဲမှုများရှိသည်၊ စက်ပစ္စည်းသည် မရနိုင်ဟု ခံစားရနိုင်သည်၊ သို့သော် တကယ်တမ်းတွင် သင်သည် ဆက်တင်များတွင် ခွဲတမ်းများကို တိုးရန်သာလိုသည်။ ဆာဗာကို အသက်သွင်းပြီးနောက် (၅-၁၀ မိနစ်ခန့် ကြာနိုင်သည်)၊ ssh မှတစ်ဆင့် ဆာဗာသို့ သို့မဟုတ် ဆာဗာစာမျက်နှာရှိ ဝဘ်ကွန်ဆိုးလ်တွင် တိုက်ရိုက်ချိတ်ဆက်ပြီး အမိန့်ကို လုပ်ဆောင်ပါ။

nvidia-smi

ရလဒ်သည် ဗီဒီယိုကတ်များ၊ ယာဉ်မောင်းဗားရှင်းနှင့် cuda ပါသည့် ဇယားဖြစ်သင့်သည်။ အကြမ်းဖျင်း ကြိုက်တယ်။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။driver version header မှာ ဘယ်မှာလဲ။ ဘယ်ဘက်ခြမ်းတွင် စက်ပစ္စည်းနံပါတ်များ၊ အလယ်တွင် စက်ပစ္စည်းမမ်မိုရီ၏အရွယ်အစားဖြစ်သည်။ သင့်တွင် ဤအချက်အလက်မရှိပါက၊ သင်သည် မှားယွင်းသောအရင်းအမြစ်မှ ဆာဗာကို စုဆောင်းပြီးဖြစ်သည်။ အထက်တွင်ဖော်ပြထားသည့်အတိုင်း Ubuntu ML (Machine Learnong) လိုအပ်ပါသည်။

2. YaLM ဖြင့် repository ကို Clone လုပ်ပါ။

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

ထို့နောက်တွင် docker config ကို တည်းဖြတ်ရန် မလိုအပ်ဘဲ သင့် home folder သို့ ကူးထည့်ပါ။ အခြားတစ်နေရာတွင် cloned
လုပ်ပါက ဤနေရာသို့သွား၍ cloned သည့်နေရာတွင်လမ်းကြောင်းကိုထည့်ပါ။

3. စစ်ဆေးရေးဂိတ်များကို ဒေါင်းလုဒ်လုပ်ပါ (အခြေခံမော်ဒယ်လေ့ကျင့်ရေးအချက်အလက်)

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

ဒါက တစ်နာရီခန့် ကြာပါလိမ့်မယ်။ အချိန်ကို အချည်းနှီးမဖြုန်းမိစေရန်အတွက်၊ ကျွန်ုပ်တို့သည် ssh ချိတ်ဆက်မှုအသစ်တစ်ခုကို ဖန်တီးပြီး အပြိုင် docker container တစ်ခုကို စတင်တည်ဆောက်ပါသည်။

4. nvidiadocker 2 ကို install လုပ်ပါ။

ပုံမှန် 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 တပ်ဆင်ခြင်းနှင့် ဗီဒီယိုကတ်တစ်ခုပါရှိသော ဈေးပေါသော ဆာဗာပေါ်တွင် ကွန်တိန်နာတစ်ခုကို တည်ဆောက်နိုင်သည်။ အချိန်တန်ရင် အတူတူပဲမို့ နည်းနည်း သက်သာနိုင်ပါတယ်။ စျေးပေါသောဆာဗာတွင် တပ်ဆင်ပြီးနောက်၊ ကျွန်ုပ်တို့သည် ၎င်းကိုဖျက်လိုက်ပြီး စျေးပေါသောဆာဗာမှ disk ကိုအသုံးပြုကာ တိုက်ခိုက်ရေးဆာဗာတစ်ခုကို ဖန်တီးပါ။ ထို့နောက် စည်းဝေးပွဲစောင့်ဆိုင်းခြင်းနှင့် စစ်ဆေးရေးဂိတ်များ ချပေးခြင်းအတွက် အချိန်ပိုပေးမည်မဟုတ်ပါ။

6. အကြောင်းအရာကို ပြင်ဆင်ပါ။

6.1 စစ်ဆေးရေးဂိတ်များ

စစ်ဆေးရေးဂိတ်များကို ဒေါင်းလုဒ်လုပ်ပြီးနောက်၊ ၎င်းတို့ကို configs ထဲသို့ လွှဲပေးရပါမည်။ မှန်ကန်သော ကန့်သတ်ချက်များ သို့မဟုတ် စစ်ဆေးရေးဂိတ်များကို လွှဲပြောင်းရန် နည်းလမ်းနှစ်ခုရှိသည်။ နေရာတိုင်းတွင် စစ်ဆေးရေးဂိတ်များသည် ပရောဂျက်၏ ပင်မလမ်းညွှန်တွင် ရှိနေမည်ဟု မျှော်လင့်ရပြီး၊ ဒေါင်းလုဒ်လုပ်ထားသည့်အရာကို အထက်ဒေါင်းလုဒ်ဖိုင်တွဲမှ လွှဲပြောင်းပေးရမည်ဖြစ်သည်။ သာသနာတော်ဖိုလ်၌ ဖြစ်ခြင်း အပြစ်ဒဏ်

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 container ကို run ပါ။

yalm ဖိုဒါတွင်ရှိနေသည့် command ကို execute လုပ်ပါ။

sudo bash ./docker/run.sh

အားလုံးအဆင်ပြေပါက၊ သင်၏ home directory ရှိ yalm folder သို့သွားရန်လိုအပ်သည့် container တစ်ခုသို့ ခေါ်ဆောင်သွားမည်ဖြစ်ပါသည်။

cd ~/yalm

8. YaLM 100B မှ နမူနာကို Run ပါ။

ဥပမာများထဲမှ တစ်ခုကို စတင်ရန် အဆင်သင့်ဖြစ်နေပါပြီ။ ၎င်းတို့ကို
ဤနေရာတွင် ဖော်ပြထားပါသည် ။

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

စိတ်ရှည်သည်းခံပါ၊ GPT မော်ဒယ်ကို ဖန်တီးပြီး စစ်ဆေးရေးဂိတ်များမှ အလေးချိန်များ တင်ဆောင်သည်အထိ နောက်ထပ် 10-15 မိနစ် စောင့်ရန် ကျန်ရှိနေပါသည်။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။

တည်ဆောက်မှုပြီးသောအခါ၊ MegatronML သည် သင့်အား စာသားထုတ်လုပ်ရန် အကြောင်းအရာတစ်ခုကို ထည့်သွင်းရန် တောင်းဆိုလိမ့်မည်။ စာရိုက်တဲ့အခါ သတိထားပါ။ အချို့သောအခြေအနေများတွင်၊ အမှားအယွင်းတစ်ခုဖြစ်ပေါ်သည်၊ ပရိုဂရမ်ပျက်သွားသည်နှင့်သင်ပြန်လည်စုစည်းမှုကိုပြန်လည်စတင်ရန်လိုအပ်သည်။ ထို့ကြောင့်၊ ဖိုင်တစ်ခုမှ စာသားယူသည့် ဥပမာများကို သုံးခြင်းသည် ပိုကောင်းသည်။

9. အလုပ်၏ရလဒ်များ

အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။စိတ်ဝင်စားစရာ ကောင်းလှပါတယ်။ ဟုတ်ပါတယ်၊ ဒါတွေက နမူနာကောင်းတွေချည်းပါပဲ။ မတူညီသောနမူနာများပေါ်တွင် စမ်းသပ်မှုကို လုပ်ဆောင်ခဲ့သည်။ မျှော်လင့်ထားသည့်အတိုင်း၊ အကြောင်းအရာပိုကောင်းလေ၊ ပိုမိုအဓိပ္ပာယ်ရှိသော စာသားကို ထုတ်ပေးလိမ့်မည်။ စမ်းသပ်မျိုးဆက်များ အစုံအလင်ကို လင့်ခ်များတွင် ကြည့်ရှုနိုင်သည်-

စျေးနှုန်းအတွက်၊ လေ့ကျင့်ရေးမှနှင့်ပြင်ဆင်မှုမှမျိုးဆက်တစ်ခုအထိအမျိုးမျိုးသောစွမ်းရည်ရှိသောဆာဗာများကိုငှားရန်ငါ့ကိုရူဘယ် ၉ဝဝဝ ခန့်ကုန်ကျသည်။ စိတ်ပျက်စရာတစ်ခုကတော့ အရာအားလုံးကို သင်ချက်ချင်းမဖန်တီးနိုင်လို့ပါ။ စတင်ရန် အချိန်ကြာမြင့်ပြီး တစ်နာရီလျှင် ဆာဗာ၏ ကုန်ကျစရိတ်ကြောင့် ကျွန်ုပ်တို့ အလိုရှိသည့်အတိုင်း စာသားကို မထုတ်ပေးနိုင်ပါ။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။ 

200Gb GPU RAM မပါဘဲ YaLM ကိုဘယ်လို run မလဲ။

သင်သည် config သို့ deepspeed zero offload ကိုထည့်ရန်လိုအပ်သည်။ ကျွန်တော်ပြောနေတာတွေကို သိတဲ့သူတွေအတွက်တော့ လုပ်ရတာ အရမ်းလွယ်ပါလိမ့်မယ်။ အခြားသူများအတွက်၊ ဤအရာသည် အသေးအဖွဲအလုပ်မဟုတ်ပေ။ offload သည် CPU RAM သို့မဟုတ် NVMe တွင် ဖြစ်နိုင်ကြောင်း သိရန် အရေးကြီးသည်။ အဘယ်ကြောင့်ဆိုသော် လောလောဆယ်တွင် NVMe ကို မေ့သွားနိုင်သည်။ အလွန်ကြီးမားသောဒေတာပမာဏကိုလုပ်ဆောင်နေပြီး disk သည် ၎င်းကိုမကိုင်တွယ်နိုင်ပါ။ Zero offload CPU က ပိုမှန်ကန်ပါတယ်။ မှန်ပါတယ်၊ အဲဒါအတွက် သင့်မှာ 200+ Gb CPU RAM ရှိဖို့ လိုပါတယ်၊ ဒါကလည်း ဈေးမကြီးပါဘူး။ ဗီဒီယိုကတ်နှစ်ခုတွင် ၎င်းကို အပြိုင်မယှဉ်နိုင်သေးသောကြောင့် စာသားတစ်ခုသည် မိနစ် 20 မှ 40 ခန့်အထိ ထုတ်ပေးမည်ဖြစ်သည်။ အောက်ဖော်ပြပါ ဖန်သားပြင်ဓာတ်ပုံတွင် သင်တွေ့မြင်ရသည့်အတိုင်း၊ မျိုးဆက်တွင် ဗီဒီယိုကတ်တစ်ခုသာ ပါဝင်ခဲ့ပြီး ၎င်းနောက် မမ်မိုရီ၏ လေးပုံတစ်ပုံအတွက်သာ ဖြစ်သည်။ 24 GB အားလုံးကို ဘာကြောင့် အသုံးမပြုရလဲဆိုတာ စောင့်ကြည့်ရဦးမှာပါ။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။ကောင်းပြီ၊ နိဂုံးချုပ်အားဖြင့်၊ RTX 3070 TI တစ်ခုတည်းတွင်ပင် run နိုင်သည်ဟုငါပြောလိမ့်မည်။ သို့သော် ဤအရာတွင် အဓိပ္ပါယ်မရှိသောကြောင့် ဖြစ်သည်။ NVMe သည် သင့်အား 96 GB RAM ၏ နောက်ဆက်တွဲတွင်ပါရှိသော လဲလှယ်မှုတွင် ဒေတာ 150 GB ကို လျင်မြန်စွာ လုပ်ဆောင်ခွင့်မပြုပါ။
အာရုံကြောကွန်ရက် YaLM 100B ကို လက်တွေ့လုပ်ဆောင်ပါ။

အနှစ်ချုပ်

ဟုတ်ပါတယ်၊ အကောင်းဆုံး လွှတ်တင်ရေးလမ်းကြောင်းတွေကို ရှာဖို့ ကြိုးစားနေပါသေးတယ်။ ဒါပေမယ့် YaLM 100b က ငါ့အလုပ်တွေအတွက် အရမ်းစျေးကြီးတယ်/ နှေးကွေးလွန်းတယ်လို့ အခုထိ ကောက်ချက်ချနိုင်ပါပြီ။ တူညီသောငွေအတွက်၊ လူတွေကအများကြီးပိုကောင်းအများကြီးရေးပါလိမ့်မယ်။ ဒါပေမယ့် အဲဒါက ယာယီပဲလို့ ကျွန်တော်ထင်ပါတယ်။ လွှင့်တင်ရန်၊ ဆားကိုထည့်သွင်းခြင်း သို့မဟုတ် သင့်ဆက်စပ်နမူနာများတွင် ရလဒ်များကို မြင်လိုလျှင် မေးလ် သို့မဟုတ် ကြေးနန်းစာသို့ စာရေးပါ။

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply