നിങ്ങളുടെ ഇവാൽസും (Evals) അസ്ഥിരമാണ്: നിങ്ങൾക്ക് വീണ്ടും ലഭിക്കാത്ത ഒരു പാസ് റേറ്റിനെ വിശ്വസിക്കുന്നത് നിർത്തുക

AI ഏജന്റുകൾ നോൺ-ഡിറ്റർമിനിസ്റ്റിക് (non-deterministic) ആണെന്ന് മിക്കവർക്കും അറിയാം. നിങ്ങൾ ഒരേ പ്രോംപ്റ്റ് അയച്ചാലും വ്യത്യസ്തമായ ഔട്ട്പുട്ടുകൾ ലഭിച്ചേക്കാം.

ഞങ്ങൾ ഇത് അംഗീകരിച്ചു. ഈ ഏജന്റുകളെ ഗ്രേഡ് ചെയ്യാൻ LLM-കളെ ജഡ്ജിമാരായി ഉപയോഗിക്കാൻ ഞങ്ങൾ തുടങ്ങി.

എന്നാൽ ഞങ്ങൾ വലിയൊരു തെറ്റ് ചെയ്തു. ഞങ്ങളുടെ ജഡ്ജിമാർ ഡിറ്റർമിനിസ്റ്റിക് ആണെന്ന് ഞങ്ങൾ കരുതി. എന്നാൽ അവ അങ്ങനെയല്ല.

നിങ്ങളുടെ ഇവാൽ സ്യൂട്ട് (eval suite) എന്നത് മറ്റൊരു റാൻഡം സിസ്റ്റത്തെ ഗ്രേഡ് ചെയ്യുന്ന ഒരു റാൻഡം സിസ്റ്റമാണ്. നിങ്ങളുടെ ഗ്രേഡർ എത്രത്തോളം വ്യതിയാനം (wobble) കാണിക്കുന്നു എന്ന് നിങ്ങൾ അളക്കുന്നില്ലെങ്കിൽ, നിങ്ങൾക്ക് ഒരു ക്വാളിറ്റി ഗേറ്റ് ഇല്ല എന്നാണ് അർത്ഥം. പകരം അതൊരു നാണയം എറിയുന്നതുപോലെ ആകുന്നു.

ഒരു സപ്പോർട്ട് ഏജന്റിന്റെ കാര്യത്തിൽ ഇത് സംഭവിക്കുന്നത് ഞാൻ കണ്ടു. ഡാഷ്‌ബോർഡ് ആഴ്ചകളോളം പച്ച നിറത്തിൽ (green) തുടർന്നു. എന്നാൽ പിന്നീട് ഉപഭോക്താക്കളുടെ പരാതികൾ വർദ്ധിച്ചു. ഞാൻ പഴയ 200 മറുപടികളിൽ അതേ ഇവാൽ നടത്തി. അവയിൽ 14 എണ്ണത്തിലും വിധി (verdict) മാറി. ഏജന്റ് മാറിയില്ല, പകരം ജഡ്ജി തന്റെ തീരുമാനം മാറ്റി.

അസ്ഥിരമായ (flaky) ഒരു ഗേറ്റ് ഇല്ലാത്തതിനേക്കാൾ മോശമാണ്. അത് നിങ്ങൾക്ക് തെറ്റായ ആത്മവിശ്വാസം നൽകുന്നു.

നിങ്ങളുടെ ഇവാൽസ് പരാജയപ്പെടാൻ മൂന്ന് കാരണങ്ങളുണ്ട്:

  • ജഡ്ജി മോഡൽ: ഓരോ LLM ജഡ്ജിക്കും വ്യതിയാനം (variance) ഉണ്ട്. ടെമ്പറേച്ചർ (temperature) 0 ആണെങ്കിൽ പോലും, ഒരേ ഫലം ലഭിക്കുമെന്ന് പ്രൊവൈഡർമാർ ഉറപ്പുനൽകുന്നില്ല. ഒരു നിശബ്ദമായ മോഡൽ അപ്‌ഡേറ്റ് നിങ്ങളുടെ ബേസ്‌ലൈനിനെ (baseline) ഒറ്റരാത്രികൊണ്ട് നശിപ്പിച്ചേക്കാം.
  • ദ ഹാർനെസ് (The harness): റണ്ണുകൾക്കിടയിൽ നിങ്ങളുടെ കോൺടെക്സ്റ്റോ (context) ടൂൾ ഔട്ട്പുട്ടുകളോ മാറുന്നുണ്ടെങ്കിൽ, ജഡ്ജിക്ക് ലഭിക്കുന്നത് വ്യത്യസ്തമായ ഒരു ചോദ്യമായിരിക്കും. ഇൻപുട്ടിൽ വ്യതിയാനം (drift) സംഭവിക്കുന്നു.
  • റൂബ്രിക് (The rubric): "ഇത് നല്ലതാണോ?" എന്നതുപോലുള്ള അവ്യക്തമായ നിയമങ്ങൾ വ്യതിയാനത്തിന് കാരണമാകുന്നു. കൃത്യവും വ്യക്തവുമായ നിയമങ്ങൾ ഇത് കുറയ്ക്കുന്നു.

അസ്ഥിരമായ ഇവാൽസിനെ അസ്ഥിരമായ സോഫ്റ്റ്‌വെയർ ടെസ്റ്റുകളെപ്പോലെ കാണണം. അവ പുറത്തിറക്കരുത് (ship). അവയെ ക്വാറന്റൈൻ ചെയ്യുക. ഫ്ലേക്ക് റേറ്റ് (flake rate) അളക്കുക.

ഒരു സിംഗിൾ പാസ് റേറ്റ് റിപ്പോർട്ട് ചെയ്യുന്നത് നിർത്തുക. പകരം അഗ്രിമെന്റ് (agreement) റിപ്പോർട്ട് ചെയ്യാൻ തുടങ്ങുക.

ഓരോ ജഡ്ജി കോളും പലതവണ നടത്തുക. ജഡ്ജിക്ക് സ്വന്തം തീരുമാനത്തിൽ ഉറപ്പില്ലെങ്കിൽ, ആ വിധി ഒരു സിഗ്നലല്ല. അത് UNSTABLE ആണ്.

ഒരു UNSTABLE റിസൾട്ട് നിങ്ങളുടെ CI/CD പൈപ്പ്‌ലൈനിൽ ഒരു പ്രധാന ഫലമായിരിക്കണം. അത് വ്യക്തമായി പരാജയം (fail) കാണിക്കണം.

അസ്ഥിരമായ ഒരു ഇവാൽ പരിഹരിക്കാൻ നിങ്ങൾക്ക് രണ്ട് കാര്യങ്ങൾ ആവശ്യമാണ്:

  1. ഒരു സ്കോറിംഗ് ലെയർ (scoring layer): ഇത് സ്റ്റെബിലിറ്റി കണക്കാക്കുകയും ഫലങ്ങളെ PASS, FAIL, അല്ലെങ്കിൽ UNSTABLE എന്നിങ്ങനെ മാറ്റുകയും ചെയ്യുന്നു.
  2. ഒരു ട്രേസിംഗ് ലെയർ (tracing layer): ഓരോ റണ്ണിലും റോ ബൈറ്റുകൾ (raw bytes), കൃത്യമായ പ്രോംപ്റ്റ്, ടൂൾ ഔട്ട്പുട്ടുകൾ എന്നിവ നിങ്ങൾ കാണണം.

ട്രേസുകൾ ഇല്ലെങ്കിൽ, മോഡൽ വെറുതെ റാൻഡം ആണെന്ന് നിങ്ങൾ കരുതും. നിങ്ങൾ ടെമ്പറേച്ചർ കുറയ്ക്കുകയും അത് പരിഹരിച്ചുവെന്ന് വിചാരിക്കുകയും ചെയ്യും. എന്നാൽ നിങ്ങൾ അത് പരിഹരിച്ചില്ല. നിങ്ങൾ ബഗ്ഗിനെ കുറച്ചുകൂടി നിശബ്ദമാക്കി എന്ന് മാത്രം.

യഥാർത്ഥ ക്വാളിറ്റി ഉണ്ടാക്കിയെടുക്കാൻ ഈ നിയമങ്ങൾ പാലിക്കുക:

  • ശരാശരികൾ മാത്രമല്ല, അഗ്രിമെന്റ് റിപ്പോർട്ട് ചെയ്യുക.
  • നിങ്ങളുടെ പൈപ്പ്‌ലൈനിൽ UNSTABLE എന്നത് ഒരു പരാജയപ്പെട്ട അവസ്ഥയായി (failing state) മാറ്റുക.
  • നിങ്ങളുടെ ജഡ്ജി മോഡൽ പതിപ്പുകൾ (versions) പിൻ ചെയ്യുക.
  • ഒരു ചെക്ക് പരാജയപ്പെടുമ്പോൾ ട്രേസുകൾ വായിക്കുക.

നിങ്ങൾക്ക് വീണ്ടും ലഭിക്കാത്ത (reproduce ചെയ്യാൻ കഴിയാത്ത) ഒരു പച്ച ഡാഷ്‌ബോർഡ് ഒരു സിഗ്നലല്ല. അത് നിങ്ങൾ സ്വയം പറയുന്ന ഒരു കഥ മാത്രമാണ്.

Source: https://dev.to/saurav_bhattacharya/your-evals-are-flaky-too-stop-trusting-a-pass-rate-you-cant-reproduce-6pk

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