ചുരുക്ക ഉത്തരം: nvidia-smi ഉപയോഗിച്ച് ഡ്രൈവറും GPU-വും ദൃശ്യമാണെന്ന് ഉറപ്പാക്കുക , തുടർന്ന് ഒരു അനുയോജ്യമായ ഫ്രെയിംവർക്ക്/CUDA സ്റ്റാക്ക് ഇൻസ്റ്റാൾ ചെയ്ത് ഒരു ചെറിയ “model + batch on cuda” ടെസ്റ്റ് നടത്തുക. നിങ്ങൾക്ക് മെമ്മറി നഷ്ടപ്പെട്ടാൽ, ബാച്ച് വലുപ്പം കുറയ്ക്കുകയും ഉപയോഗം, മെമ്മറി, താപനില എന്നിവ നിരീക്ഷിക്കുകയും ചെയ്യുമ്പോൾ മിക്സഡ് പ്രിസിഷൻ ഉപയോഗിക്കുക.
പ്രധാന കാര്യങ്ങൾ:
അടിസ്ഥാന പരിശോധനകൾ : nvidia-smi ; ഫ്രെയിംവർക്കുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് മുമ്പ് ഡ്രൈവർ ദൃശ്യപരത ശരിയാക്കുക.
സ്റ്റാക്ക് അനുയോജ്യത : ക്രാഷുകളും പൊട്ടുന്ന ഇൻസ്റ്റാളുകളും തടയുന്നതിന് ഡ്രൈവർ, CUDA റൺടൈം, ഫ്രെയിംവർക്ക് പതിപ്പുകൾ എന്നിവ വിന്യസിക്കുക.
ചെറിയ വിജയം : പരീക്ഷണങ്ങൾ വർദ്ധിപ്പിക്കുന്നതിന് മുമ്പ് CUDA-യിൽ ഒരു ഫോർവേഡ് പാസ് റൺസ് സ്ഥിരീകരിക്കുക.
VRAM വിഭാഗം : വലിയ മോഡലുകൾക്ക് അനുയോജ്യമാക്കുന്നതിന് മിക്സഡ് പ്രിസിഷൻ, ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ, ചെക്ക്പോയിന്റിംഗ് എന്നിവയിൽ ആശ്രയിക്കുക.
നിരീക്ഷണ ശീലം : തടസ്സങ്ങൾ നേരത്തേ കണ്ടെത്തുന്നതിന് ഉപയോഗം, മെമ്മറി പാറ്റേണുകൾ, പവർ, താപനില എന്നിവ ട്രാക്ക് ചെയ്യുക.

ഇതിനു ശേഷം നിങ്ങൾക്ക് വായിക്കാൻ ഇഷ്ടപ്പെട്ടേക്കാവുന്ന ലേഖനങ്ങൾ:
🔗 ഒരു AI ഏജന്റ് എങ്ങനെ നിർമ്മിക്കാം
നിങ്ങളുടെ ഏജന്റിന്റെ വർക്ക്ഫ്ലോ, ഉപകരണങ്ങൾ, മെമ്മറി, സുരക്ഷാ ഗാർഡുകൾ എന്നിവ രൂപകൽപ്പന ചെയ്യുക.
🔗 AI മോഡലുകൾ എങ്ങനെ വിന്യസിക്കാം
പരിസ്ഥിതികൾ, പാക്കേജ് മോഡലുകൾ എന്നിവ സജ്ജമാക്കുക, ഉൽപ്പാദനത്തിലേക്ക് വിശ്വസനീയമായി അയയ്ക്കുക.
🔗 AI പ്രകടനം എങ്ങനെ അളക്കാം
മെട്രിക്കുകൾ തിരഞ്ഞെടുക്കുക, വിലയിരുത്തലുകൾ നടത്തുക, കാലക്രമേണ പ്രകടനം ട്രാക്ക് ചെയ്യുക.
🔗 AI ഉപയോഗിച്ച് ജോലികൾ എങ്ങനെ ഓട്ടോമേറ്റ് ചെയ്യാം
പ്രോംപ്റ്റുകൾ, വർക്ക്ഫ്ലോകൾ, സംയോജനങ്ങൾ എന്നിവ ഉപയോഗിച്ച് ആവർത്തിച്ചുള്ള ജോലി ഓട്ടോമേറ്റ് ചെയ്യുക.
1) വലിയ ചിത്രം - നിങ്ങൾ "GPU-യിൽ പരിശീലനം" ചെയ്യുമ്പോൾ നിങ്ങൾ എന്താണ് ചെയ്യുന്നത് 🧠⚡
AI മോഡലുകളെ പരിശീലിപ്പിക്കുമ്പോൾ, നിങ്ങൾ കൂടുതലും മാട്രിക്സ് ഗണിതത്തിന്റെ ഒരു വലിയ ശേഖരം തന്നെയാണ് ചെയ്യുന്നത്. GPU-കൾ അത്തരം സമാന്തര പ്രവർത്തനങ്ങൾക്കാണ് നിർമ്മിച്ചിരിക്കുന്നത്, അതിനാൽ PyTorch, TensorFlow, JAX പോലുള്ള ഫ്രെയിംവർക്കുകൾക്ക് GPU-യിലേക്ക് കൂടുതൽ ഭാരം കുറയ്ക്കാൻ കഴിയും. ( PyTorch CUDA ഡോക്സ് , TensorFlow ഇൻസ്റ്റാൾ (pip) , JAX Quickstart )
പ്രായോഗികമായി, "പരിശീലനത്തിനായി NVIDIA GPU-കൾ ഉപയോഗിക്കുന്നു" എന്നാൽ സാധാരണയായി അർത്ഥമാക്കുന്നത്:
-
നിങ്ങളുടെ മോഡൽ പാരാമീറ്ററുകൾ (മിക്കവാറും) GPU VRAM-ൽ ആണ് ജീവിക്കുന്നത്
-
നിങ്ങളുടെ ബാച്ചുകൾ ഓരോ ഘട്ടത്തിലും RAM-ൽ നിന്ന് VRAM-ലേക്ക് നീങ്ങുന്നു
-
CUDA കേർണലുകളിൽ നിങ്ങളുടെ ഫോർവേഡ് പാസും ബാക്ക്പ്രോപ്പും പ്രവർത്തിക്കുന്നു ( CUDA പ്രോഗ്രാമിംഗ് ഗൈഡ് )
-
നിങ്ങളുടെ ഒപ്റ്റിമൈസർ അപ്ഡേറ്റുകൾ GPU-വിൽ സംഭവിക്കുന്നു (ആദർശപരമായി)
-
നിങ്ങൾ ഒന്നും പാചകം ചെയ്യാതിരിക്കാൻ താപനില, മെമ്മറി, ഉപയോഗം എന്നിവ നിരീക്ഷിക്കുന്നു 🔥 ( NVIDIA nvidia-smi docs )
അത് അധികമാണെന്ന് തോന്നുകയാണെങ്കിൽ, വിഷമിക്കേണ്ട. ഇത് പ്രധാനമായും ഒരു ചെക്ക്ലിസ്റ്റും കാലക്രമേണ നിങ്ങൾ വളർത്തിയെടുക്കുന്ന ചില ശീലങ്ങളുമാണ്.
2) NVIDIA GPU AI പരിശീലന സജ്ജീകരണത്തിന്റെ നല്ല പതിപ്പ് എന്താണ് 🤌
ഇതാണ് “ജെല്ലി കൊണ്ട് വീട് പണിയരുത്” വിഭാഗം. AI പരിശീലനത്തിനായി NVIDIA GPU-കൾ എങ്ങനെ ഉപയോഗിക്കാം ലോ-ഡ്രാമയാണ്. ലോ-ഡ്രാമ എന്നാൽ സ്ഥിരതയുള്ളത്. സ്ഥിരത എന്നാൽ വേഗതയുള്ളത്. വേഗത എന്നാൽ...ശരി, വേഗതയുള്ളത് 😄
ഒരു ഉറച്ച പരിശീലന സജ്ജീകരണത്തിൽ സാധാരണയായി ഇവ ഉൾപ്പെടുന്നു:
-
നിങ്ങളുടെ ബാച്ച് വലുപ്പം + മോഡൽ + ഒപ്റ്റിമൈസർ അവസ്ഥകൾ എന്നിവയ്ക്ക് മതിയായ VRAM
-
VRAM എന്നത് ഒരു സ്യൂട്ട്കേസ് സ്ഥലം പോലെയാണ്. നിങ്ങൾക്ക് കൂടുതൽ സ്മാർട്ടായി പാക്ക് ചെയ്യാൻ കഴിയും, പക്ഷേ അനന്തമായി പാക്ക് ചെയ്യാൻ കഴിയില്ല.
-
-
പൊരുത്തപ്പെടുന്ന ഒരു സോഫ്റ്റ്വെയർ സ്റ്റാക്ക് (ഡ്രൈവർ + CUDA റൺടൈം + ഫ്രെയിംവർക്ക് കോംപാറ്റിബിലിറ്റി) ( പൈടോർച്ച് ഗെറ്റ് സ്റ്റാർട്ട്ഡ് (CUDA സെലക്ടർ) , ടെൻസർഫ്ലോ ഇൻസ്റ്റാൾ (പിപ്പ്) )
-
വേഗത്തിലുള്ള സംഭരണം (വലിയ ഡാറ്റാസെറ്റുകൾക്ക് NVMe വളരെയധികം സഹായിക്കുന്നു)
-
നല്ല CPU + RAM ഉള്ളതിനാൽ ഡാറ്റ ലോഡിംഗ് GPU-യെ തളർത്തുന്നില്ല ( PyTorch പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് )
-
കൂളിംഗും പവർ ഹെഡ്റൂമും (കുറച്ചുകൂടി വിലയിരുത്തിയാൽ മതി 😬)
-
പുനരുൽപ്പാദിപ്പിക്കാവുന്ന പരിസ്ഥിതി (വെൻവി/കോണ്ട അല്ലെങ്കിൽ കണ്ടെയ്നറുകൾ) അതിനാൽ അപ്ഗ്രേഡുകൾ കുഴപ്പങ്ങളായി മാറുന്നില്ല ( എൻവിഡിയ കണ്ടെയ്നർ ടൂൾകിറ്റ് അവലോകനം )
ആളുകൾ ഒഴിവാക്കുന്ന ഒരു കാര്യം കൂടി:
-
ഒരു നിരീക്ഷണ ശീലം - വാഹനമോടിക്കുമ്പോൾ കണ്ണാടികൾ പരിശോധിക്കുന്നത് പോലെയാണ് നിങ്ങൾ GPU മെമ്മറിയും ഉപയോഗവും പരിശോധിക്കുന്നത്. ( NVIDIA nvidia-smi ഡോക്സ് )
3) താരതമ്യ പട്ടിക - NVIDIA GPU-കൾ ഉപയോഗിച്ച് പരിശീലിപ്പിക്കുന്നതിനുള്ള ജനപ്രിയ വഴികൾ (വിചിത്രങ്ങളോടെ) 📊
"ഏതാണ് യോജിക്കുന്നത്?" എന്നതിനെക്കുറിച്ചുള്ള ഒരു ചെറിയ ചീറ്റ് ഷീറ്റ് താഴെ കൊടുക്കുന്നു. വിലകൾ വളരെ കുറവാണ് (കാരണം യാഥാർത്ഥ്യം വ്യത്യാസപ്പെടാം), അതെ, ഈ സെല്ലുകളിൽ ഒന്ന് മനഃപൂർവ്വം അൽപ്പം അശ്രദ്ധമാണ്.
| ഉപകരണം / സമീപനം | ഏറ്റവും അനുയോജ്യം | വില | ഇത് എന്തുകൊണ്ട് പ്രവർത്തിക്കുന്നു (മിക്കവാറും) |
|---|---|---|---|
| പൈടോർച്ച് (വാനില) പൈടോർച്ച് | മിക്ക ആളുകളും, മിക്ക പദ്ധതികളും | സൗ ജന്യം | വഴക്കമുള്ളത്, വലിയ ആവാസവ്യവസ്ഥ, എളുപ്പത്തിലുള്ള ഡീബഗ്ഗിംഗ് - എല്ലാവർക്കും അഭിപ്രായങ്ങളുണ്ട് |
| പൈടോർച്ച് ലൈറ്റ്നിംഗ് ലൈറ്റ്നിംഗ് ഡോക്സ് | ടീമുകൾ, ഘടനാപരമായ പരിശീലനം | സൗ ജന്യം | ബോയിലർപ്ലേറ്റ് കുറയ്ക്കുന്നു, ലൂപ്പുകൾ വൃത്തിയാക്കുന്നു; ചിലപ്പോൾ "മാജിക്" പോലെ തോന്നും, അങ്ങനെ സംഭവിക്കാത്തിടത്തോളം |
| ഹഗ്ഗിംഗ് ഫെയ്സ് ട്രാൻസ്ഫോർമറുകൾ + ട്രെയിനർ ട്രെയിനർ ഡോക്സ് | NLP + LLM ഫൈൻ-ട്യൂണിംഗ് | സൗ ജന്യം | ബാറ്ററികൾ ഉൾപ്പെടുന്ന പരിശീലനം, മികച്ച ഡിഫോൾട്ടുകൾ, വേഗത്തിലുള്ള വിജയങ്ങൾ 👍 |
| ആക്സിലറേറ്റ് ചെയ്യുക ഡോക്സ് ആക്സിലറേറ്റ് | വേദനയില്ലാത്ത മൾട്ടി-ജിപിയു | സൗ ജന്യം | DDP ശല്യപ്പെടുത്തുന്നത് കുറയ്ക്കുന്നു, എല്ലാം മാറ്റിയെഴുതാതെ തന്നെ വർദ്ധിപ്പിക്കാൻ നല്ലതാണ് |
| ഡീപ്സ്പീഡ് സീറോ ഡോക്സ് | വലിയ മോഡലുകൾ, മെമ്മറി തന്ത്രങ്ങൾ | സൗ ജന്യം | സീറോ, ഓഫ്ലോഡ്, സ്കെയിലിംഗ് - ക്ലിക്കുചെയ്യുമ്പോൾ ബുദ്ധിമുട്ടുള്ളതും എന്നാൽ തൃപ്തികരവുമാണ് |
| ടെൻസർഫ്ലോ + കേരാസ് TF ഇൻസ്റ്റാൾ | ഉൽപ്പാദന പൈപ്പ്ലൈനുകൾ | സൗ ജന്യം | ശക്തമായ ഉപകരണങ്ങൾ, നല്ല വിന്യാസ കഥ; ചില ആളുകൾക്ക് ഇത് ഇഷ്ടമാണ്, ചിലർക്ക് അത് ഇഷ്ടമല്ല |
| ജാക്സ് + ഫ്ലാക്സ് ജാക്സ് ക്വിക്ക്സ്റ്റാർട്ട് / ഫ്ലാക്സ് ഡോക്സ് | ഗവേഷണം + വേഗതാപ്രേമികൾ | സൗ ജന്യം | XLA കംപൈലേഷൻ വളരെ വേഗത്തിലാകാം, പക്ഷേ ഡീബഗ്ഗിംഗ്... അമൂർത്തമായി തോന്നാം |
| NVIDIA NeMo NeMo അവലോകനം | പ്രസംഗം + എൽഎൽഎം വർക്ക്ഫ്ലോകൾ | സൗ ജന്യം | NVIDIA-ഒപ്റ്റിമൈസ് ചെയ്ത സ്റ്റാക്ക്, നല്ല പാചകക്കുറിപ്പുകൾ - ഒരു ഫാൻസി ഓവൻ ഉപയോഗിച്ച് പാചകം ചെയ്യുന്നത് പോലെ തോന്നുന്നു 🍳 |
| ഡോക്കർ + എൻവിഡിയ കണ്ടെയ്നർ ടൂൾകിറ്റ് ടൂൾകിറ്റിന്റെ അവലോകനം | പുനരുൽപ്പാദിപ്പിക്കാവുന്ന പരിതസ്ഥിതികൾ | സൗ ജന്യം | “എന്റെ മെഷീനിൽ പ്രവർത്തിക്കുന്നു” എന്നത് “നമ്മുടെ മെഷീനുകളിൽ പ്രവർത്തിക്കുന്നു” (മിക്കവാറും, വീണ്ടും) ആയി മാറുന്നു |
4) ആദ്യ ഘട്ടം - നിങ്ങളുടെ GPU ശരിയായി കാണുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക 🕵️♂️
ഒരു ഡസൻ കാര്യങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനുമുമ്പ്, അടിസ്ഥാനകാര്യങ്ങൾ പരിശോധിക്കുക.
സത്യമാകാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്ന കാര്യങ്ങൾ:
-
മെഷീൻ GPU കാണുന്നു
-
NVIDIA ഡ്രൈവർ ശരിയായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്
-
GPU മറ്റെന്തെങ്കിലും ചെയ്യുന്നതിൽ കുടുങ്ങിപ്പോയിട്ടില്ല
-
നിങ്ങൾക്ക് അത് വിശ്വസനീയമായി അന്വേഷിക്കാൻ കഴിയും
ക്ലാസിക് പരിശോധന ഇതാണ്:
-
എൻവിഡിയ-എസ്എംഐ( എൻവിഡിയ എൻവിഡിയ-എസ്എംഐ ഡോക്സ് )
നിങ്ങൾ തിരയുന്നത്:
-
GPU നാമം (ഉദാ. RTX, A-സീരീസ്, മുതലായവ)
-
ഡ്രൈവർ പതിപ്പ്
-
മെമ്മറി ഉപയോഗം
-
റണ്ണിംഗ് പ്രോസസ്സുകൾ ( NVIDIA nvidia-smi ഡോക്സ് )
nvidia-smi പരാജയപ്പെട്ടാൽ , അവിടെ തന്നെ നിർത്തുക. ഇതുവരെ ഫ്രെയിംവർക്കുകൾ ഇൻസ്റ്റാൾ ചെയ്യരുത്. നിങ്ങളുടെ ഓവൻ പ്ലഗ് ഇൻ ചെയ്തിട്ടില്ലാത്തപ്പോൾ ബ്രെഡ് ബേക്ക് ചെയ്യാൻ ശ്രമിക്കുന്നത് പോലെയാണ് ഇത്. ( NVIDIA സിസ്റ്റം മാനേജ്മെന്റ് ഇന്റർഫേസ് (NVSMI) )
ചെറിയൊരു മാനുഷിക കുറിപ്പ്: ചിലപ്പോൾ nvidia-smi പ്രവർത്തിക്കും, പക്ഷേ നിങ്ങളുടെ ഫ്രെയിംവർക്ക് ഉപയോഗിക്കുന്ന CUDA റൺടൈം ഡ്രൈവർ പ്രതീക്ഷകൾക്ക് അനുസൃതമല്ലാത്തതിനാൽ നിങ്ങളുടെ പരിശീലനം ഇപ്പോഴും പരാജയപ്പെടുന്നു. നിങ്ങൾ മണ്ടനല്ല. അത്... അങ്ങനെയാണ് 😭 ( PyTorch Get Started (CUDA selector) , TensorFlow install (pip) )
5) സോഫ്റ്റ്വെയർ സ്റ്റാക്ക് നിർമ്മിക്കുക - ഡ്രൈവറുകൾ, CUDA, cuDNN, “കോംപാറ്റിബിലിറ്റി ഡാൻസ്” 💃
ഇവിടെയാണ് ആളുകൾക്ക് മണിക്കൂറുകൾ നഷ്ടപ്പെടുന്നത്. തന്ത്രം ഇതാണ്: ഒരു പാത തിരഞ്ഞെടുത്ത് അതിൽ ഉറച്ചുനിൽക്കുക .
ഓപ്ഷൻ എ: ഫ്രെയിംവർക്ക്-ബണ്ടിൽഡ് CUDA (പലപ്പോഴും ഏറ്റവും എളുപ്പമുള്ളത്)
പല പൈടോർച്ച് ബിൽഡുകളും അവരുടേതായ CUDA റൺടൈം ഉപയോഗിച്ചാണ് നിർമ്മിക്കുന്നത്, അതായത് സിസ്റ്റം മുഴുവൻ ഇൻസ്റ്റാൾ ചെയ്ത ഒരു പൂർണ്ണ CUDA ടൂൾകിറ്റ് ആവശ്യമില്ല. നിങ്ങൾക്ക് പ്രധാനമായും അനുയോജ്യമായ ഒരു NVIDIA ഡ്രൈവർ മാത്രമേ ആവശ്യമുള്ളൂ. ( പൈടോർച്ച് ആരംഭിക്കുക (CUDA സെലക്ടർ) , മുൻ പൈടോർച്ച് പതിപ്പുകൾ (CUDA വീലുകൾ) )
പ്രോസ്:
-
ചലിക്കുന്ന ഭാഗങ്ങൾ കുറവാണ്
-
എളുപ്പത്തിലുള്ള ഇൻസ്റ്റാളുകൾ
-
പരിസ്ഥിതി അനുസരിച്ച് കൂടുതൽ പുനരുൽപ്പാദിപ്പിക്കാവുന്നത്
ദോഷങ്ങൾ:
-
നിങ്ങൾ പരിസ്ഥിതികളെ യാദൃശ്ചികമായി കൂട്ടിക്കലർത്തുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ആശയക്കുഴപ്പമുണ്ടാകാം
ഓപ്ഷൻ ബി: സിസ്റ്റം CUDA ടൂൾകിറ്റ് (കൂടുതൽ നിയന്ത്രണം)
സിസ്റ്റത്തിൽ CUDA ടൂൾകിറ്റ് ഇൻസ്റ്റാൾ ചെയ്ത് എല്ലാം അതിലേക്ക് വിന്യസിക്കുക. ( CUDA ടൂൾകിറ്റ് ഡോക്സ് )
പ്രോസ്:
-
ഇഷ്ടാനുസൃത നിർമ്മാണങ്ങൾക്ക് കൂടുതൽ നിയന്ത്രണം, ചില പ്രത്യേക ഉപകരണങ്ങൾ
-
ചില പ്രവർത്തനങ്ങൾ കംപൈൽ ചെയ്യുന്നതിന് സൗകര്യപ്രദം
ദോഷങ്ങൾ:
-
പതിപ്പുകൾ പൊരുത്തക്കേട് കാണിക്കാനും നിശബ്ദമായി കരയാനും കൂടുതൽ വഴികൾ
മാനുഷികമായി പറഞ്ഞാൽ, cuDNN ഉം NCCL ഉം
-
cuDNN ഡീപ് ലേണിംഗ് പ്രിമിറ്റീവുകളെ (കൺവല്യൂഷനുകൾ, RNN ബിറ്റുകൾ, മുതലായവ) വേഗത്തിലാക്കുന്നു ( NVIDIA cuDNN ഡോക്സ് )
-
മൾട്ടി-ജിപിയു പരിശീലനത്തിനായുള്ള വേഗതയേറിയ "ജിപിയു-ടു-ജിപിയു ആശയവിനിമയ" ലൈബ്രറിയാണ് എൻസിസിഎൽ എൻസിസിഎൽ അവലോകനം )
നിങ്ങൾ മൾട്ടി-ജിപിയു പരിശീലനം നടത്തുകയാണെങ്കിൽ, എൻസിസിഎൽ നിങ്ങളുടെ ഉറ്റ സുഹൃത്താണ് - ചിലപ്പോഴൊക്കെ, നിങ്ങളുടെ സ്വഭാവദൂഷ്യമുള്ള റൂംമേറ്റും. ( എൻസിസിഎൽ അവലോകനം )
6) നിങ്ങളുടെ ആദ്യത്തെ GPU പരിശീലന റൺ (PyTorch ഉദാഹരണ മാനസികാവസ്ഥ) ✅🔥
AI പരിശീലനത്തിനായി NVIDIA GPU-കൾ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് പിന്തുടരാൻ , ആദ്യം ഒരു വലിയ പ്രോജക്റ്റ് ആവശ്യമില്ല. നിങ്ങൾക്ക് ഒരു ചെറിയ വിജയം ആവശ്യമാണ്.
പ്രധാന ആശയങ്ങൾ:
-
ഉപകരണം കണ്ടെത്തുക
-
മോഡൽ GPU-യിലേക്ക് മാറ്റുക
-
ടെൻസറുകൾ GPU-യിലേക്ക് നീക്കുക
-
ഫോർവേഡ് പാസ് റണ്ണുകൾ അവിടെ സ്ഥിരീകരിക്കുക ( PyTorch CUDA ഡോക്സ് )
ഞാൻ എപ്പോഴും നേരത്തെ തന്നെ ബുദ്ധി പരിശോധിക്കുന്ന കാര്യങ്ങൾ:
-
torch.cuda.is_available()True( torch.cuda.is_available ) എന്ന് നൽകുന്നു. -
next(model.parameters()).devicecudaകാണിക്കുന്നു ( PyTorch Forum: CUDA-യിൽ മോഡൽ പരിശോധിക്കുക ) -
ഒരു ബാച്ച് ഫോർവേഡ് പാസ് തെറ്റാകില്ല
-
പരിശീലനം ആരംഭിക്കുമ്പോൾ GPU മെമ്മറി വർദ്ധിക്കുന്നു (ഒരു നല്ല സൂചന!) ( NVIDIA nvidia-smi docs )
"എന്തുകൊണ്ട് മന്ദഗതിയിലാണ്?" എന്ന പതിവ് ചോദ്യം
-
നിങ്ങളുടെ ഡാറ്റലോഡർ വളരെ മന്ദഗതിയിലാണ് (GPU നിഷ്ക്രിയമായി കാത്തിരിക്കുന്നു) ( PyTorch പ്രകടന ട്യൂണിംഗ് ഗൈഡ് )
-
നിങ്ങൾ GPU-വിലേക്ക് ഡാറ്റ നീക്കാൻ മറന്നുപോയി (അയ്യോ)
-
ബാച്ച് വലുപ്പം ചെറുതാണ് (GPU ഉപയോഗത്തിലില്ല)
-
പരിശീലന ഘട്ടത്തിൽ നിങ്ങൾ വലിയ CPU പ്രീപ്രൊസസ്സിംഗ് നടത്തുകയാണ്
കൂടാതെ, അതെ, തടസ്സം ഡാറ്റയാണെങ്കിൽ നിങ്ങളുടെ GPU പലപ്പോഴും "അത്ര തിരക്കില്ലാത്തതായി" കാണപ്പെടും. ഒരു റേസ് കാർ ഡ്രൈവറെ നിയമിച്ച് ഓരോ ലാപ്പിലും ഇന്ധനത്തിനായി കാത്തിരിക്കുന്നത് പോലെയാണ് ഇത്.
7) VRAM ഗെയിം - ബാച്ച് വലുപ്പം, സമ്മിശ്ര കൃത്യത, പൊട്ടിത്തെറിക്കാത്തത് 💥🧳
മിക്ക പ്രായോഗിക പരിശീലന പ്രശ്നങ്ങളും ഓർമ്മയിലേക്ക് ചുരുങ്ങുന്നു. നിങ്ങൾ ഒരു കഴിവ് പഠിച്ചാൽ, VRAM മാനേജ്മെന്റ് പഠിക്കുക.
മെമ്മറി ഉപയോഗം കുറയ്ക്കാനുള്ള എളുപ്പവഴികൾ
-
മിക്സഡ് പ്രിസിഷൻ (FP16/BF16)
-
സാധാരണയായി വലിയ വേഗത ബൂസ്റ്റും. വിൻ-വിൻ-ഇഷ് 😌 ( PyTorch AMP ഡോക്സ് , TensorFlow മിക്സഡ് പ്രിസിഷൻ ഗൈഡ് )
-
-
ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ
-
ഒന്നിലധികം ഘട്ടങ്ങളിലൂടെ ഗ്രേഡിയന്റുകൾ ശേഖരിക്കുന്നതിലൂടെ വലിയ ബാച്ച് വലുപ്പം അനുകരിക്കുക ( ട്രാൻസ്ഫോർമറുകൾ പരിശീലന രേഖകൾ (ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ, fp16) )
-
-
കുറഞ്ഞ ശ്രേണി ദൈർഘ്യം / ക്രോപ്പ് വലുപ്പം
-
ക്രൂരമാണെങ്കിലും ഫലപ്രദമാണ്
-
-
ആക്ടിവേഷൻ ചെക്ക്പോയിന്റിംഗ്
-
മെമ്മറിയ്ക്കായി കമ്പ്യൂട്ട് ട്രേഡ് ചെയ്യുക (ബാക്ക്വേർഡ് സമയത്ത് ആക്റ്റിവേഷനുകൾ വീണ്ടും കമ്പ്യൂട്ട് ചെയ്യുക) ( torch.utils.checkpoint )
-
-
ഒരു ലൈറ്റർ ഒപ്റ്റിമൈസർ ഉപയോഗിക്കുക
-
ചില ഒപ്റ്റിമൈസറുകൾ VRAM ചവയ്ക്കുന്ന അധിക അവസ്ഥകൾ സംഭരിക്കുന്നു
-
“ഞാൻ നിർത്തിയതിനുശേഷവും VRAM നിറഞ്ഞിരിക്കുന്നത് എന്തുകൊണ്ട്?” എന്ന നിമിഷം
ഫ്രെയിംവർക്കുകൾ പലപ്പോഴും മെമ്മറി കാഷെ ചെയ്യുന്നു . ഇത് സാധാരണമാണ്. ഇത് ഭയപ്പെടുത്തുന്നതായി തോന്നുന്നു, പക്ഷേ ഇത് എല്ലായ്പ്പോഴും ഒരു ചോർച്ചയല്ല. നിങ്ങൾ പാറ്റേണുകൾ വായിക്കാൻ പഠിക്കുന്നു. ( PyTorch CUDA സെമാന്റിക്സ്: കാഷിംഗ് അലോക്കേറ്റർ )
പ്രായോഗിക ശീലം:
-
വാച്ച് അലോക്കേറ്റഡ് vs റിസർവ്ഡ് മെമ്മറി (ഫ്രെയിംവർക്ക്-നിർദ്ദിഷ്ടം) ( പൈടോർച്ച് CUDA സെമാന്റിക്സ്: കാഷിംഗ് അലോക്കേറ്റർ )
-
ആദ്യത്തെ ഭയാനകമായ നമ്പർ കേട്ട് പരിഭ്രാന്തരാകരുത് 😅
8) GPU യഥാർത്ഥത്തിൽ പ്രവർത്തിപ്പിക്കുക - നിങ്ങളുടെ സമയത്തിന് വിലപ്പെട്ട പ്രകടന ട്യൂണിംഗ് 🏎️
"GPU പരിശീലനം പ്രവർത്തിപ്പിക്കുന്നത്" ആദ്യ പടിയാണ്. അത് വേഗത്തിൽ രണ്ടാമത്തെ പടിയാണ്.
ഉയർന്ന ആഘാതമുള്ള ഒപ്റ്റിമൈസേഷനുകൾ
-
ബാച്ച് വലുപ്പം വർദ്ധിപ്പിക്കുക (വേദന വരുന്നത് വരെ, പിന്നീട് അൽപ്പം കുറയ്ക്കുക)
-
ഡാറ്റലോഡറുകളിൽ പിൻ ചെയ്ത മെമ്മറി ഉപയോഗിക്കുക PyTorch പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് , PyTorch pin_memory/non_blocking ട്യൂട്ടോറിയൽ )
-
ഡാറ്റാലോഡർ തൊഴിലാളികളെ വർദ്ധിപ്പിക്കുക (ശ്രദ്ധിക്കുക, വളരെയധികം പേർക്ക് തിരിച്ചടിയാകാം) ( പൈടോർച്ച് പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് )
-
GPU നിഷ്ക്രിയമാകാതിരിക്കാൻ ബാച്ചുകൾ പ്രീഫെച്ച് ചെയ്യുക
-
ലഭ്യമാകുമ്പോൾ ഫ്യൂസ്ഡ് ഓപ്സ് / ഒപ്റ്റിമൈസ് ചെയ്ത കേർണലുകൾ ഉപയോഗിക്കുക.
-
മിക്സഡ് പ്രിസിഷൻ ഉപയോഗിക്കുക (വീണ്ടും, അത് അത്ര നല്ലതാണ്) ( PyTorch AMP ഡോക്സ് )
ഏറ്റവും അവഗണിക്കപ്പെട്ട തടസ്സം
നിങ്ങളുടെ സംഭരണ, പ്രീപ്രോസസ്സിംഗ് പൈപ്പ്ലൈൻ. നിങ്ങളുടെ ഡാറ്റാസെറ്റ് വളരെ വലുതും സ്ലോ ഡിസ്കിൽ സൂക്ഷിച്ചിരിക്കുന്നതുമാണെങ്കിൽ, നിങ്ങളുടെ GPU വിലയേറിയ ഒരു സ്പേസ് ഹീറ്ററായി മാറുന്നു. വളരെ നൂതനമായ, വളരെ തിളക്കമുള്ള സ്പേസ് ഹീറ്റർ.
കൂടാതെ, ഒരു ചെറിയ കുറ്റസമ്മതം: ഒരു മണിക്കൂർ നേരത്തേക്ക് ഞാൻ ഒരു മോഡൽ “ഒപ്റ്റിമൈസ്” ചെയ്തപ്പോഴാണ് മരം മുറിക്കൽ തടസ്സമാണെന്ന് മനസ്സിലായത്. അമിതമായി അച്ചടിക്കുന്നത് പരിശീലനത്തെ മന്ദഗതിയിലാക്കിയേക്കാം. അതെ, അത് സംഭവിക്കാം.
9) മൾട്ടി-ജിപിയു പരിശീലനം - ഡിഡിപി, എൻസിസിഎൽ, കുഴപ്പങ്ങളില്ലാതെ സ്കെയിലിംഗ് 🧩🤝
കൂടുതൽ വേഗതയോ വലിയ മോഡലുകളോ വേണമെന്ന് ആഗ്രഹിച്ചാൽ, മൾട്ടി-ജിപിയുവിലേക്ക് പോകും. ഇവിടെയാണ് കാര്യങ്ങൾ കൂടുതൽ വഷളാകുന്നത്.
പൊതുവായ സമീപനങ്ങൾ
-
ഡാറ്റ പാരലൽ (ഡിഡിപി)
-
GPU-കളിൽ ബാച്ചുകൾ വിഭജിക്കുക, ഗ്രേഡിയന്റുകൾ സമന്വയിപ്പിക്കുക
-
സാധാരണയായി ഡിഫോൾട്ട് "നല്ലത്" ഓപ്ഷൻ ( PyTorch DDP ഡോക്സ് )
-
-
മോഡൽ പാരലൽ / ടെൻസർ പാരലൽ
-
മോഡൽ GPU-കളിൽ വിഭജിക്കുക (വളരെ വലിയ മോഡലുകൾക്ക്)
-
-
പൈപ്പ്ലൈൻ സമാന്തരം
-
മോഡൽ ലെയറുകൾ ഘട്ടങ്ങളായി വിഭജിക്കുക (ഒരു അസംബ്ലി ലൈൻ പോലെ, പക്ഷേ ടെൻസറുകൾക്ക്)
-
നിങ്ങൾ തുടക്കക്കാരനാണെങ്കിൽ, DDP-ശൈലിയിലുള്ള പരിശീലനമാണ് ഏറ്റവും നല്ലത്. ( PyTorch DDP ട്യൂട്ടോറിയൽ )
മൾട്ടി-ജിപിയുവിനുള്ള പ്രായോഗിക നുറുങ്ങുകൾ
-
GPU-കൾ സമാനമായ കഴിവുള്ളവയാണെന്ന് ഉറപ്പാക്കുക (മിക്സിംഗ് തടസ്സമാകാം)
-
ഇന്റർകണക്റ്റ് കാണുക: സിങ്ക്-ഹെവി വർക്ക്ലോഡുകൾക്ക് NVLink vs PCIe പ്രധാനമാണ് ( NVIDIA NVLink അവലോകനം , NVIDIA NVLink ഡോക്സ് )
-
ഓരോ GPU ബാച്ച് വലുപ്പങ്ങളും സന്തുലിതമായി നിലനിർത്തുക
-
സിപിയുവും സംഭരണവും അവഗണിക്കരുത് - മൾട്ടി-ജിപിയുവിന് ഡാറ്റ തടസ്സങ്ങൾ വർദ്ധിപ്പിക്കാൻ കഴിയും
അതെ, NCCL പിശകുകൾ "എന്തുകൊണ്ട് ഇപ്പോൾ" എന്നതിൽ പൊതിഞ്ഞ ഒരു നിഗൂഢതയിൽ പൊതിഞ്ഞ ഒരു കടങ്കഥ പോലെ തോന്നാം. നിങ്ങൾ ശപിക്കപ്പെട്ടവരല്ല. ഒരുപക്ഷേ. ( NCCL അവലോകനം )
10) മോണിറ്ററിംഗും പ്രൊഫൈലിംഗും - നിങ്ങളുടെ സമയം ലാഭിക്കുന്ന ആകർഷകമല്ലാത്ത കാര്യങ്ങൾ 📈🧯
ആരംഭിക്കാൻ നിങ്ങൾക്ക് ആഡംബര ഡാഷ്ബോർഡുകൾ ആവശ്യമില്ല. എന്തെങ്കിലും ഓഫാകുമ്പോൾ നിങ്ങൾ ശ്രദ്ധിക്കേണ്ടതുണ്ട്.
ശ്രദ്ധിക്കേണ്ട പ്രധാന സിഗ്നലുകൾ
-
ജിപിയു ഉപയോഗം : ഇത് സ്ഥിരമായി ഉയർന്നതാണോ അതോ മൂർച്ചയുള്ളതാണോ?
-
മെമ്മറി ഉപയോഗം : സ്ഥിരതയുള്ളതോ, കയറുന്നതോ, അതോ വിചിത്രമോ?
-
പവർ ഡ്രാഫ്റ്റ് : അസാധാരണമാംവിധം കുറവ് എന്നത് ഉപയോഗക്കുറവിനെ സൂചിപ്പിക്കുന്നു.
-
താപനില : തുടർച്ചയായ ഉയർന്ന താപനില പ്രകടനത്തെ മന്ദഗതിയിലാക്കും.
-
സിപിയു ഉപയോഗം : ഡാറ്റ പൈപ്പ്ലൈൻ പ്രശ്നങ്ങൾ ഇവിടെ കാണിക്കുന്നു ( പൈടോർച്ച് പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് )
പ്രൊഫൈലിംഗ് മാനസികാവസ്ഥ (ലളിതമായ പതിപ്പ്)
-
GPU ഉപയോഗം കുറവാണെങ്കിൽ - ഡാറ്റ അല്ലെങ്കിൽ CPU തടസ്സം
-
GPU ഉയർന്നതാണെങ്കിലും വേഗത കുറഞ്ഞതാണെങ്കിൽ - കേർണൽ കാര്യക്ഷമതയില്ലായ്മ, കൃത്യത, അല്ലെങ്കിൽ മോഡൽ ആർക്കിടെക്ചർ
-
പരിശീലന വേഗത ക്രമരഹിതമായി കുറയുകയാണെങ്കിൽ - തെർമൽ ത്രോട്ടിലിംഗ്, പശ്ചാത്തല പ്രക്രിയകൾ, I/O വിള്ളലുകൾ
എനിക്കറിയാം, നിരീക്ഷണം അത്ര രസകരമല്ലെന്ന് തോന്നുന്നു. പക്ഷേ അത് ഫ്ലോസ്സിംഗ് പോലെയാണ്. ശല്യപ്പെടുത്തുന്നതാണ്, പിന്നെ പെട്ടെന്ന് നിങ്ങളുടെ ജീവിതം മെച്ചപ്പെടും.
11) പ്രശ്നപരിഹാരം - സാധാരണ സംശയിക്കപ്പെടുന്നവർ (സാധാരണമല്ലാത്തവർ) 🧰😵💫
ഈ ഭാഗം അടിസ്ഥാനപരമായി: "എക്കാലവും ഒരേ അഞ്ച് ലക്കങ്ങൾ."
പ്രശ്നം: CUDA മെമ്മറിയിലില്ല
പരിഹാരങ്ങൾ:
-
ബാച്ച് വലുപ്പം കുറയ്ക്കുക
-
മിക്സഡ് പ്രിസിഷൻ ഉപയോഗിക്കുക ( പൈടോർച്ച് എഎംപി ഡോക്സ് , ടെൻസർഫ്ലോ മിക്സഡ് പ്രിസിഷൻ ഗൈഡ് )
-
ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ ( ട്രാൻസ്ഫോർമറുകൾ പരിശീലന രേഖകൾ (ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ, fp16) )
-
ചെക്ക്പോയിന്റ് ആക്ടിവേഷനുകൾ ( torch.utils.checkpoint )
-
മറ്റ് GPU പ്രക്രിയകൾ അടയ്ക്കുക
പ്രശ്നം: പരിശീലനം അബദ്ധത്തിൽ സിപിയുവിൽ പ്രവർത്തിക്കുന്നു
പരിഹാരങ്ങൾ:
-
ക്യുഡിഎയിലേക്ക്മാറ്റുന്നത് ഉറപ്പാക്കുക. -
ടെൻസറുകൾ
cuda- -
ഫ്രെയിംവർക്ക് ഡിവൈസ് കോൺഫിഗറേഷൻ പരിശോധിക്കുക ( പൈടോർച്ച് സിയുഡിഎ ഡോക്സ് )
പ്രശ്നം: വിചിത്രമായ ക്രാഷുകൾ അല്ലെങ്കിൽ നിയമവിരുദ്ധമായ മെമ്മറി ആക്സസ്
പരിഹാരങ്ങൾ:
-
ഡ്രൈവർ + റൺടൈം കോംപാറ്റിബിലിറ്റി സ്ഥിരീകരിക്കുക ( പൈടോർച്ച് ആരംഭിക്കുക (CUDA സെലക്ടർ) , ടെൻസർഫ്ലോ ഇൻസ്റ്റാൾ (പിപ്പ്) )
-
ഒരു വൃത്തിയുള്ള പരിസ്ഥിതി പരീക്ഷിച്ചു നോക്കൂ
-
കസ്റ്റം ഓപ്സുകൾ കുറയ്ക്കുക
-
പുനർനിർമ്മിക്കുന്നതിനായി ഡിറ്റർമിനിസ്റ്റിക്-ഇഷ് ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് വീണ്ടും പ്രവർത്തിപ്പിക്കുക
പ്രശ്നം: പ്രതീക്ഷിച്ചതിലും വേഗത കുറവാണ്
പരിഹാരങ്ങൾ:
-
ഡാറ്റലോഡർ ത്രൂപുട്ട് പരിശോധിക്കുക ( പൈടോർച്ച് പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് )
-
ബാച്ച് വലുപ്പം വർദ്ധിപ്പിക്കുക
-
ലോഗിംഗ് കുറയ്ക്കുക
-
മിക്സഡ് പ്രിസിഷൻ പ്രാപ്തമാക്കുക ( പൈടോർച്ച് എഎംപി ഡോക്സ് )
-
പ്രൊഫൈൽ ഘട്ട സമയ ബ്രേക്ക്ഡൗൺ
പ്രശ്നം: മൾട്ടി-ജിപിയു ഹാംഗ് ചെയ്യുന്നു
പരിഹാരങ്ങൾ:
-
ശരിയായ ബാക്കെൻഡ് ക്രമീകരണങ്ങൾ സ്ഥിരീകരിക്കുക ( പൈടോർച്ച് വിതരണം ചെയ്ത ഡോക്സ് )
-
NCCL പരിസ്ഥിതി കോൺഫിഗറേഷനുകൾ പരിശോധിക്കുക (ശ്രദ്ധിക്കുക) ( NCCL അവലോകനം )
-
ആദ്യം സിംഗിൾ GPU പരീക്ഷിക്കുക
-
നെറ്റ്വർക്ക് / ഇന്റർകണക്റ്റ് ആരോഗ്യകരമാണെന്ന് ഉറപ്പാക്കുക
ചെറിയ ഒരു ബാക്ക്ട്രാക്കിംഗ് കുറിപ്പ്: ചിലപ്പോൾ പരിഹാരം അക്ഷരാർത്ഥത്തിൽ റീബൂട്ട് ചെയ്യുന്നതായിരിക്കും. അത് മണ്ടത്തരമായി തോന്നുന്നു. ഇത് പ്രവർത്തിക്കുന്നു. കമ്പ്യൂട്ടറുകൾ അങ്ങനെയാണ്.
12) ചെലവും പ്രായോഗികതയും - ശരിയായ NVIDIA GPU തിരഞ്ഞെടുത്ത് കൂടുതൽ ചിന്തിക്കാതെ സജ്ജീകരിക്കുക 💸🧠
എല്ലാ പ്രോജക്റ്റിനും ഏറ്റവും വലിയ GPU ആവശ്യമില്ല. ചിലപ്പോൾ നിങ്ങൾക്ക് ആവശ്യത്തിന് GPU ആവശ്യമാണ്.
നിങ്ങൾ മീഡിയം മോഡലുകൾ ഫൈൻ-ട്യൂൺ ചെയ്യുകയാണെങ്കിൽ
-
VRAM-നും സ്ഥിരതയ്ക്കും മുൻഗണന നൽകുക
-
മിക്സഡ് പ്രിസിഷൻ വളരെയധികം സഹായിക്കുന്നു ( പൈടോർച്ച് എഎംപി ഡോക്സ് , ടെൻസർഫ്ലോ മിക്സഡ് പ്രിസിഷൻ ഗൈഡ് )
-
ശക്തമായ ഒരു GPU ഉപയോഗിച്ച് നിങ്ങൾക്ക് പലപ്പോഴും രക്ഷപ്പെടാൻ കഴിയും
നിങ്ങൾ ആദ്യം മുതൽ വലിയ മോഡലുകളെ പരിശീലിപ്പിക്കുകയാണെങ്കിൽ
-
നിങ്ങൾക്ക് ഒന്നിലധികം GPU-കൾ അല്ലെങ്കിൽ വളരെ വലിയ VRAM ആവശ്യമായി വരും
-
നിങ്ങൾ NVLink-നെക്കുറിച്ചും ആശയവിനിമയ വേഗതയെക്കുറിച്ചും ശ്രദ്ധിക്കും ( NVIDIA NVLink അവലോകനം , NCCL അവലോകനം )
-
നിങ്ങൾ മെമ്മറി ഒപ്റ്റിമൈസറുകൾ (സീറോ, ഓഫ്ലോഡ്, മുതലായവ) ഉപയോഗിക്കുമെന്ന് തോന്നുന്നു ( ഡീപ്സ്പീഡ് സീറോ ഡോക്സ് , മൈക്രോസോഫ്റ്റ് റിസർച്ച്: സീറോ/ഡീപ്സ്പീഡ് )
നിങ്ങൾ പരീക്ഷണങ്ങൾ നടത്തുകയാണെങ്കിൽ
-
നിങ്ങൾക്ക് വേഗത്തിലുള്ള ആവർത്തനം വേണം
-
നിങ്ങളുടെ മുഴുവൻ പണവും ജിപിയുവിൽ ചെലവഴിച്ച് സ്റ്റോറേജും റാമും നഷ്ടപ്പെടുത്തരുത്
-
ഒരു സന്തുലിത സംവിധാനം ഒരു വശത്ത് നിന്ന് മറ്റൊന്നിലേക്ക് (മിക്ക ദിവസവും) വ്യതിചലിക്കുന്നു
സത്യത്തിൽ, "തികഞ്ഞ" ഹാർഡ്വെയർ തിരഞ്ഞെടുപ്പുകൾ പിന്തുടർന്ന് നിങ്ങൾക്ക് ആഴ്ചകൾ പാഴാക്കാൻ കഴിയും. പ്രായോഗികമായ എന്തെങ്കിലും നിർമ്മിക്കുക, അളക്കുക, തുടർന്ന് ക്രമീകരിക്കുക. യഥാർത്ഥ ശത്രു ഒരു ഫീഡ്ബാക്ക് ലൂപ്പ് ഇല്ലാത്തതാണ്.
സമാപന കുറിപ്പുകൾ - AI പരിശീലനത്തിനായി NVIDIA GPU-കൾ എങ്ങനെ ഉപയോഗിക്കാം 😌✅
AI പരിശീലനത്തിനായി NVIDIA GPU-കൾ എങ്ങനെ ഉപയോഗിക്കാം എന്നതിനെക്കുറിച്ചുള്ള ഈ ഗൈഡിൽ നിന്ന് നിങ്ങൾക്ക് മറ്റൊന്നും മനസ്സിലാകുന്നില്ലെങ്കിൽ , ഇത് എടുക്കുക:
-
ആദ്യം
എൻവിഡിയ-സ്മിഉറപ്പാക്കുക എൻവിഡിയ എൻവിഡിയ-സ്മി ഡോക്സ് ) -
ഒരു വൃത്തിയുള്ള സോഫ്റ്റ്വെയർ പാത്ത് തിരഞ്ഞെടുക്കുക (ഫ്രെയിംവർക്ക് ബണ്ടിൽ ചെയ്ത CUDA ആണ് പലപ്പോഴും ഏറ്റവും എളുപ്പമുള്ളത്) ( PyTorch Get Started (CUDA selector) )
-
സ്കെയിൽ അപ്പ് ചെയ്യുന്നതിന് മുമ്പ് ഒരു ചെറിയ GPU പരിശീലന റൺ സാധൂകരിക്കുക ( torch.cuda.is_available )
-
ഒരു പരിമിതമായ പാന്റ്രി ഷെൽഫ് പോലെ VRAM കൈകാര്യം ചെയ്യുക
-
മിക്സഡ് പ്രിസിഷൻ നേരത്തെ തന്നെ ഉപയോഗിക്കുക - ഇത് വെറും "നൂതനമായ കാര്യങ്ങൾ" മാത്രമല്ല ( PyTorch AMP ഡോക്സ് , TensorFlow മിക്സഡ് പ്രിസിഷൻ ഗൈഡ് )
-
വേഗത കുറവാണെങ്കിൽ, GPU-യെ ( PyTorch പെർഫോമൻസ് ട്യൂണിംഗ് ഗൈഡ് )
-
മൾട്ടി-ജിപിയു ശക്തമാണ്, പക്ഷേ സങ്കീർണ്ണത ചേർക്കുന്നു - ക്രമേണ സ്കെയിൽ ചെയ്യുക ( പൈടോർച്ച് ഡിഡിപി ഡോക്സ് , എൻസിസിഎൽ അവലോകനം )
-
പ്രശ്നങ്ങൾ നേരത്തെ ദൃശ്യമാകുന്നതിനായി ഉപയോഗവും താപനിലയും നിരീക്ഷിക്കുക ( NVIDIA nvidia-smi ഡോക്സ് )
NVIDIA GPU-കളിലെ പരിശീലനം ഭയപ്പെടുത്തുന്ന ഒരു കഴിവാണ്, പിന്നീട് പെട്ടെന്ന് അത്... സാധാരണമായി. ഡ്രൈവിംഗ് പഠിക്കുന്നത് പോലെ. ആദ്യം എല്ലാം ഉച്ചത്തിലും ആശയക്കുഴപ്പത്തിലും ആയിരിക്കും, നിങ്ങൾ വളരെ കഠിനമായി വാഹനം ഓടിക്കുന്നു. പിന്നെ ഒരു ദിവസം നിങ്ങൾ ക്രൂയിസ് ചെയ്യുന്നു, കാപ്പി കുടിക്കുന്നു, ഒരു ബാച്ച് സൈസ് പ്രശ്നം വലിയ കാര്യമൊന്നുമല്ല എന്ന മട്ടിൽ യാദൃശ്ചികമായി ഡീബഗ് ചെയ്യുന്നു ☕😄
പതിവുചോദ്യങ്ങൾ
ഒരു NVIDIA GPU-യിൽ ഒരു AI മോഡലിനെ പരിശീലിപ്പിക്കുക എന്നതിന്റെ അർത്ഥമെന്താണ്?
ഒരു NVIDIA GPU-യിലെ പരിശീലനം എന്നാൽ നിങ്ങളുടെ മോഡൽ പാരാമീറ്ററുകളും പരിശീലന ബാച്ചുകളും GPU VRAM-ൽ ജീവിക്കുന്നു എന്നാണ് അർത്ഥമാക്കുന്നത്, കൂടാതെ CUDA കേർണലുകളിലൂടെയാണ് ഹെവി മാത്ത് (ഫോർവേഡ് പാസ്, ബാക്ക്പ്രോപ്പ്, ഒപ്റ്റിമൈസർ ഘട്ടങ്ങൾ) പ്രവർത്തിക്കുന്നത്. പ്രായോഗികമായി, ഇത് പലപ്പോഴും മോഡലും ടെൻസറുകളും cuda- , തുടർന്ന് മെമ്മറി, ഉപയോഗം, താപനില എന്നിവയിൽ ശ്രദ്ധ പുലർത്തുന്നതിലൂടെ ത്രൂപുട്ട് സ്ഥിരത നിലനിർത്തുന്നു.
മറ്റെന്തെങ്കിലും ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് മുമ്പ് ഒരു NVIDIA GPU പ്രവർത്തിക്കുന്നുണ്ടെന്ന് എങ്ങനെ സ്ഥിരീകരിക്കാം
nvidia-smi- ൽ തുടങ്ങുക . GPU നാമം, ഡ്രൈവർ പതിപ്പ്, നിലവിലെ മെമ്മറി ഉപയോഗം, പ്രവർത്തിക്കുന്ന ഏതെങ്കിലും പ്രക്രിയകൾ എന്നിവ ഇത് കാണിക്കണം. nvidia-smi പരാജയപ്പെടുകയാണെങ്കിൽ, PyTorch/TensorFlow/JAX-ൽ ഹോൾഡ് ചെയ്യുക - ആദ്യം ഡ്രൈവർ ദൃശ്യപരത ശരിയാക്കുക. GPU പരിശീലനത്തിനുള്ള അടിസ്ഥാന പരിശോധന "ഓവൻ പ്ലഗ് ഇൻ ചെയ്തിട്ടുണ്ടോ" എന്നതാണ്.
സിസ്റ്റം CUDA യും PyTorch-നൊപ്പം ചേർത്ത CUDA യും തമ്മിൽ തിരഞ്ഞെടുക്കൽ
ചലിക്കുന്ന ഭാഗങ്ങൾ കുറയ്ക്കുന്നതിനാൽ ഫ്രെയിംവർക്ക്-ബണ്ടിൽഡ് CUDA (പല PyTorch വീലുകളെയും പോലെ) ഉപയോഗിക്കുന്നതാണ് ഒരു പൊതു സമീപനം - നിങ്ങൾക്ക് പ്രധാനമായും അനുയോജ്യമായ ഒരു NVIDIA ഡ്രൈവർ ആവശ്യമാണ്. പൂർണ്ണ സിസ്റ്റം CUDA ടൂൾകിറ്റ് ഇൻസ്റ്റാൾ ചെയ്യുന്നത് കൂടുതൽ നിയന്ത്രണം (ഇച്ഛാനുസൃത ബിൽഡുകൾ, കംപൈലിംഗ് ഓപ്സ്) വാഗ്ദാനം ചെയ്യുന്നു, പക്ഷേ പതിപ്പ് പൊരുത്തക്കേടുകൾക്കും ആശയക്കുഴപ്പമുണ്ടാക്കുന്ന റൺടൈം പിശകുകൾക്കും ഇത് കൂടുതൽ അവസരങ്ങൾ അവതരിപ്പിക്കുന്നു.
ഒരു NVIDIA GPU ഉപയോഗിച്ചാലും പരിശീലനം ഇപ്പോഴും മന്ദഗതിയിലാകുന്നത് എന്തുകൊണ്ട്?
പലപ്പോഴും, ഇൻപുട്ട് പൈപ്പ്ലൈൻ കാരണം ജിപിയു പട്ടിണി കിടക്കും. ഡാറ്റാലോഡറുകൾ കാലതാമസം വരുത്തുന്നത്, പരിശീലന ഘട്ടത്തിനുള്ളിൽ കനത്ത സിപിയു പ്രീപ്രോസസ്സിംഗ്, ചെറിയ ബാച്ച് വലുപ്പങ്ങൾ, അല്ലെങ്കിൽ മന്ദഗതിയിലുള്ള സംഭരണം എന്നിവയെല്ലാം ഒരു ശക്തമായ ജിപിയുവിനെ നിഷ്ക്രിയ സ്പേസ് ഹീറ്റർ പോലെ പ്രവർത്തിക്കാൻ പ്രേരിപ്പിക്കും. ഡാറ്റാലോഡർ വർക്കർമാർ വർദ്ധിപ്പിക്കുക, പിൻ ചെയ്ത മെമ്മറി പ്രവർത്തനക്ഷമമാക്കുക, പ്രീഫെച്ചിംഗ് ചേർക്കുക, ലോഗിംഗ് ട്രിം ചെയ്യുക എന്നിവയാണ് മോഡലിനെ കുറ്റപ്പെടുത്തുന്നതിന് മുമ്പ് സാധാരണയായി ചെയ്യുന്ന ആദ്യ നീക്കങ്ങൾ.
NVIDIA GPU പരിശീലന സമയത്ത് “CUDA മെമ്മറിയിൽ നിന്ന് പുറത്തായി” എന്ന പിശകുകൾ എങ്ങനെ തടയാം
മിക്ക പരിഹാരങ്ങളും VRAM തന്ത്രങ്ങളാണ്: ബാച്ച് വലുപ്പം കുറയ്ക്കുക, മിക്സഡ് പ്രിസിഷൻ (FP16/BF16) പ്രാപ്തമാക്കുക, ഗ്രേഡിയന്റ് അക്യുമുലേഷൻ ഉപയോഗിക്കുക, സീക്വൻസ് ദൈർഘ്യം/ക്രോപ്പ് വലുപ്പം കുറയ്ക്കുക, അല്ലെങ്കിൽ ആക്ടിവേഷൻ ചെക്ക്പോയിന്റിംഗ് ഉപയോഗിക്കുക. മെമ്മറി ഉപയോഗിക്കുന്ന മറ്റ് GPU പ്രക്രിയകളും പരിശോധിക്കുക. ചില പരീക്ഷണങ്ങളും പിശകുകളും സാധാരണമാണ് - പ്രായോഗിക GPU പരിശീലനത്തിൽ VRAM ബജറ്റിംഗ് ഒരു പ്രധാന ശീലമായി മാറുന്നു.
പരിശീലന സ്ക്രിപ്റ്റ് അവസാനിച്ചതിനു ശേഷവും VRAM പൂർണ്ണമായി കാണപ്പെടാൻ കഴിയുന്നത് എന്തുകൊണ്ട്?
ഫ്രെയിംവർക്കുകൾ പലപ്പോഴും വേഗതയ്ക്കായി GPU മെമ്മറി കാഷെ ചെയ്യുന്നു, അതിനാൽ അനുവദിച്ച മെമ്മറി കുറയുമ്പോഴും റിസർവ്ഡ് മെമ്മറി ഉയർന്ന നിലയിൽ തുടരാം. ഇത് ഒരു ചോർച്ച പോലെ തോന്നാം, പക്ഷേ പലപ്പോഴും കാഷിംഗ് അലോക്കേറ്റർ രൂപകൽപ്പന ചെയ്തതുപോലെ പ്രവർത്തിക്കുന്നു. ഒരു അസ്വസ്ഥതയുണ്ടാക്കുന്ന സ്നാപ്പ്ഷോട്ടിൽ ഉറപ്പിക്കുന്നതിനുപകരം, കാലക്രമേണ പാറ്റേൺ ട്രാക്ക് ചെയ്യുകയും “അയച്ചതും റിസർവ്ഡ് ചെയ്തതും” താരതമ്യം ചെയ്യുകയും ചെയ്യുക എന്നതാണ് പ്രായോഗിക ശീലം.
ഒരു മോഡൽ സിപിയുവിൽ നിശബ്ദമായി പരിശീലനം നടത്തുന്നില്ലെന്ന് എങ്ങനെ സ്ഥിരീകരിക്കാം
സാനിറ്റി-ചെക്ക് നേരത്തെ: torch.cuda.is_available() സ്ഥിരീകരിക്കുക True എന്ന് , verify next(model.parameters()).device cuda എന്ന് കാണിക്കുന്നു , പിശകുകളില്ലാതെ ഒരു ഫോർവേഡ് പാസ് പ്രവർത്തിപ്പിക്കുക. പ്രകടനം സംശയാസ്പദമായി മന്ദഗതിയിലാണെന്ന് തോന്നുകയാണെങ്കിൽ, നിങ്ങളുടെ ബാച്ചുകൾ GPU-ലേക്ക് നീക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. മോഡൽ നീക്കുകയും അബദ്ധത്തിൽ ഡാറ്റ പിന്നിൽ ഉപേക്ഷിക്കുകയും ചെയ്യുന്നത് സാധാരണമാണ്.
മൾട്ടി-ജിപിയു പരിശീലനത്തിലേക്കുള്ള ഏറ്റവും ലളിതമായ വഴി
ഡാറ്റ പാരലൽ (ഡിഡിപി-സ്റ്റൈൽ പരിശീലനം) ആണ് പലപ്പോഴും ഏറ്റവും മികച്ച ആദ്യപടി: ജിപിയു-കളിലുടനീളം ബാച്ചുകൾ വിഭജിക്കുക, ഗ്രേഡിയന്റുകൾ സമന്വയിപ്പിക്കുക. ആക്സിലറേറ്റ് പോലുള്ള ഉപകരണങ്ങൾ പൂർണ്ണമായി മാറ്റിയെഴുതാതെ തന്നെ മൾട്ടി-ജിപിയുവിനെ വേദനാജനകമാക്കും. അധിക വേരിയബിളുകൾ പ്രതീക്ഷിക്കുക - എൻസിസിഎൽ കമ്മ്യൂണിക്കേഷൻ, ഇന്റർകണക്റ്റ് വ്യത്യാസങ്ങൾ (എൻവിലിങ്ക് vs പിസിഐഇ), ആംപ്ലിഫൈഡ് ഡാറ്റ ബോട്ടിൽനെക്കുകൾ - അതിനാൽ ഒരു സോളിഡ് സിംഗിൾ-ജിപിയു റണ്ണിന് ശേഷം ക്രമേണ സ്കെയിലിംഗ് മികച്ചതായിരിക്കും.
പ്രശ്നങ്ങൾ നേരത്തേ കണ്ടെത്തുന്നതിന് NVIDIA GPU പരിശീലന സമയത്ത് എന്തൊക്കെ നിരീക്ഷിക്കണം
GPU ഉപയോഗം, മെമ്മറി ഉപയോഗം (സ്റ്റേബിൾ vs ക്ലൈംബിംഗ്), പവർ ഡ്രാഫ്റ്റ്, താപനില എന്നിവ നിരീക്ഷിക്കുക - ത്രോട്ടിലിംഗ് വേഗത നിശബ്ദമായി കുറയ്ക്കും. CPU ഉപയോഗത്തിലും ശ്രദ്ധ ചെലുത്തുക, കാരണം ഡാറ്റ പൈപ്പ്ലൈൻ പ്രശ്നം പലപ്പോഴും ആദ്യം അവിടെ ദൃശ്യമാകും. ഉപയോഗം സ്പൈക്കി അല്ലെങ്കിൽ കുറവാണെങ്കിൽ, I/O അല്ലെങ്കിൽ ഡാറ്റലോഡറുകൾ സംശയിക്കുക; അത് ഉയർന്നതാണെങ്കിലും സ്റ്റെപ്പ് സമയം ഇപ്പോഴും മന്ദഗതിയിലാണെങ്കിൽ, പ്രൊഫൈൽ കേർണലുകൾ, പ്രിസിഷൻ മോഡ്, സ്റ്റെപ്പ്-ടൈം ബ്രേക്ക്ഡൗൺ എന്നിവ.
അവലംബം
-
എൻവിഡിയ - എൻവിഡിയ എൻവിഡിയ-എസ്എംഐ ഡോക്സ് - docs.nvidia.com
-
NVIDIA - NVIDIA സിസ്റ്റം മാനേജ്മെന്റ് ഇന്റർഫേസ് (NVSMI) - developer.nvidia.com
-
NVIDIA - NVIDIA NVLink അവലോകനം - nvidia.com
-
പൈടോർച്ച് - പൈടോർച്ച് ആരംഭിക്കുക (CUDA സെലക്ടർ) - pytorch.org
-
പൈടോർച്ച് - പൈടോർച്ച് CUDA ഡോക്സ് - docs.pytorch.org
-
ടെൻസർഫ്ലോ - ടെൻസർഫ്ലോ ഇൻസ്റ്റാൾ (പിപ്പ്) - tensorflow.org
-
ജാക്സ് - ജാക്സ് ക്വിക്ക്സ്റ്റാർട്ട് - docs.jax.dev
-
ആലിംഗന മുഖം - പരിശീലക ഡോക്സ് - huggingface.co
-
ലൈറ്റ്നിംഗ് AI - ലൈറ്റ്നിംഗ് ഡോക്സ് - lightning.ai
-
ഡീപ്സ്പീഡ് - സീറോ ഡോക്സ് - deepspeed.readthedocs.io
-
മൈക്രോസോഫ്റ്റ് റിസർച്ച് - മൈക്രോസോഫ്റ്റ് റിസർച്ച്: സീറോ/ഡീപ്സ്പീഡ് - microsoft.com
-
പൈടോർച്ച് ഫോറങ്ങൾ - പൈടോർച്ച് ഫോറം: CUDA-യിൽ മോഡൽ പരിശോധിക്കുക - discuss.pytorch.org