ശീർഷകം: ബഗ് ഉണ്ടായത് ഒരു ആക്സിസിൽ (axis) വന്ന പിശക് മൂലമാണ്

PyTorch-ന്റെ chunked-scan നടപ്പിലാക്കുന്നതിലെ (implementation) ഒരു മറഞ്ഞിരിക്കുന്ന ബഗ്, വേഗതയേറിയ fused kernels ഇല്ലാത്ത സാഹചര്യങ്ങളിൽ ചില hybrid മോഡലുകളെ ഭാവിയിലെ ടോക്കണുകൾ (future tokens) മുൻകൂട്ടി കാണാൻ അനുവദിക്കുന്നു. ഇത് Zamba2-1.2B, Nemotron-H-8B തുടങ്ങിയ ചെക്ക്‌പോയിന്റുകളെ (checkpoints) ബാധിക്കുന്നു. തെറ്റായ ഒരു ആക്സിസിലൂടെ (axis) നടത്തിയ ഒരു സിംഗിൾ റിഡക്ഷൻ (reduction) മൂലമാണ് ഈ പിശക് ഉണ്ടാകുന്നത്. മിക്ക CI പൈപ്പ്‌ലൈനുകളും CPU റണ്ണുകളും ആശ്രയിക്കുന്ന എക്സിക്യൂഷൻ പാത്തിൽ (execution path) ആണ് ഇത് പ്രകടമാകുന്നത്.

എന്തുകൊണ്ടാണ് ഈ ബഗ് പ്രധാനമാകുന്നത്

Hybrid, state-space മോഡലുകൾ ഇനി അറ്റൻഷനെ (attention) മാത്രം ആശ്രയിക്കുന്നില്ല; അവ ലീനിയർ റിക്കറൻസുകൾ (linear recurrences), സ്കാനുകൾ (scans), കൺവല്യൂഷനുകൾ (convolutions) എന്നിവയും ഉപയോഗിക്കുന്നു. അറ്റൻഷൻ മാട്രിക്സിലെ ഭാവി ടോക്കണുകളെ തടയുന്ന ഒരു മാസ്കിംഗ് ഓപ്പറേഷൻ (masking operation), ഈ അധിക പ്രവർത്തനങ്ങൾക്ക് കാസാലിറ്റി (causality) ഉറപ്പാക്കണമെന്നില്ല. സ്കാൻ ശരിയായി കൈകാര്യം ചെയ്യേണ്ട വേഗതയേറിയ fused kernels ഇല്ലാത്തപ്പോൾ, PyTorch ഒരു പ്യുവർ-പൈത്തൺ (pure-Python) chunked-scan പാത്തിലേക്ക് മാറുന്നു. ആ പാത്തിൽ ആക്സിസ് മിക്സപ്പ് (axis-mixup) ഉള്ളതിനാൽ, ഇൻഫറൻസ് (inference) സമയത്ത് പിൽക്കാല സ്ഥാനങ്ങളിൽ നിന്നുള്ള വിവരങ്ങൾ പിന്നോട്ട് ഒഴുകാൻ ഇത് അനുവദിക്കുന്നു.

ഈ വിവര ചോർച്ച (leak) നിശബ്ദമാണ്. ഇത് മോഡലിനെ ക്രാഷ് ചെയ്യുകയോ വ്യക്തമായ ഒരു എറർ കാണിക്കുകയോ ചെയ്യുന്നില്ല. പകരം, മോഡൽ ഫലപ്രദമായി ചതിക്കുന്നു (cheating)—അതായത് പ്രവചിക്കേണ്ട ടോക്കണുകൾ തന്നെ അത് മുൻകൂട്ടി കാണുന്നു—അതുകൊണ്ട് ലോസും (loss) പെർപ്ലെക്സിറ്റിയും (perplexity) കൃത്രിമമായി കുറഞ്ഞതായി തോന്നും. അതിനാൽ, ഈ മെട്രിക്സുകളെ വിശ്വസിക്കുന്ന ഏതൊരു ഡൗൺസ്ട്രീം ഇവാലുവേഷനും (downstream evaluation) തകരാറിലായ ഒരു അടിത്തറയിലാണ് നിർമ്മിക്കപ്പെട്ടിരിക്കുന്നത്.

പ്രശ്നം എങ്ങനെ കണ്ടെത്തി

ഗവേഷകർ ഒരേ മോഡലിലൂടെയുള്ള രണ്ട് ഫോർവേഡ് പാസുകൾ (forward passes) താരതമ്യം ചെയ്തു:

  1. ഒരു റാൻഡം ടോക്കൺ സീക്വൻസ്.
  2. ഒരു ടോക്കൺ മാത്രം മാറ്റം വരുത്തിയ അതേ സീക്വൻസ്.

അവർ ലെയർ തിരിച്ച് ഹിഡൻ സ്റ്റേറ്റുകളിലെ (hidden states) വ്യത്യാസം അളന്നു. മാസ്ക് പരിശോധനയിൽ ഒന്നും കണ്ടെത്താനായില്ല, എന്നാൽ പിശകുകൾ ഉൾപ്പെടുത്തിയ (injected faults) ഒരു പെർ-ലെയർ ഓഡിറ്റ്, ഉൾപ്പെടുത്തിയ 192-ൽ 192 പിശകുകളും കണ്ടെത്തി, ഇത് വിവര ചോർച്ച സ്ഥിരീകരിച്ചു.

transformers ലൈബ്രറിയിലുള്ള ഒരു പരിശോധനയിൽ താഴെ പറയുന്നവ വെളിപ്പെട്ടു:

  • Zamba2-1.2B-ൽ ചങ്ക് സൈസ് (chunk size) 256 ആയി ക്രമീകരിക്കുമ്പോൾ വിവരങ്ങൾ ചോരുന്നു.
  • Nemotron-H-8B-ൽ ചങ്ക് സൈസ് 128 ആകുമ്പോൾ വിവരങ്ങൾ ചോരുന്നു.
  • മറ്റ് മിക്ക ചെക്ക്‌പോയിന്റുകളിലും ഇതേ സാഹചര്യത്തിൽ വിവര ചോർച്ച കണ്ടില്ല.

ഓപ്ഷണൽ ഫ്യൂസ്ഡ് കേർണലുകൾ (optional fused kernels) ഇല്ലാത്തപ്പോഴെല്ലാം പ്രവർത്തിക്കുന്ന chunked-scan കോഡ് പാത്തിലാണ് ഈ തകരാർ നിലനിൽക്കുന്നത്. അതിൽ ഇവ ഉൾപ്പെടുന്നു:

  • എല്ലാ CPU എക്സിക്യൂഷനുകളും.
  • പ്രത്യേക ഫ്യൂസ്ഡ്-കേർണൽ പാക്കേജുകൾ ഇല്ലാത്ത GPU എൻവയോൺമെന്റുകൾ.
  • അധിക ഡിപെൻഡൻസികൾ (dependencies) ഇല്ലാത്ത സ്റ്റാൻഡേർഡ് PyTorch ഇൻസ്റ്റാളേഷനുകൾ.

ഈ കേർണലുകൾ ഇല്ലാത്തപ്പോൾ മാത്രമേ ബഗ് പ്രകടമാകൂ എന്നതിനാൽ, ഇത് CI എൻവയോൺമെന്റുകളിലും CPU-കളിലും പ്രത്യക്ഷപ്പെടാം.

ആർക്കൊക്കെയാണ് ഇതിന്റെ ആഘാതം നേരിടേണ്ടി വരുന്നത്?

ഫ്യൂസ്ഡ് കേർണലുകൾ ഇല്ലാതെ hybrid മോഡലുകൾ ട്രെയിൻ ചെയ്യുന്നതോ, ഫൈൻ-ട്യൂൺ ചെയ്യുന്നതോ, അല്ലെങ്കിൽ ഇവാലുവേറ്റ് ചെയ്യുന്നതോ ആയ ഏതൊരു ടീമിനും അമിതമായ പെർഫോമൻസ് നമ്പറുകൾ പ്രസിദ്ധീകരിക്കാൻ സാധ്യതയുണ്ട്. ലോസിലോ പെർപ്ലെക്സിറ്റിയിലോ കാണുന്ന മെച്ചം വെറും മിഥ്യയാണ്; മോഡൽ യഥാർത്ഥത്തിൽ "മുൻകൂട്ടി നോക്കിയിരിക്കുകയാണ്" (looked ahead). ഗവേഷണ ഗ്രൂപ്പുകളെ സംബന്ധിച്ചിടത്തോളം, ഇത് സ്റ്റേറ്റ്-ഓഫ്-ദി-ആർട്ട് (state-of-the-art) ഫലങ്ങളെക്കുറിച്ചുള്ള തെറ്റായ അവകാശവാദങ്ങളിലേക്ക് നയിച്ചേക്കാം. വാണിജ്യപരമായ ഉപയോഗങ്ങളിൽ (commercial deployments), മോഡൽ ശരിയായി പഠിക്കാത്ത കാര്യങ്ങൾ ജനറേഷൻ ടാസ്ക്കുകളിൽ തെറ്റുകൾ വരുത്താൻ ഇത് കാരണമാകും.

എതിർവാദം

ശരിയായി ഉപയോഗിക്കുന്ന ഒരു കോസൽ മാസ്ക് (causal mask) ഭാവി ടോക്കണുകളുടെ ചോർച്ച തടയാൻ മതിയാകും എന്ന് ചില ഡെവലപ്പർമാർ വാദിക്കുന്നു. എന്നാൽ ഈ ബഗ് ആ വാദത്തെ തെറ്റാണെന്ന് തെളിയിക്കുന്നു: സ്കാനുകൾ, കൺവല്യൂഷനുകൾ, ചില നോർമലൈസേഷൻ ലെയറുകൾ എന്നിവ മാസ്കിനെ പൂർണ്ണമായും മറികടന്നേക്കാം. ഡാറ്റ ഒഴുകുന്ന എല്ലാ ഇടങ്ങളിലും കാസാലിറ്റി ഉറപ്പാക്കേണ്ടതുണ്ടെന്നും, അറ്റൻഷൻ മാട്രിക്സിൽ മാത്രം പോരാത്തതുകൂടിയാണ് chunked-scan-ലെ ആക്സിസ് മിക്സപ്പ് കാണിക്കുന്നത്.

ഇനി ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

  • ഡിപെൻഡൻസി ഹൈജീൻ (Dependency hygiene): എല്ലാ ട്രെയിനിംഗ്, ഇൻഫറൻസ് നോഡുകളിലും, പ്രത്യേകിച്ച് CI പൈപ്പ്‌ലൈനുകളിൽ, വേഗതയേറിയ ഫ്യൂസ്ഡ്-കേർണൽ പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക.
  • ഓഡിറ്റ് സ്ക്രിപ്റ്റുകൾ (Audit scripts): കണ്ടെത്തിയവർ ശുപാർശ ചെയ്ത രണ്ട് ഘട്ടങ്ങളുള്ള ഓഡിറ്റ് രീതി പിന്തുടരുക:
    • പോസിറ്റീവ് കൺട്രോൾ ആയി, നിങ്ങൾ പരിശോധിക്കുന്ന ചെക്ക്‌പോയിന്റിലേക്ക് അറിയപ്പെടുന്ന ഒരു പിശക് (fault) ഉൾപ്പെടുത്തുക.
    • മോഡലിന്റെ ചങ്ക് അല്ലെങ്കിൽ വിൻഡോ സൈസിനേക്കാൾ വലിയ സീക്വൻസുകൾ റൺ ചെയ്യുക; ചെറിയ സീക്വൻസുകൾ ഈ ചോർച്ച പുറത്തുകൊണ്ടുവരില്ല.

ചങ്ക് സൈസിനേക്കാൾ വലിയ സീക്വൻസ് ലെങ്ത് ഉള്ള ഏതെങ്കിലും hybrid അല്ലെങ്കിൽ state-space ചെക്ക്‌പോയിന്റിൽ ഓഡിറ്റ് നടത്തുന്നതിലൂടെ മോഡൽ ഇപ്പോഴും അപകടസാധ്യതയുള്ളതാണോ എന്ന് കണ്ടെത്താം.

ചുരുക്കത്തിൽ: എല്ലാ സ്റ്റാൻഡേർഡ് ടെസ്റ്റുകളും പാസായ ഒരു മോഡൽ പോലും, എക്സിക്യൂഷൻ പാത്ത് ഒരു ബഗ്ഗിയായ ഇംപ്ലിമെന്റേഷനിലേക്ക് മാറുമ്പോൾ നിശബ്ദമായി ചതിച്ചേക്കാം. വേഗതയേറിയ ഫ്യൂസ്ഡ് കേർണലുകൾ ഉണ്ടെന്ന് ഉറപ്പുവരുത്തുന്നതും—അറ്റൻഷൻ മാസ്കുകൾക്ക് അപ്പുറമുള്ള വിവര ചോർച്ചക്കായി പ്രത്യേകം പരിശോധിക്കുന്നതും—ഇനി മുതൽ ഏതൊരു hybrid മോഡലിന്റെയും മെട്രിക്സുകളെ വിശ്വസിക്കുന്നതിന് മുമ്പുള്ള അത്യാവശ്യ ഘട്ടങ്ങളാണ്.