લોકલ ગ્રેડિયન્ટ એક્યુમ્યુલેશન ટ્રેનિંગની ઝડપ 1.7x વધારે છે

પાઇપલાઇન્સમાં આઈડલ ટાઇમ (idle time) ને કારણે ટ્રેનિંગની ઝડપ ઘણીવાર અટકી જાય છે. આ આઈડલ ટાઇમને 'બબલ' (bubble) કહેવામાં આવે છે.

PACI નામની એક નવી પદ્ધતિ આ સમસ્યાનો ઉકેલ લાવે છે. તે આ બબલ્સને દૂર કરે છે અને ટ્રેનિંગની ઝડપ 1.69x વધારે છે.

મોટાભાગની ટીમો 1F1B-flush નામની વ્યૂહરચનાનો ઉપયોગ કરે છે. આ પદ્ધતિ વેટ્સ (weights) ને સુસંગત રાખે છે પરંતુ ખાલી સ્લોટ્સ બનાવે છે જ્યાં સિસ્ટમ ડેટાની રાહ જુએ છે. આ રાહ જોવાનો સમય બધું જ ધીમું કરી દે છે.

અન્ય અસિંક્રોનસ (asynchronous) પદ્ધતિઓ આને સુધારવાનો પ્રયાસ કરે છે. તેઓ weight stashing અથવા ડુપ્લીકેટ કોપી જેવી જટિલ યુક્તિઓનો ઉપયોગ કરે છે. આ યુક્તિઓ વધુ પડતી મેમરી વાપરે છે અને ઘણીવાર ટ્રેનિંગને અસ્થિર બનાવે છે.

PACI એક અલગ માર્ગ અપનાવે છે. તે local gradient accumulation નો ઉપયોગ કરે છે. આ વૈશ્વિક સિંક્રનાઇઝેશન (global synchronization) ની જરૂરિયાત વિના પાઇપલાઇનને વ્યસ્ત રાખે છે.

PACI શા માટે મહત્વનું છે તે અહીં છે:

  • તે પ્રમાણભૂત પદ્ધતિઓની સ્થિરતા સાથે મેળ ખાય છે.
  • તે સમાન પ્રમાણમાં મેમરીનો ઉપયોગ કરે છે.
  • તે ઝડપી પરંતુ વધુ ભારે કોન્ફિગરેશન્સની ઝડપ સુધી પહોંચે છે.
  • તે time-to-accuracy ને 1.69x ઘટાડે છે.

GPT-2 Medium સાથેના પરીક્ષણોમાં, PACI લક્ષ્ય ચોકસાઈ (target accuracy) ખૂબ જ ઝડપથી પ્રાપ્ત કરી હતી. તે દર્શાવે છે કે તમે વેટ ડ્રિફ્ટ (weight drift) ના નાના પ્રમાણના બદલામાં કાર્યક્ષમતામાં મોટો વધારો મેળવી શકો છો.

એન્જિનિયરિંગ ટીમો માટે, આનો અર્થ હાર્ડવેર ખર્ચમાં 40% નો ઘટાડો છે. તમે વધુ GPUs ખરીદ્યા વગર અથવા વધુ મેમરી ઉમેર્યા વગર ઝડપી પરિણામો મેળવી શકો છો.

સંશોધકોએ GPT-શૈલીના મોડલ્સ સાથે 8-સ્ટેજ પાઇપલાઇન પર આનું પરીક્ષણ કર્યું હતું. જો તમે તમારી પાઇપલાઇન ડેપ્થ અથવા બેચ સાઇઝ બદલો છો, તો તમારે accumulation window ને ટ્યુન કરવાની જરૂર પડી શકે છે.

તમે આ જાતે ટેસ્ટ કરી શકો છો. લેખકો તેમના રિપોઝિટરીમાં a local-accumulation wrapper પ્રદાન કરે છે. સ્પીડઅપ જોવા માટે તમારા વર્તમાન flush synchronizer ને તેની સાથે બદલો.

Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk

Optional learning community: https://t.me/GyaanSetuAi