𝗠𝗶𝘅𝘁𝘂𝗿𝗲 𝗼𝗳 𝗘𝘅𝗽𝗲𝗿𝘁𝘀 (𝗠𝗼𝗘): 𝗛𝗼𝘄 𝗜𝘁 𝗪𝗼𝗿𝗸𝘀 𝗮𝗻𝗱 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗨𝘀𝗲 𝗜𝘁
നാല് പുതിയ GPU-കൾ കൂടി വാങ്ങാതെ തന്നെ ഒരു 7B മോഡലിൽ നിന്ന് 70B മോഡലിലേക്ക് വളരാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു എന്ന് കരുതുക.
ആരെങ്കിലും Mixture of Experts (MoE) നിർദ്ദേശിക്കുന്നു. വെറും 7B കമ്പ്യൂട്ട് ഉപയോഗിച്ച് 70B-യുടെ പ്രകടനം നേടാമെന്നാണ് അവർ അവകാശപ്പെടുന്നത്.
ഇത് കേൾക്കുമ്പോൾ എല്ലാം സൗജന്യമായി ലഭിക്കുന്നത് പോലെ തോന്നും. എന്നാൽ ഇതിലൊരു ചതിക്കുഴിയുണ്ട്.
ഇത് എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്?
Llama 3.2 പോലുള്ള ഒരു ഡെൻസ് ട്രാൻസ്ഫോർമർ (dense transformer) ഓരോ ടോക്കണിനും അതിന്റെ പാരമീറ്ററുകളുടെ 100 ശതമാനവും ഉപയോഗിക്കുന്നു. നിങ്ങൾ 7B-യിൽ നിന്ന് 70B-ലേക്ക് വളരുമ്പോൾ, മെമ്മറിയും കമ്പ്യൂട്ടും 10 മടങ്ങ് വർദ്ധിക്കുന്നു.
MoE ഇവ രണ്ടിനെയും വേർതിരിക്കുന്നു. മോഡൽ കൂടുതൽ പാരമീറ്ററുകൾ സംഭരിക്കുന്നു (കൂടുതൽ മെമ്മറി ചിലവ്), എന്നാൽ ഓരോ ടോക്കണിനും അവയുടെ ഒരു ചെറിയ ഭാഗം മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ (കുറഞ്ഞ കമ്പ്യൂട്ട് ചിലവ്).
The Trade-off:
• Dense 7B: 7B ആകെ പാരമീറ്ററുകൾ | 7B ആക്റ്റീവ് | 7B കമ്പ്യൂട്ട് | 14 GB മെമ്മറി • Dense 70B: 70B ആകെ പാരമീറ്ററുകൾ | 70B ആക്റ്റീവ് | 70B കമ്പ്യൂട്ട് | 140 GB മെമ്മറി • MoE 45B: 45B ആകെ പാരമീറ്ററുകൾ | ~13B ആക്റ്റീവ് | ~14B കമ്പ്യൂട്ട് | ~90 GB മെമ്മറി
ചതിക്കുഴി: ഒരു വലിയ മോഡലിന് ആവശ്യമായ മെമ്മറി ചിലവ് നിങ്ങൾ ഇപ്പോഴും വഹിക്കേണ്ടി വരും. നിങ്ങൾക്ക് ഒരു 24 GB GPU-വിൽ Mixtral പ്രവർത്തിപ്പിക്കാൻ കഴിയില്ല. ഉപയോഗിക്കാത്ത എക്സ്പെർട്ടുകളെപ്പോലും ഉൾക്കൊള്ളാൻ ആവശ്യമായ VRAM നിങ്ങൾക്ക് ആവശ്യമാണ്.
The Architecture:
ഒരു സ്പാർസ് MoE-യിൽ (sparse MoE), സാധാരണ ഫീഡ്-ഫോർവേഡ് നെറ്റ്വർക്കിന് (FFN) പകരം ഒന്നിലധികം "എക്സ്പെർട്ട്" FFN-കളും ഒരു ലേൺഡ് റൂട്ടറും (learned router) ഉപയോഗിക്കുന്നു.
- റൂട്ടർ ഒരു ടോക്കൺ സ്വീകരിക്കുന്നു.
- അത് ഓരോ എക്സ്പെർട്ടിനും ഒരു സ്കോർ നൽകുന്നു.
- അത് ഏറ്റവും മികച്ച k എക്സ്പെർട്ടുകളെ തിരഞ്ഞെടുക്കുന്നു (Mixtral-നെ സംബന്ധിച്ചിടത്തോളം, k=2).
- ആ ടോക്കണിനെ ആ എക്സ്പെർട്ടുകളിലൂടെ മാത്രം കടത്തിവിടുന്നു.
- അത് ഫലങ്ങൾ സംയോജിപ്പിക്കുന്നു.
റൂട്ടർ എന്നത് ഒരു മാനുവൽ ഷെഡ്യൂളർ അല്ല. അതൊരു ലേൺഡ് ലെയർ (learned layer) ആണ്. മാത്തമാറ്റിക്സ് ടോക്കണുകൾ ഒരു എക്സ്പെർട്ടിനും കോഡ് ടോക്കണുകൾ മറ്റൊരു എക്സ്പെർട്ടിനും അയക്കാൻ അത് സ്വയം പഠിക്കുന്നു.
The Training Challenge:
ഏറ്റവും വലിയ അപകടം റൂട്ടർ കൊളാപ്സ് (router collapse) ആണ്. സഹായമില്ലെങ്കിൽ, റൂട്ടർ എല്ലാ ടോക്കണുകളും ഒരേ രണ്ട് എക്സ്പെർട്ടുകളിലേക്ക് മാത്രം അയച്ചേക്കാം. ആ എക്സ്പെർട്ടുകൾ കൂടുതൽ മികച്ചതാകുന്നു, അതിനാൽ റൂട്ടർ അവരിലേക്ക് കൂടുതൽ ട്രാഫിക് അയക്കുന്നു. മറ്റ് എക്സ്പെർട്ടുകൾ ഉപയോഗശൂന്യമായി മാറുന്നു.
ഇത് പരിഹരിക്കാൻ എഞ്ചിനീയർമാർ ഒരു ഓക്സിലറി ലോഡ്-ബാലൻസിംഗ് ലോസ് (auxiliary load-balancing loss) ഉപയോഗിക്കുന്നു. എല്ലാ എക്സ്പെർട്ടുകളെയും തുല്യമായി ഉപയോഗിക്കുന്നില്ലെങ്കിൽ ഇത് മോഡലിനെ ശിക്ഷിക്കുന്നു (penalizes).
When to avoid MoE:
• നിങ്ങൾക്ക് സ്ഥിരമായ ലേറ്റൻസി (latency) ആവശ്യമുണ്ടെങ്കിൽ: MoE-യിൽ പ്രതികരണ സമയത്തിൽ വ്യത്യാസങ്ങൾ (variance) കൂടുതലായിരിക്കും. • പരിമിതമായ VRAM ആണെങ്കിൽ: നിങ്ങളുടെ പക്കൽ 48 GB-യിൽ താഴെയുള്ള ഒരു GPU മാത്രമേയുള്ളൂ എങ്കിൽ, ഡെൻസ് മോഡലുകൾ തന്നെ ഉപയോഗിക്കുക. • ചെറിയ മോഡലുകൾ നിർമ്മിക്കുകയാണെങ്കിൽ: നിങ്ങളുടെ മോഡൽ 3B പാരമീറ്ററുകളിൽ താഴെയാണെങ്കിൽ, ഇതിന്റെ ഓവർഹെഡ് (overhead) വളരെ കൂടുതലായിരിക്കും. • ലളിതമായ ഇൻഫ്രാസ്ട്രക്ചർ ആവശ്യമാണെങ്കിൽ: MoE-ക്ക് സങ്കീർണ്ണമായ എക്സ്പെർട്ട് പാരലലിസവും (expert parallelism) കസ്റ്റം കേർണലുകളും ആവശ്യമാണ്.
30B പാരമീറ്ററുകൾക്ക് മുകളിലുള്ള ഒരു ഡെൻസ് ബേസ്ലൈൻ ലക്ഷ്യമിടുകയും അത് പിന്തുണയ്ക്കാൻ ആവശ്യമായ മെമ്മറി ഉണ്ടാവുകയും ചെയ്യുമ്പോഴാണ് MoE ഏറ്റവും അനുയോജ്യം.
Optional learning community: https://t.me/GyaanSetuAi