ចម្លើយខ្លី៖ ប្រើ NVIDIA GPUs សម្រាប់ការហ្វឹកហាត់ AI ដោយបញ្ជាក់ជាមុនថាកម្មវិធីបញ្ជា និង GPU អាចមើលឃើញជាមួយ nvidia-smi បន្ទាប់មកដំឡើង framework/CUDA stack ដែលឆបគ្នា ហើយដំណើរការការធ្វើតេស្ត "model + batch on cuda" តូចមួយ។ ប្រសិនបើអ្នកមានបញ្ហា out-of-memory សូមកាត់បន្ថយទំហំ batch ហើយប្រើភាពជាក់លាក់ចម្រុះ ខណៈពេលកំពុងត្រួតពិនិត្យការប្រើប្រាស់ អង្គចងចាំ និងសីតុណ្ហភាព។
ចំណុចសំខាន់ៗ៖
ការត្រួតពិនិត្យមូលដ្ឋាន ៖ ចាប់ផ្តើមជាមួយ nvidia-smi ; ជួសជុលភាពមើលឃើញរបស់កម្មវិធីបញ្ជា មុនពេលអ្នកដំឡើង frameworks។
ភាពឆបគ្នានៃ Stack ៖ រក្សាកម្មវិធីបញ្ជា, ពេលវេលាដំណើរការ CUDA និងកំណែ framework ឱ្យស្របគ្នា ដើម្បីការពារការគាំង និងការដំឡើងដែលមិនស្ថិតស្ថេរ។
ជោគជ័យតិចតួច ៖ បញ្ជាក់ថាការបញ្ជូនបន្តតែមួយដំណើរការលើ CUDA មុនពេលអ្នកពង្រីកការពិសោធន៍។
វិន័យ VRAM ៖ ពឹងផ្អែកលើភាពជាក់លាក់ចម្រុះ ការប្រមូលផ្តុំជម្រាល និងការត្រួតពិនិត្យដើម្បីឱ្យសមនឹងម៉ូដែលធំៗ។
ទម្លាប់ត្រួតពិនិត្យ ៖ តាមដានការប្រើប្រាស់ លំនាំអង្គចងចាំ ថាមពល និងសីតុណ្ហភាព ដើម្បីឱ្យអ្នករកឃើញចំណុចកកស្ទះបានទាន់ពេលវេលា។

អត្ថបទដែលអ្នកប្រហែលជាចង់អានបន្ទាប់ពីអត្ថបទនេះ៖
🔗 របៀបបង្កើតភ្នាក់ងារ AI
រចនាលំហូរការងារ ឧបករណ៍ អង្គចងចាំ និងឧបករណ៍ការពារសុវត្ថិភាពរបស់ភ្នាក់ងារអ្នក។.
🔗 របៀបដាក់ពង្រាយគំរូ AI
រៀបចំបរិស្ថាន ម៉ូដែលកញ្ចប់ និងដឹកជញ្ជូនទៅផលិតកម្មប្រកបដោយភាពជឿជាក់។.
🔗 របៀបវាស់ស្ទង់សមត្ថភាព AI
ជ្រើសរើសម៉ែត្រិច ដំណើរការការវាយតម្លៃ និងតាមដានការអនុវត្តតាមពេលវេលា។.
🔗 របៀបធ្វើស្វ័យប្រវត្តិកម្មកិច្ចការជាមួយ AI
ធ្វើស្វ័យប្រវត្តិកម្មការងារដដែលៗជាមួយនឹងការជំរុញ លំហូរការងារ និងការរួមបញ្ចូល។.
១) រូបភាពធំ - អ្វីដែលអ្នកកំពុងធ្វើនៅពេលអ្នក "ហ្វឹកហាត់លើ GPU" 🧠⚡
នៅពេលអ្នកហ្វឹកហាត់គំរូ AI អ្នកភាគច្រើនកំពុងធ្វើការគណនាម៉ាទ្រីសជាច្រើនភ្នំ។ GPU ត្រូវបានបង្កើតឡើងសម្រាប់ការងារប៉ារ៉ាឡែលប្រភេទនោះ ដូច្នេះក្របខ័ណ្ឌដូចជា PyTorch, TensorFlow និង JAX អាចផ្ទេរបន្ទុកធ្ងន់ទៅ GPU បាន។ ( ឯកសារ PyTorch CUDA , ការដំឡើង TensorFlow (pip) , JAX Quickstart )
នៅក្នុងការអនុវត្តជាក់ស្តែង “ការប្រើប្រាស់ NVIDIA GPUs សម្រាប់ការបណ្តុះបណ្តាល” ជាធម្មតាមានន័យថា៖
-
ប៉ារ៉ាម៉ែត្រម៉ូដែលរបស់អ្នកភាគច្រើនស្ថិតនៅក្នុង GPU VRAM
-
បាច់របស់អ្នកត្រូវបានផ្លាស់ទីពី RAM ទៅ VRAM រៀងរាល់ជំហាន
-
ការបញ្ជូនបន្ត និង backprop របស់អ្នកដំណើរការលើខឺណែល CUDA ( មគ្គុទ្ទេសក៍សរសេរកម្មវិធី CUDA )
-
ការអាប់ដេតឧបករណ៍បង្កើនប្រសិទ្ធភាពរបស់អ្នកកើតឡើងលើ GPU (តាមឧត្ដមគតិ)
-
អ្នកតាមដានសីតុណ្ហភាព អង្គចងចាំ ការប្រើប្រាស់ ដូច្នេះអ្នកមិនចម្អិនអ្វីទាំងអស់ 🔥 ( ឯកសារ NVIDIA nvidia-smi )
ប្រសិនបើវាស្តាប់ទៅដូចជាច្រើន កុំបារម្ភ។ វាភាគច្រើនជាបញ្ជីត្រួតពិនិត្យ និងទម្លាប់មួយចំនួនដែលអ្នកបង្កើតតាមពេលវេលា។.
2) អ្វីដែលធ្វើឱ្យកំណែល្អនៃការរៀបចំការបណ្តុះបណ្តាល AI NVIDIA GPU 🤌
នេះគឺជាផ្នែក "កុំសាងសង់ផ្ទះលើចាហួយ"។ ការរៀបចំដ៏ល្អសម្រាប់ របៀបប្រើ GPU NVIDIA សម្រាប់ការបណ្តុះបណ្តាល AI គឺជាការរៀបចំដែលមានភាពរអាក់រអួលទាប។ ភាពរអាក់រអួលទាបគឺមានស្ថេរភាព។ ស្ថេរភាពគឺលឿន។ លឿនគឺ... លឿន 😄
ការរៀបចំការបណ្តុះបណ្តាលដ៏រឹងមាំជាធម្មតាមាន៖
-
VRAM គ្រប់គ្រាន់ សម្រាប់ទំហំបាច់ + ម៉ូដែល + ស្ថានភាពបង្កើនប្រសិទ្ធភាពរបស់អ្នក
-
VRAM គឺដូចជាកន្លែងដាក់វ៉ាលីអញ្ចឹង។ អ្នកអាចវេចខ្ចប់របស់របរបានយ៉ាងឆ្លាតវៃជាងមុន ប៉ុន្តែអ្នកមិនអាចវេចខ្ចប់របស់របរបានច្រើនគ្មានដែនកំណត់នោះទេ។.
-
-
ជង់កម្មវិធីដែលត្រូវគ្នា (កម្មវិធីបញ្ជា + ពេលដំណើរការ CUDA + ភាពឆបគ្នានៃក្របខ័ណ្ឌ) ( PyTorch Get Started (ឧបករណ៍ជ្រើសរើស CUDA) , ការដំឡើង TensorFlow (pip) )
-
ការផ្ទុកទិន្នន័យលឿន (NVMe ជួយបានច្រើនសម្រាប់សំណុំទិន្នន័យធំៗ)
-
ស៊ីភីយូ + រ៉េម ល្អ ដូច្នេះការផ្ទុកទិន្នន័យមិនធ្វើឱ្យ GPU អស់កម្លាំងទេ ( មគ្គុទ្ទេសក៍លៃតម្រូវដំណើរការ PyTorch )
-
ម៉ាស៊ីនត្រជាក់ និង ថាមពលខ្លាំង (មើលស្រាលរហូតដល់វាមិនមែន 😬)
-
បរិស្ថានដែលអាចបង្កើតឡើងវិញបាន (venv/conda ឬកុងតឺន័រ) ដូច្នេះការធ្វើឱ្យប្រសើរឡើងមិនក្លាយជាភាពវឹកវរទេ ( ទិដ្ឋភាពទូទៅនៃ NVIDIA Container Toolkit )
ហើយមានរឿងមួយទៀតដែលមនុស្សមើលរំលង៖
-
ទម្លាប់ត្រួតពិនិត្យ - អ្នកពិនិត្យមើលអង្គចងចាំ GPU និងការប្រើប្រាស់ដូចជាអ្នកពិនិត្យមើលកញ្ចក់ពេលកំពុងបើកបរ។ ( ឯកសារ NVIDIA nvidia-smi )
៣) តារាងប្រៀបធៀប - វិធីពេញនិយមក្នុងការហ្វឹកហាត់ជាមួយ NVIDIA GPUs (ជាមួយនឹងភាពចម្លែក) 📊
ខាងក្រោមនេះគឺជាសន្លឹកបន្លំរហ័ស "មួយណាសមនឹង?"។ តម្លៃគឺប្រហាក់ប្រហែល (ពីព្រោះការពិតប្រែប្រួល) ហើយបាទ/ចាស៎ មួយក្នុងចំណោមកោសិកាទាំងនេះគឺមានភាពរញ៉េរញ៉ៃបន្តិច ដោយចេតនា។.
| ឧបករណ៍ / វិធីសាស្រ្ត | ល្អបំផុតសម្រាប់ | តម្លៃ | ហេតុអ្វីបានជាវាដំណើរការ (ភាគច្រើន) |
|---|---|---|---|
| PyTorch (វ៉ានីឡា) PyTorch | មនុស្សភាគច្រើន គម្រោងភាគច្រើន | ឥតគិតថ្លៃ | អាចបត់បែនបាន ប្រព័ន្ធអេកូឡូស៊ីដ៏ធំ ងាយស្រួលបំបាត់កំហុស - មនុស្សគ្រប់គ្នាក៏មានមតិដែរ |
| ឯកសារ PyTorch Lightning | ក្រុម, ការបណ្តុះបណ្តាលដែលមានរចនាសម្ព័ន្ធ | ឥតគិតថ្លៃ | កាត់បន្ថយរចនាសម្ព័ន្ធថ្មី រង្វិលជុំស្អាតជាងមុន; ពេលខ្លះមានអារម្មណ៍ដូចជា "វេទមន្ត" រហូតដល់វាមិនដូច្នោះទេ |
| ឯកសារបណ្តុះបណ្តាលសម្រាប់ Hugging Face Transformers + Trainer | ការលៃតម្រូវ NLP + LLM | ឥតគិតថ្លៃ | ការហ្វឹកហាត់ដែលរួមបញ្ចូលថ្ម លំនាំដើមដ៏អស្ចារ្យ ជ័យជម្នះរហ័ស 👍 |
| ឯកសារ បង្កើន | ពហុ GPU ដោយគ្មានការឈឺចាប់ | ឥតគិតថ្លៃ | ធ្វើឱ្យ DDP មិនសូវរំខាន ល្អសម្រាប់ធ្វើមាត្រដ្ឋានដោយមិនចាំបាច់សរសេរឡើងវិញទាំងអស់ |
| DeepSpeed ZeRO | ម៉ូដែលធំៗ ល្បិចចងចាំ | ឥតគិតថ្លៃ | ZeRO, ការផ្ទេរបន្ទុក, ការធ្វើមាត្រដ្ឋាន - អាចមានភាពរញ៉េរញ៉ៃ ប៉ុន្តែពេញចិត្តនៅពេលដែលវាចុច។ |
| TensorFlow + Keras TF | បំពង់ផលិតកម្ម | ឥតគិតថ្លៃ | ឧបករណ៍រឹងមាំ រឿងរ៉ាវដាក់ពង្រាយល្អ មនុស្សមួយចំនួនចូលចិត្តវា អ្នកខ្លះទៀតមិនចូលចិត្តវាដោយស្ងាត់ៗ |
| JAX + Flax ការចាប់ផ្តើមរហ័ស JAX / ឯកសារ Flax | ការស្រាវជ្រាវ + អ្នកញៀនល្បឿន | ឥតគិតថ្លៃ | ការចងក្រង XLA អាចលឿនមិនគួរឱ្យជឿ ប៉ុន្តែការបំបាត់កំហុសអាចមានអារម្មណ៍…អរូបី |
| របស់ NVIDIA NeMo NeMo | លំហូរការងារនិយាយ + LLM | ឥតគិតថ្លៃ | ជង់ដែលបានធ្វើឱ្យប្រសើរឡើងដោយ NVIDIA រូបមន្តល្អៗ - មានអារម្មណ៍ដូចជាចម្អិនជាមួយឡដ៏ប្រណិត 🍳 |
| ទិដ្ឋភាពទូទៅនៃឧបករណ៍ Docker + NVIDIA Container Toolkit | បរិស្ថានដែលអាចបង្កើតឡើងវិញបាន | ឥតគិតថ្លៃ | “ដំណើរការលើម៉ាស៊ីនរបស់ខ្ញុំ” ក្លាយជា “ដំណើរការលើម៉ាស៊ីនរបស់យើង” (ភាគច្រើន ម្តងទៀត) |
៤) ជំហានទីមួយ - បញ្ជាក់ថា GPU របស់អ្នកត្រូវបានគេមើលឃើញត្រឹមត្រូវ 🕵️♂️
មុនពេលអ្នកដំឡើងរបស់របររាប់សិប សូមផ្ទៀងផ្ទាត់មូលដ្ឋានគ្រឹះ។.
រឿងដែលអ្នកចង់ក្លាយជាការពិត៖
-
ម៉ាស៊ីនមើលឃើញ GPU
-
កម្មវិធីបញ្ជា NVIDIA ត្រូវបានដំឡើងយ៉ាងត្រឹមត្រូវ
-
GPU មិនជាប់គាំងធ្វើអ្វីផ្សេងទៀតទេ
-
អាចសាកសួរបានដោយទំនុកចិត្ត
ការត្រួតពិនិត្យបុរាណគឺ៖
-
nvidia-smi( ឯកសារ NVIDIA nvidia-smi )
អ្វីដែលអ្នកកំពុងស្វែងរក៖
-
ឈ្មោះ GPU (ឧ. RTX, A-series ជាដើម)
-
កំណែកម្មវិធីបញ្ជា
-
ការប្រើប្រាស់អង្គចងចាំ
-
ដំណើរការដែលកំពុងដំណើរការ ( ឯកសារ NVIDIA nvidia-smi )
ប្រសិនបើ nvidia-smi បរាជ័យ សូមឈប់ត្រឹមហ្នឹងសិន។ កុំដំឡើង frameworks នៅឡើយអី។ វាដូចជាការព្យាយាមដុតនំប៉័ងនៅពេលដែលឡរបស់អ្នកមិនទាន់ដោតឌុយ។ ( NVIDIA System Management Interface (NVSMI) )
កំណត់ចំណាំតូចមួយរបស់មនុស្ស៖ ពេលខ្លះ nvidia-smi ដំណើរការ ប៉ុន្តែការហ្វឹកហាត់របស់អ្នកនៅតែបរាជ័យ ពីព្រោះ CUDA runtime ដែលប្រើដោយ framework របស់អ្នកមិនត្រូវគ្នានឹងការរំពឹងទុករបស់ driver។ នោះមិនមែនជាការល្ងង់របស់អ្នកទេ។ នោះហើយជា… របៀបដែលវាកើតឡើង 😭 ( PyTorch Get Started (CUDA selector) , TensorFlow install (pip) )
៥) បង្កើតជង់កម្មវិធី - កម្មវិធីបញ្ជា, CUDA, cuDNN និង “របាំភាពឆបគ្នា” 💃
នេះជាកន្លែងដែលមនុស្សខាតពេលវេលាច្រើន។ ល្បិចគឺ៖ ជ្រើសរើសផ្លូវមួយ ហើយប្រកាន់ខ្ជាប់វា ។
ជម្រើស A៖ CUDA ដែលភ្ជាប់មកជាមួយ Framework (ជារឿយៗងាយស្រួលបំផុត)
កម្មវិធី PyTorch ជាច្រើនភ្ជាប់មកជាមួយនឹង CUDA runtime ផ្ទាល់ខ្លួន មានន័យថាអ្នកមិនត្រូវការ CUDA toolkit ពេញលេញដែលបានដំឡើងទូទាំងប្រព័ន្ធនោះទេ។ ភាគច្រើនអ្នកគ្រាន់តែត្រូវការកម្មវិធីបញ្ជា NVIDIA ដែលឆបគ្នា។ ( PyTorch Get Started (CUDA selector) , PyTorch ជំនាន់មុន (កង់ CUDA) )
គុណសម្បត្តិ៖
-
ផ្នែកដែលមានចលនាតិចជាងមុន
-
ការដំឡើងកាន់តែងាយស្រួល
-
អាចបង្កើតឡើងវិញបានកាន់តែច្រើនតាមបរិស្ថាន
គុណវិបត្តិ៖
-
ប្រសិនបើអ្នកលាយបរិស្ថានដោយចៃដន្យ អ្នកអាចនឹងមានការភ័ន្តច្រឡំ
ជម្រើស B៖ ប្រអប់ឧបករណ៍ CUDA ប្រព័ន្ធ (ការគ្រប់គ្រងបន្ថែម)
អ្នកដំឡើង CUDA toolkit នៅលើប្រព័ន្ធ ហើយតម្រឹមអ្វីៗគ្រប់យ៉ាងទៅវា។ ( ឯកសារ CUDA Toolkit )
គុណសម្បត្តិ៖
-
ការគ្រប់គ្រងបន្ថែមសម្រាប់ការសាងសង់ផ្ទាល់ខ្លួន ឧបករណ៍ពិសេសមួយចំនួន
-
ងាយស្រួលសម្រាប់ការចងក្រងប្រតិបត្តិការជាក់លាក់
គុណវិបត្តិ៖
-
វិធីជាច្រើនទៀតដើម្បីផ្គូផ្គងកំណែ ហើយយំដោយស្ងាត់ៗ
cuDNN និង NCCL ទាក់ទងនឹងមនុស្ស
-
cuDNN បង្កើនល្បឿននៃការរៀនស៊ីជម្រៅបឋម (convolutions, RNN bits ។ល។) ( ឯកសារ NVIDIA cuDNN )
-
NCCL គឺជាបណ្ណាល័យ "ទំនាក់ទំនង GPU ទៅ GPU" លឿនសម្រាប់ការបណ្តុះបណ្តាលពហុ GPU ( ទិដ្ឋភាពទូទៅរបស់ NCCL )
ប្រសិនបើអ្នកធ្វើការហ្វឹកហាត់ពហុ GPU NCCL គឺជាមិត្តល្អបំផុតរបស់អ្នក - ហើយជួនកាលជាមិត្តរួមបន្ទប់ដែលមានចរិតឆេវឆាវរបស់អ្នក។ ( ទិដ្ឋភាពទូទៅរបស់ NCCL )
៦) ការហ្វឹកហាត់ GPU លើកដំបូងរបស់អ្នក (គំនិតឧទាហរណ៍ PyTorch) ✅🔥
ដើម្បីអនុវត្តតាម ការណែនាំអំពីរបៀបប្រើប្រាស់ NVIDIA GPU សម្រាប់ការបណ្តុះបណ្តាល AI អ្នកមិនត្រូវការគម្រោងធំដុំជាមុនសិនទេ។ អ្នកត្រូវការភាពជោគជ័យតូចមួយ។
គំនិតស្នូល៖
-
រកឃើញឧបករណ៍
-
ផ្លាស់ទីម៉ូដែលទៅ GPU
-
ផ្លាស់ទី tensor ទៅ GPU
-
បញ្ជាក់ថាការបញ្ជូនបន្តដំណើរការនៅទីនោះ ( ឯកសារ PyTorch CUDA )
រឿងដែលខ្ញុំតែងតែពិនិត្យសុខភាពឲ្យបានដិតដល់ជាមុន៖
-
torch.cuda.is_available()ត្រឡប់True( torch.cuda.is_available ) -
បន្ទាប់ (model.parameters()).deviceបង្ហាញcuda( វេទិកា PyTorch៖ ពិនិត្យមើលម៉ូដែលនៅលើ CUDA ) -
ការបញ្ជូនបន្តជាបាច់តែមួយមិនមានកំហុសទេ
-
អង្គចងចាំ GPU កើនឡើងនៅពេលអ្នកចាប់ផ្តើមហ្វឹកហាត់ (ជាសញ្ញាល្អ!) ( ឯកសារ NVIDIA nvidia-smi )
សំណួរទូទៅដែលសួរថា «ហេតុអ្វីវាយឺត?»
-
កម្មវិធីផ្ទុកទិន្នន័យរបស់អ្នកយឺតពេក (GPU កំពុងរង់ចាំទំនេរ) ( ការណែនាំអំពីការលៃតម្រូវដំណើរការ PyTorch )
-
អ្នកភ្លេចផ្លាស់ទីទិន្នន័យទៅ GPU (អូ៎!)
-
ទំហំបាច់មានទំហំតូច (GPU មិនត្រូវបានប្រើប្រាស់គ្រប់គ្រាន់)
-
អ្នកកំពុងធ្វើការដំណើរការ CPU ជាមុនយ៉ាងច្រើននៅក្នុងជំហានហ្វឹកហាត់
មួយវិញទៀត មែនហើយ GPU របស់អ្នកច្រើនតែមើលទៅ "មិនសូវមមាញឹក" ប្រសិនបើចំណុចកកស្ទះគឺជាទិន្នន័យ។ វាដូចជាការជួលអ្នកបើកបររថយន្តប្រណាំង រួចធ្វើឱ្យពួកគេរង់ចាំចាក់សាំងរាល់ជុំ។.
៧) ហ្គេម VRAM - ទំហំបាច់ ភាពជាក់លាក់ចម្រុះ និងមិនផ្ទុះ 💥🧳
បញ្ហានៃការហ្វឹកហាត់ជាក់ស្តែងភាគច្រើនគឺទាក់ទងនឹងការចងចាំ។ ប្រសិនបើអ្នករៀនជំនាញមួយ ចូររៀនពីការគ្រប់គ្រង VRAM។.
វិធីរហ័សដើម្បីកាត់បន្ថយការប្រើប្រាស់អង្គចងចាំ
-
ភាពជាក់លាក់ចម្រុះ (FP16/BF16)
-
ជាធម្មតាវាក៏បង្កើនល្បឿនខ្លាំងដែរ។ ឈ្នះ-ឈ្នះ 😌 ( ឯកសារ PyTorch AMP , មគ្គុទ្ទេសក៍ភាពជាក់លាក់ចម្រុះ TensorFlow )
-
-
ការប្រមូលផ្តុំជម្រាល
-
ក្លែងធ្វើទំហំបាច់ធំជាងដោយការប្រមូលផ្តុំជម្រាលលើជំហានច្រើន ( ឯកសារបណ្តុះបណ្តាល Transformers (ការប្រមូលផ្តុំជម្រាល, fp16) )
-
-
ប្រវែង/ទំហំកាត់លំដាប់តូចជាង
-
ឃោរឃៅប៉ុន្តែមានប្រសិទ្ធភាព
-
-
ចំណុចត្រួតពិនិត្យការធ្វើឱ្យសកម្ម
-
គណនាពាណិជ្ជកម្មសម្រាប់អង្គចងចាំ (គណនាឡើងវិញនូវការធ្វើឱ្យសកម្មអំឡុងពេលថយក្រោយ) ( torch.utils.checkpoint )
-
-
ប្រើឧបករណ៍បង្កើនប្រសិទ្ធភាពស្រាលជាងមុន
-
ឧបករណ៍បង្កើនប្រសិទ្ធភាពមួយចំនួនរក្សាទុកស្ថានភាពបន្ថែមដែលបំផ្លាញ VRAM
-
សំណួរ “ហេតុអ្វីបានជា VRAM នៅតែពេញបន្ទាប់ពីខ្ញុំឈប់?”
ជារឿយៗ Framework រក្សាទុកអង្គចងចាំ សម្រាប់ដំណើរការ។ នេះជារឿងធម្មតា។ វាមើលទៅគួរឱ្យខ្លាច ប៉ុន្តែវាមិនមែនជាការលេចធ្លាយជានិច្ចនោះទេ។ អ្នករៀនអានគំរូ។ ( PyTorch CUDA semantics: caching allocator )
ទម្លាប់ជាក់ស្តែង៖
-
មើលអង្គចងចាំដែលបានបែងចែកធៀបនឹងអង្គចងចាំដែលបានបម្រុងទុក (ជាក់លាក់លើក្របខ័ណ្ឌ) ( PyTorch CUDA semantics: caching allocator )
-
កុំភ័យស្លន់ស្លោពេលឃើញលេខដំបូង 😅
៨) ធ្វើឱ្យ GPU ដំណើរការបានពិតប្រាកដ - ការលៃតម្រូវដំណើរការដែលសក្តិសមនឹងពេលវេលារបស់អ្នក 🏎️
ការធ្វើឱ្យ "ការបណ្តុះបណ្តាល GPU ដំណើរការ" គឺជាជំហានទីមួយ។ ការធ្វើឱ្យវា លឿន គឺជាជំហានទីពីរ។
ការបង្កើនប្រសិទ្ធភាពផលប៉ះពាល់ខ្ពស់
-
បង្កើនទំហំបាច់ (រហូតដល់វាឈឺចាប់ បន្ទាប់មកថយក្រោយបន្តិច)
-
ប្រើអង្គចងចាំដែលបានខ្ទាស់ នៅក្នុងឧបករណ៍ផ្ទុកទិន្នន័យ (ច្បាប់ចម្លងពីម៉ាស៊ីនទៅឧបករណ៍លឿនជាងមុន) ( មគ្គុទ្ទេសក៍លៃតម្រូវដំណើរការ PyTorch , ការបង្រៀន PyTorch pin_memory/non_blocking )
-
បង្កើនចំនួនកម្មករផ្ទុកទិន្នន័យ (ប្រយ័ត្ន ច្រើនពេកអាចបង្កផលវិបាកវិញ) ( ការណែនាំលៃតម្រូវដំណើរការ PyTorch )
-
ទាញយកបាច់ជាមុន ដើម្បីកុំឲ្យ GPU ទំនេរ
-
ប្រើ fused ops / kernels ដែលបានធ្វើឱ្យប្រសើរ នៅពេលដែលមាន
-
ប្រើភាពជាក់លាក់ចម្រុះ (ម្តងទៀត វាល្អណាស់) ( ឯកសារ PyTorch AMP )
ឧបសគ្គដែលមើលរំលងបំផុត
បំពង់ផ្ទុក និងដំណើរការជាមុនរបស់អ្នក។ ប្រសិនបើសំណុំទិន្នន័យរបស់អ្នកមានទំហំធំ ហើយត្រូវបានរក្សាទុកនៅលើថាសយឺត GPU របស់អ្នកនឹងក្លាយជាឧបករណ៍កម្តៅលំហដ៏ថ្លៃ។ ឧបករណ៍កម្តៅលំហដ៏ទំនើប និងភ្លឺចែងចាំងខ្លាំង។.
មួយវិញទៀត សូមសារភាពបន្តិច៖ ខ្ញុំបាន "ធ្វើឲ្យប្រសើរឡើង" នូវគំរូមួយរយៈពេលមួយម៉ោង ទើបដឹងថាការកត់ត្រាទិន្នន័យគឺជាចំណុចកកស្ទះ។ ការបោះពុម្ពច្រើនពេកអាចធ្វើឲ្យការហ្វឹកហាត់យឺត។ បាទ/ចាស៎ វាអាចទៅរួច។.
៩) ការហ្វឹកហ្វឺន Multi-GPU - DDP, NCCL និងការធ្វើមាត្រដ្ឋានដោយគ្មានភាពវឹកវរ 🧩🤝
នៅពេលដែលអ្នកចង់បានល្បឿនកាន់តែច្រើន ឬម៉ូដែលធំជាងនេះ អ្នកគួរតែប្រើ GPU ច្រើន។ នេះជាកន្លែងដែលអ្វីៗកាន់តែមានភាពទាក់ទាញ។.
វិធីសាស្រ្តទូទៅ
-
ទិន្នន័យប៉ារ៉ាឡែល (DDP)
-
បំបែកបាច់ឆ្លងកាត់ GPUs ធ្វើសមកាលកម្មជម្រាល
-
ជាធម្មតាជម្រើស "ល្អ" លំនាំដើម ( ឯកសារ PyTorch DDP )
-
-
ម៉ូដែលប៉ារ៉ាឡែល / តង់ស័រប៉ារ៉ាឡែល
-
បំបែកម៉ូដែលឆ្លងកាត់ GPU (សម្រាប់ម៉ូដែលធំៗ)
-
-
បំពង់បង្ហូរប្រេងស្របគ្នា
-
បំបែកស្រទាប់គំរូទៅជាដំណាក់កាល (ដូចជាខ្សែសង្វាក់ផ្គុំ ប៉ុន្តែសម្រាប់តង់ស័រ)
-
ប្រសិនបើអ្នកកំពុងចាប់ផ្តើម ការហ្វឹកហាត់បែប DDP គឺជាចំណុចដ៏ល្អបំផុត។ ( ការបង្រៀន PyTorch DDP )
គន្លឹះជាក់ស្តែងសម្រាប់ Multi-GPU
-
ត្រូវប្រាកដថា GPU មានសមត្ថភាពស្រដៀងគ្នា (ការលាយបញ្ចូលគ្នាអាចបង្កបញ្ហា)
-
ការតភ្ជាប់នាឡិកា៖ NVLink ទល់នឹង PCIe មានសារៈសំខាន់សម្រាប់បន្ទុកការងារច្រើនដែលត្រូវធ្វើសមកាលកម្ម ( ទិដ្ឋភាពទូទៅរបស់ NVIDIA NVLink , ឯកសារ NVIDIA NVLink )
-
រក្សាទំហំបាច់នីមួយៗនៃ GPU ឲ្យមានតុល្យភាព
-
កុំមើលរំលង CPU និងអង្គផ្ទុកទិន្នន័យ - ការប្រើប្រាស់ GPU ច្រើនអាចបង្កើនភាពកកស្ទះទិន្នន័យ
ហើយមែនហើយ កំហុស NCCL អាចមានអារម្មណ៍ដូចជាពាក្យស្លោកដែលរុំព័ទ្ធដោយអាថ៌កំបាំងដែលរុំព័ទ្ធដោយ "ហេតុអ្វីឥឡូវនេះ"។ អ្នកមិនត្រូវបានបណ្តាសាទេ។ ប្រហែលជា។ ( ទិដ្ឋភាពទូទៅ NCCL )
១០) ការត្រួតពិនិត្យ និងការវិភាគទម្រង់ - របស់ដែលមិនគួរឱ្យចាប់អារម្មណ៍ដែលជួយសន្សំសំចៃពេលវេលារបស់អ្នក 📈🧯
អ្នកមិនត្រូវការផ្ទាំងគ្រប់គ្រងទំនើបៗដើម្បីចាប់ផ្តើមទេ។ អ្នកត្រូវកត់សម្គាល់នៅពេលដែលមានអ្វីមួយខុសប្រក្រតី។.
សញ្ញាសំខាន់ៗដែលត្រូវមើល
-
ការប្រើប្រាស់ GPU ៖ តើវាខ្ពស់ជាប់លាប់ ឬកើនឡើងខ្លាំង?
-
ការប្រើប្រាស់អង្គចងចាំ ៖ មានស្ថេរភាព កើនឡើង ឬចម្លែក?
-
ការប្រើប្រាស់ថាមពល ៖ ទាបខុសពីធម្មតាអាចមានន័យថាការប្រើប្រាស់មិនគ្រប់គ្រាន់
-
សីតុណ្ហភាព ៖ សីតុណ្ហភាពខ្ពស់ជាប់លាប់អាចធ្វើឱ្យដំណើរការថយចុះ
-
ការប្រើប្រាស់ CPU ៖ បញ្ហាបំពង់ទិន្នន័យបង្ហាញនៅទីនេះ ( ការណែនាំលៃតម្រូវដំណើរការ PyTorch )
ការវិភាគផ្នត់គំនិត (កំណែសាមញ្ញ)
-
ប្រសិនបើ GPU មានការប្រើប្រាស់ទាប - ទិន្នន័យ ឬបញ្ហាកកស្ទះ CPU
-
ប្រសិនបើ GPU ខ្ពស់ ប៉ុន្តែយឺត - ភាពមិនមានប្រសិទ្ធភាពនៃខឺណែល ភាពជាក់លាក់ ឬស្ថាបត្យកម្មគំរូ
-
ប្រសិនបើល្បឿនហ្វឹកហាត់ធ្លាក់ចុះដោយចៃដន្យ - ការបិទបើកដោយកម្ដៅ ដំណើរការផ្ទៃខាងក្រោយ បញ្ហា I/O
ខ្ញុំដឹងហើយថា ការតាមដានស្តាប់ទៅដូចជាមិនសប្បាយទេ។ ប៉ុន្តែវាដូចជាការដុសសម្អាតធ្មេញអញ្ចឹង។ វារំខានណាស់ បន្ទាប់មកភ្លាមៗនោះជីវិតរបស់អ្នកក៏ប្រសើរឡើង។.
១១) ការដោះស្រាយបញ្ហា - ជនសង្ស័យធម្មតា (និងជនសង្ស័យដែលមិនសូវស្គាល់) 🧰😵💫
ផ្នែកនេះជាទូទៅគឺ៖ «បញ្ហាប្រាំដូចគ្នា ជារៀងរហូត»។
បញ្ហា៖ CUDA អស់អង្គចងចាំ
ការជួសជុល៖
-
កាត់បន្ថយទំហំបាច់
-
ប្រើភាពជាក់លាក់ចម្រុះ ( ឯកសារ PyTorch AMP , មគ្គុទ្ទេសក៍ភាពជាក់លាក់ចម្រុះ TensorFlow )
-
ការប្រមូលផ្តុំជម្រាល ( ឯកសារបណ្តុះបណ្តាល Transformers (ការប្រមូលផ្តុំជម្រាល, fp16) )
-
ការធ្វើឱ្យចំណុចត្រួតពិនិត្យសកម្ម ( torch.utils.checkpoint )
-
បិទដំណើរការ GPU ផ្សេងទៀត
បញ្ហា៖ ការហ្វឹកហាត់ដំណើរការលើ CPU ដោយចៃដន្យ
ការជួសជុល៖
-
ធានាថាម៉ូដែលត្រូវបានផ្លាស់ទីទៅ
Cuda -
ធានាថា tensors ត្រូវបានផ្លាស់ទីទៅ
cuda -
ពិនិត្យមើលការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ក្របខ័ណ្ឌ ( ឯកសារ PyTorch CUDA )
បញ្ហា៖ ការគាំងចម្លែក ឬការចូលប្រើអង្គចងចាំខុសច្បាប់
ការជួសជុល៖
-
បញ្ជាក់ភាពឆបគ្នានៃកម្មវិធីបញ្ជា + ពេលដំណើរការ ( PyTorch Get Started (ឧបករណ៍ជ្រើសរើស CUDA) , ការដំឡើង TensorFlow (pip) )
-
សាកល្បងបរិស្ថានស្អាត
-
កាត់បន្ថយប្រតិបត្តិការផ្ទាល់ខ្លួន
-
ដំណើរការឡើងវិញជាមួយនឹងការកំណត់បែបកំណត់ដើម្បីបង្កើតឡើងវិញ
បញ្ហា៖ យឺតជាងការរំពឹងទុក
ការជួសជុល៖
-
ពិនិត្យមើលអត្រាដំណើរការរបស់ឧបករណ៍ផ្ទុកទិន្នន័យ ( មគ្គុទ្ទេសក៍លៃតម្រូវដំណើរការ PyTorch )
-
បង្កើនទំហំបាច់
-
កាត់បន្ថយការកាប់ឈើ
-
បើកភាពជាក់លាក់ចម្រុះ ( ឯកសារ PyTorch AMP )
-
ការបែងចែកជំហានពេលវេលាប្រវត្តិរូប
បញ្ហា៖ កាតក្រាហ្វិកច្រើនជាប់គាំង
ការជួសជុល៖
-
បញ្ជាក់ការកំណត់ backend ត្រឹមត្រូវ ( ឯកសារចែកចាយ PyTorch )
-
ពិនិត្យមើលការកំណត់រចនាសម្ព័ន្ធបរិស្ថាន NCCL (ប្រយ័ត្ន) ( ទិដ្ឋភាពទូទៅ NCCL )
-
សាកល្បង GPU តែមួយជាមុនសិន
-
ត្រូវប្រាកដថាបណ្តាញ / ការតភ្ជាប់គ្នាមានសុខភាពល្អ
កំណត់ចំណាំតូចមួយសម្រាប់រំលឹកឡើងវិញ៖ ពេលខ្លះការជួសជុលគឺពិតជាការចាប់ផ្ដើមកុំព្យូទ័រឡើងវិញ។ វាមានអារម្មណ៍មិនសមហេតុផល។ វាដំណើរការ។ កុំព្យូទ័រគឺដូច្នោះ។.
១២) តម្លៃ និងភាពងាយស្រួល - ការជ្រើសរើស GPU NVIDIA និងការដំឡើងត្រឹមត្រូវដោយមិនចាំបាច់គិតច្រើនពេក 💸🧠
មិនមែនគ្រប់គម្រោងទាំងអស់សុទ្ធតែត្រូវការ GPU ធំបំផុតនោះទេ។ ពេលខ្លះអ្នកត្រូវការ GPU គ្រប់គ្រាន់
ប្រសិនបើអ្នកកំពុងកែលម្អម៉ូដែលមធ្យម
-
ផ្តល់អាទិភាពដល់ VRAM និងស្ថេរភាព
-
ភាពជាក់លាក់ចម្រុះជួយបានច្រើន ( ឯកសារ PyTorch AMP , មគ្គុទ្ទេសក៍ភាពជាក់លាក់ចម្រុះ TensorFlow )
-
ជារឿយៗអ្នកអាចគេចផុតពី GPU ដ៏ខ្លាំងតែមួយ
ប្រសិនបើអ្នកកំពុងហ្វឹកហាត់ម៉ូដែលធំៗពីដំបូង
-
អ្នកនឹងត្រូវការ GPU ច្រើន ឬ VRAM ធំខ្លាំង
-
អ្នកនឹងយកចិត្តទុកដាក់ចំពោះ NVLink និងល្បឿនទំនាក់ទំនង ( ទិដ្ឋភាពទូទៅរបស់ NVIDIA NVLink , ទិដ្ឋភាពទូទៅរបស់ NCCL )
-
អ្នកប្រហែលជានឹងប្រើកម្មវិធីបង្កើនប្រសិទ្ធភាពអង្គចងចាំ (ZeRO, offload ជាដើម) ( ឯកសារ DeepSpeed ZeRO , ការស្រាវជ្រាវរបស់ Microsoft: ZeRO/DeepSpeed )
ប្រសិនបើអ្នកកំពុងធ្វើការពិសោធន៍
-
អ្នកចង់បានការផ្សាយឡើងវិញលឿន
-
កុំចំណាយលុយទាំងអស់របស់អ្នកលើ GPU ហើយបន្ទាប់មកបាត់បង់ទំហំផ្ទុក និង RAM
-
ប្រព័ន្ធដែលមានតុល្យភាពយកឈ្នះលើប្រព័ន្ធដែលមានតុល្យភាព (ភាគច្រើននៃថ្ងៃ)
ហើយតាមពិតទៅ អ្នកអាចខ្ជះខ្ជាយពេលវេលាជាច្រើនសប្តាហ៍ក្នុងការស្វែងរកជម្រើសផ្នែករឹងដែល "ល្អឥតខ្ចោះ"។ សាងសង់អ្វីមួយដែលអាចដំណើរការបាន វាស់វែង បន្ទាប់មកកែតម្រូវ។ សត្រូវពិតប្រាកដមិនមែនជាការមានរង្វិលជុំមតិត្រឡប់នោះទេ។.
កំណត់ចំណាំបិទ - របៀបប្រើ NVIDIA GPU សម្រាប់ការបណ្តុះបណ្តាល AI ដោយមិនបាត់បង់ស្មារតីរបស់អ្នក 😌✅
ប្រសិនបើអ្នកមិនយកអ្វីផ្សេងទៀតពីមគ្គុទ្ទេសក៍នេះអំពី របៀបប្រើ NVIDIA GPU សម្រាប់ការបណ្តុះបណ្តាល AI សូមយកវា៖
-
ត្រូវប្រាកដថា
nvidia-smiដំណើរការជាមុនសិន ( ឯកសារ NVIDIA nvidia-smi ) -
ជ្រើសរើសផ្លូវកម្មវិធីស្អាតមួយ (CUDA ដែលភ្ជាប់មកជាមួយ framework ជារឿយៗងាយស្រួលបំផុត) ( PyTorch Get Started (CUDA selector) )
-
ផ្ទៀងផ្ទាត់ដំណើរការហ្វឹកហាត់ GPU តូចមួយមុនពេលធ្វើមាត្រដ្ឋាន ( torch.cuda.is_available )
-
គ្រប់គ្រង VRAM ដូចជាវាជាធ្នើរបន្ទប់ទុកដាក់អាហារមានកំណត់
-
ប្រើភាពជាក់លាក់ចម្រុះតាំងពីដំបូង - វាមិនមែនគ្រាន់តែជា "របស់កម្រិតខ្ពស់" នោះទេ ( ឯកសារ PyTorch AMP , មគ្គុទ្ទេសក៍ភាពជាក់លាក់ចម្រុះ TensorFlow )
-
ប្រសិនបើវាយឺត សូមសង្ស័យលើឧបករណ៍ផ្ទុកទិន្នន័យ និង I/O មុនពេលបន្ទោស GPU ( PyTorch Performance Tuning Guide )
-
ពហុ GPU មានថាមពលខ្លាំង ប៉ុន្តែបន្ថែមភាពស្មុគស្មាញ - ធ្វើមាត្រដ្ឋានបន្តិចម្តងៗ ( ឯកសារ PyTorch DDP , ទិដ្ឋភាពទូទៅ NCCL )
-
តាមដានការប្រើប្រាស់ និងសីតុណ្ហភាព ដើម្បីឱ្យបញ្ហាលេចឡើងមុន ( ឯកសារ NVIDIA nvidia-smi )
ការហ្វឹកហាត់លើ NVIDIA GPUs គឺជាជំនាញមួយក្នុងចំណោមជំនាញទាំងនោះដែលមានអារម្មណ៍ថាគួរឱ្យខ្លាច ប៉ុន្តែភ្លាមៗនោះវាគ្រាន់តែ...ធម្មតា។ ដូចជាការរៀនបើកបរអញ្ចឹង។ ដំបូងឡើយអ្វីៗទាំងអស់មានសំឡេងរំខាន និងច្របូកច្របល់ ហើយអ្នកកាន់ចង្កូតខ្លាំងពេក។ បន្ទាប់មកថ្ងៃមួយអ្នកកំពុងបើកបរ ផឹកកាហ្វេ ហើយដោះស្រាយបញ្ហាទំហំបាច់ដោយចៃដន្យដូចជាវាមិនមែនជារឿងធំដុំអ្វីនោះទេ ☕😄
សំណួរដែលសួរញឹកញាប់
អត្ថន័យនៃការហ្វឹកហាត់គំរូ AI លើ NVIDIA GPU
ការហ្វឹកហាត់លើ NVIDIA GPU មានន័យថា ប៉ារ៉ាម៉ែត្រគំរូ និងបាច់ហ្វឹកហាត់របស់អ្នកស្ថិតនៅក្នុង GPU VRAM ហើយការគណនាដ៏ស្មុគស្មាញ (forward pass, backprop, ជំហាន optimizer) ត្រូវបានអនុវត្តតាមរយៈខឺណែល CUDA។ នៅក្នុងការអនុវត្តជាក់ស្តែង នេះជារឿយៗអាស្រ័យលើការធានាថាគំរូ និង tensors ស្ថិតនៅលើ cuda បន្ទាប់មកតាមដានអង្គចងចាំ ការប្រើប្រាស់ និងសីតុណ្ហភាព ដូច្នេះ throughput នៅតែស្ថិតស្ថេរ។
របៀបបញ្ជាក់ថា NVIDIA GPU កំពុងដំណើរការមុនពេលដំឡើងអ្វីផ្សេងទៀត
ចាប់ផ្តើមជាមួយ nvidia-smi ។ វាគួរតែបង្ហាញឈ្មោះ GPU កំណែកម្មវិធីបញ្ជា ការប្រើប្រាស់អង្គចងចាំបច្ចុប្បន្ន និងដំណើរការណាមួយដែលកំពុងដំណើរការ។ ប្រសិនបើ nvidia-smi បរាជ័យ សូមផ្អាក PyTorch/TensorFlow/JAX - ជួសជុលភាពមើលឃើញរបស់កម្មវិធីបញ្ជាជាមុនសិន។ វាជាការត្រួតពិនិត្យមូលដ្ឋាន "តើឡត្រូវបានដោតចូលឬអត់" សម្រាប់ការហ្វឹកហាត់ GPU។
ការជ្រើសរើសរវាងប្រព័ន្ធ CUDA និង CUDA ដែលភ្ជាប់មកជាមួយ PyTorch
វិធីសាស្រ្តទូទៅមួយគឺការប្រើប្រាស់ CUDA ដែលភ្ជាប់មកជាមួយ framework (ដូចជាកង់ PyTorch ជាច្រើន) ពីព្រោះវាកាត់បន្ថយផ្នែកដែលមានចលនា - អ្នកភាគច្រើនត្រូវការកម្មវិធីបញ្ជា NVIDIA ដែលឆបគ្នា។ ការដំឡើងឧបករណ៍ CUDA ប្រព័ន្ធពេញលេញផ្តល់នូវការគ្រប់គ្រងកាន់តែច្រើន (ការបង្កើតផ្ទាល់ខ្លួន ការចងក្រងប្រតិបត្តិការ) ប៉ុន្តែវាក៏ណែនាំឱកាសកាន់តែច្រើនសម្រាប់ភាពមិនស៊ីគ្នានៃកំណែ និងកំហុសពេលដំណើរការដែលច្រឡំផងដែរ។.
ហេតុអ្វីបានជាការហ្វឹកហាត់នៅតែអាចយឺតសូម្បីតែជាមួយ NVIDIA GPU ក៏ដោយ
ជារឿយៗ GPU ត្រូវបានអត់ឃ្លានដោយបំពង់បញ្ចូល។ ឧបករណ៍ផ្ទុកទិន្នន័យដែលយឺតយ៉ាវ ការដំណើរការជាមុនរបស់ CPU ច្រើននៅក្នុងជំហានបណ្តុះបណ្តាល ទំហំបាច់តូច ឬការផ្ទុកទិន្នន័យយឺត សុទ្ធតែអាចធ្វើឱ្យ GPU ដ៏មានអានុភាពមានឥរិយាបទដូចជាឧបករណ៍កម្តៅកន្លែងទំនេរ។ ការបង្កើនកម្មករផ្ទុកទិន្នន័យ ការបើកដំណើរការអង្គចងចាំដែលបានខ្ទាស់ ការបន្ថែមការទាញយកជាមុន និងការកាត់ចេញកំណត់ហេតុ គឺជាជំហានដំបូងទូទៅមុនពេលបន្ទោសគំរូ។.
វិធីការពារកំហុស "CUDA អស់អង្គចងចាំ" អំឡុងពេលហ្វឹកហាត់ NVIDIA GPU
ការជួសជុលភាគច្រើនគឺជាយុទ្ធសាស្ត្រ VRAM៖ កាត់បន្ថយទំហំបាច់ បើកភាពជាក់លាក់ចម្រុះ (FP16/BF16) ប្រើការប្រមូលផ្តុំជម្រាល កាត់បន្ថយប្រវែងលំដាប់/ទំហំដំណាំ ឬប្រើការត្រួតពិនិត្យការធ្វើឱ្យសកម្ម។ សូមពិនិត្យមើលដំណើរការ GPU ផ្សេងទៀតដែលប្រើប្រាស់អង្គចងចាំផងដែរ។ ការសាកល្បង និងកំហុសខ្លះគឺជារឿងធម្មតា - ការរៀបចំថវិកា VRAM ក្លាយជាទម្លាប់ស្នូលនៅក្នុងការបណ្តុះបណ្តាល GPU ជាក់ស្តែង។.
ហេតុអ្វីបានជា VRAM នៅតែអាចមើលទៅពេញបន្ទាប់ពីស្គ្រីបបណ្តុះបណ្តាលបញ្ចប់
ស៊ុមការងារជារឿយៗរក្សាទុកអង្គចងចាំ GPU ក្នុងឃ្លាំងសម្ងាត់សម្រាប់ល្បឿន ដូច្នេះអង្គចងចាំដែលបានបម្រុងទុកអាចនៅតែខ្ពស់ទោះបីជាអង្គចងចាំដែលបានបែងចែកធ្លាក់ចុះក៏ដោយ។ វាអាចស្រដៀងនឹងការលេចធ្លាយ ប៉ុន្តែជាញឹកញាប់វាគឺជាអ្នកបែងចែកឃ្លាំងសម្ងាត់ដែលមានឥរិយាបទដូចដែលបានរចនា។ ទម្លាប់ជាក់ស្តែងគឺត្រូវតាមដានគំរូតាមពេលវេលា ហើយប្រៀបធៀប "បានបែងចែកទល់នឹងបានបម្រុងទុក" ជាជាងការផ្តោតលើរូបភាពដែលគួរឱ្យព្រួយបារម្ភតែមួយ។.
របៀបបញ្ជាក់ថាម៉ូដែលមួយមិនកំពុងហ្វឹកហាត់ដោយស្ងាត់ៗលើ CPU ទេ
ការត្រួតពិនិត្យសុខភាពមុន៖ បញ្ជាក់ torch.cuda.is_available() ត្រឡប់ True ផ្ទៀងផ្ទាត់ next(model.parameters()).device បង្ហាញ cuda ហើយដំណើរការការបញ្ជូនបន្តតែមួយដោយគ្មានកំហុស។ ប្រសិនបើដំណើរការមានអារម្មណ៍ថាយឺតគួរឱ្យសង្ស័យ សូមបញ្ជាក់ផងដែរថាបាច់របស់អ្នកកំពុងត្រូវបានផ្លាស់ទីទៅ GPU។ វាជារឿងធម្មតាទេក្នុងការផ្លាស់ទីគំរូ ហើយទុកទិន្នន័យចោលដោយចៃដន្យ។
ផ្លូវងាយស្រួលបំផុតទៅកាន់ការបណ្តុះបណ្តាលពហុ GPU
ការប្រើប្រាស់ Data Parallel (ការហ្វឹកហ្វឺនបែប DDP) ជារឿយៗជាជំហានដំបូងដ៏ល្អបំផុត៖ បំបែកបាច់ឆ្លងកាត់ GPU និងធ្វើសមកាលកម្មជម្រាល។ ឧបករណ៍ដូចជា Accelerate អាចធ្វើឱ្យ multi-GPU មិនសូវឈឺចាប់ដោយមិនចាំបាច់សរសេរឡើងវិញពេញលេញ។ រំពឹងថានឹងមានអថេរបន្ថែម - ការទំនាក់ទំនង NCCL ភាពខុសគ្នានៃការតភ្ជាប់ (NVLink ទល់នឹង PCIe) និងចំណុចកកស្ទះទិន្នន័យដែលបានពង្រីក - ដូច្នេះការធ្វើមាត្រដ្ឋានបន្តិចម្តងៗបន្ទាប់ពីការដំណើរការ GPU តែមួយដ៏រឹងមាំមានទំនោរទៅបានល្អជាង។.
អ្វីដែលត្រូវតាមដានក្នុងអំឡុងពេលហ្វឹកហាត់ NVIDIA GPU ដើម្បីចាប់បញ្ហាបានទាន់ពេលវេលា
សូមតាមដានការប្រើប្រាស់ GPU ការប្រើប្រាស់អង្គចងចាំ (មានស្ថេរភាពធៀបនឹងការកើនឡើង) ការប្រើប្រាស់ថាមពល និងសីតុណ្ហភាព - ការគ្រប់គ្រងល្បឿនអាចធ្វើឱ្យល្បឿនថយចុះដោយស្ងាត់ៗ។ សូមតាមដានការប្រើប្រាស់ CPU ផងដែរ ព្រោះបញ្ហាបំពង់ទិន្នន័យច្រើនតែលេចឡើងនៅទីនោះមុន។ ប្រសិនបើការប្រើប្រាស់មានការកើនឡើងខ្លាំង ឬទាប សូមសង្ស័យថា I/O ឬកម្មវិធីផ្ទុកទិន្នន័យ។ ប្រសិនបើវាខ្ពស់ ប៉ុន្តែពេលវេលាជំហាននៅតែយឺត ខឺណែលទម្រង់ របៀបភាពជាក់លាក់ និងការបំបែកពេលវេលាជំហាន។.
ឯកសារយោង
-
NVIDIA - ឯកសារ NVIDIA nvidia-smi - docs.nvidia.com
-
NVIDIA - ចំណុចប្រទាក់គ្រប់គ្រងប្រព័ន្ធ NVIDIA (NVSMI) - developer.nvidia.com
-
NVIDIA - ទិដ្ឋភាពទូទៅ NVIDIA NVLink - nvidia.com
-
PyTorch - ចាប់ផ្តើម PyTorch (ឧបករណ៍ជ្រើសរើស CUDA) - pytorch.org
-
PyTorch - ឯកសារ PyTorch CUDA - docs.pytorch.org
-
TensorFlow - ការដំឡើង TensorFlow (pip) - tensorflow.org
-
JAX - ការចាប់ផ្តើមរហ័ស JAX - docs.jax.dev
-
ឱបមុខ - ឯកសារគ្រូបង្វឹក - huggingface.co
-
បញ្ញាសិប្បនិម្មិតរន្ទះ - ឯកសាររន្ទះ - lightning.ai
-
DeepSpeed - ZeRO - deepspeed.readthedocs.io
-
ការស្រាវជ្រាវរបស់ Microsoft - ការស្រាវជ្រាវរបស់ Microsoft៖ ZeRO/DeepSpeed - microsoft.com
-
វេទិកា PyTorch - វេទិកា PyTorch៖ ពិនិត្យមើលគំរូនៅលើ CUDA - discuss.pytorch.org