ഓപ്പൺ സോഴ്സ് AI എന്നത് വളരെ വിപുലമായ ഒരു ആവാസവ്യവസ്ഥയായി വളർന്നിരിക്കുന്നു. ഒരു ഉൽപ്പന്നം തന്നെ ഡസൻ കണക്കിന് റെപ്പോസിറ്ററികളിൽ നിന്നുള്ള കോഡുകൾ ഉപയോഗിച്ചേക്കാം, ഒന്നിലധികം സ്രോതസ്സുകളിൽ നിന്നുള്ള ട്രെയിനിംഗ് ഡാറ്റയെ ആശ്രയിച്ചേക്കാം, കൂടാതെ വളരെ കുറച്ച് ടീമുകൾക്ക് മാത്രം പൂർണ്ണമായി ഡോക്യുമെന്റ് ചെയ്യാൻ കഴിയുന്ന പ്രത്യേക ഹാർഡ്‌വെയർ കോൺഫിഗറേഷനുകളിൽ പ്രവർത്തിച്ചേക്കാം. ഇത്തരം ഡിപെൻഡൻസികൾ (dependencies) ട്രാക്ക് ചെയ്യുന്നത് പ്രയാസകരമാണ്. ആ സ്റ്റാക്കിന്റെ ഏതെല്ലാം ഭാഗങ്ങളാണ് ഇന്റർനെറ്റുമായി ബന്ധപ്പെട്ടിരിക്കുന്നത് എന്ന് മനസ്സിലാക്കുന്നത് അതിലും പ്രയാസകരമാണ്. Current AI പുറത്തിറക്കിയ Open Source AI Gap Map v0.1 ഈ അരാജകത്വത്തിന് ഒരു ക്രമം കൊണ്ടുവരാൻ ശ്രമിക്കുന്നു, സെക്യൂരിറ്റി ടീമുകൾ ഇത് നിർബന്ധമായും വായിക്കേണ്ട ഒന്നായി കണക്കാക്കണം.

ഈ ഇൻഡക്സ് 421 ഓപ്പൺ സോഴ്സ് AI ഉൽപ്പന്നങ്ങളെ തരംതിരിച്ചിരിക്കുന്നു. അവയെ നാല് വിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു: AI മോഡലുകൾ, ഡാറ്റാസെറ്റുകൾ, സോഫ്റ്റ്‌വെയർ ടൂളുകൾ, ഹാർഡ്‌വെയർ. ഇതിന് പിന്നിൽ, 16,000-ലധികം GitHub റെപ്പോസിറ്ററികളെ ട്രാക്ക് ചെയ്യുന്ന 1,184 YAML ഫയലുകളാണ് ഈ പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുന്നത്. 421 ഉൽപ്പന്നങ്ങളും 16,000 റെപ്പോസിറ്ററികളും തമ്മിലുള്ള ഈ വ്യത്യാസം ഒരു വലിയ കാര്യമാണ് സൂചിപ്പിക്കുന്നത്. മിക്ക AI ആപ്ലിക്കേഷനുകളും സ്വയം പൂർണ്ണമായവ (self-contained monoliths) അല്ല. അവ ഇൻഫറൻസ് എൻജിനുകൾ, ഫൈൻ-ട്യൂണിംഗ് സ്ക്രിപ്റ്റുകൾ, ഡാറ്റ ലോഡറുകൾ, ഇവാലുവേഷൻ ബെഞ്ച്മാർക്കുകൾ, ഡ്രൈവർ ലെയറുകൾ എന്നിവയുടെ കൂട്ടിച്ചേർക്കലുകളാണ്. ഇവ ഓരോന്നും അവയുടെ തന്നെ മെയിന്റൈനർമാരും, കമ്മിറ്റ് ഹിസ്റ്ററിയും, വൾനറബിലിറ്റി പ്രൊഫൈലുകളുമുള്ള സ്വന്തം റെപ്പോസിറ്ററികളിലാണ് നിലനിൽക്കുന്നത്.

Current AI ഈ ഡാറ്റാസെറ്റ് ഒരു MIT ലൈസൻസിന് കീഴിൽ പ്രസിദ്ധീകരിക്കുകയും അത് പൂർണ്ണമായും പൊതുവായി ലഭ്യമാക്കുകയും ചെയ്തു. ആ തുറന്ന സമീപനമാണ് ഇതിന്റെ ലക്ഷ്യം. ആർക്കും ഇത് ഡൗൺലോഡ് ചെയ്യാനും, YAML വിശകലനം ചെയ്യാനും, ഇതിന് മുകളിൽ പുതിയ ടൂളുകൾ നിർമ്മിക്കാനും കഴിയും. പ്രതിരോധിക്കുന്നവർക്ക് (defenders), ഈ ലഭ്യത ഒരു അവസരമാണ്. എന്നാൽ ആക്രമിക്കുന്നവർക്ക് (attackers), ഇത് അത്രതന്നെ സൗകര്യപ്രദവുമാണ്.

ഈ മാപ്പ് യഥാർത്ഥത്തിൽ എന്താണ് ട്രാക്ക് ചെയ്യുന്നത്

AI ഉപയോഗിക്കുന്ന മിക്ക സ്ഥാപനങ്ങൾക്കും തങ്ങൾ ഉപയോഗിക്കുന്നവയുടെ കൃത്യമായ ഒരു ഇൻവെന്ററി ഇല്ല. ഒരു ടീം ഒരു പ്രശസ്തമായ ഹബ്ബിൽ നിന്ന് ഒരു ലാംഗ്വേജ് മോഡൽ ഡൗൺലോഡ് ചെയ്തേക്കാം, അത് പ്രവർത്തിപ്പിക്കാൻ കുറച്ച് Python പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്തേക്കാം, എന്നിട്ട് ജോലി പൂർത്തിയായി എന്ന് കരുതിയാൽ മതി. എന്നാൽ ആ ലളിതമായ പ്രവർത്തനത്തിന് പിന്നിൽ സങ്കീർണ്ണമായ ഡിപെൻഡൻസികളുടെ ഒരു ശൃംഖലയുണ്ട്. മോഡൽ വെയ്റ്റുകൾ (model weights) ഒരു റെപ്പോസിറ്ററിയിൽ നിന്നാണ് വരുന്നത്. ടോക്കണൈസർ കോൺഫിഗറേഷൻ മറ്റൊന്നിൽ നിന്നാണ്. ഇൻഫറൻസ് ഫ്രെയിംവർക്ക് ഒരു മൂന്നാമത്തെ പ്രോജക്റ്റിന്റെ ഫോർക്ക് (fork) ആകാം. CUDA ഡ്രൈവറുകളും കണ്ടെയ്നർ ഇമേജുകളും ഇനിയും മറ്റ് സ്രോതസ്സുകളിൽ നിന്നാണ് വരുന്നത്.

421 വ്യത്യസ്ത AI ഉൽപ്പന്നങ്ങളെ കേന്ദ്രീകരിച്ച് 1,184 YAML ഫയലുകൾ ക്രമീകരിച്ചുകൊണ്ട് Gap Map ഇത് രേഖപ്പെടുത്തുന്നു. ഇവിടെ മാപ്പ് ചെയ്തിരിക്കുന്ന 16,000-ലധികം GitHub റെപ്പോസിറ്ററികൾ ആ ഉൽപ്പന്നങ്ങളെ പ്രവർത്തിപ്പിക്കുന്ന യഥാർത്ഥ കോഡുകളെയും കോൺഫിഗറേഷനുകളെയും ആർട്ടീഫാക്റ്റുകളെയും പ്രതിനിധീകരിക്കുന്നു. എൻട്രികളെ മോഡലുകൾ, ഡാറ്റാസെറ്റുകൾ, സോഫ്റ്റ്‌വെയർ ടൂളുകൾ, ഹാർഡ്‌വെയർ എന്നിങ്ങനെ വേർതിരിക്കുന്നതിലൂടെ, ഇൻഡക്സ് ഒരു അടിസ്ഥാന ചോദ്യം ഉയർത്തുന്നു: നിങ്ങളുടെ സിസ്റ്റങ്ങൾ ഈ നാല് പാളികളിൽ ഏതിനെയാണ് യഥാർത്ഥത്തിൽ സ്പർശിക്കുന്നത് എന്ന് നിങ്ങൾക്കറിയാമോ?

നിങ്ങൾ പ്രൊഡക്ഷനിൽ ഒരു ഓപ്പൺ സോഴ്സ് ലാർജ് ലാംഗ്വേജ് മോഡൽ പ്രവർത്തിപ്പിക്കുന്നുണ്ടെങ്കിൽ, നിങ്ങൾ മിക്കവാറും ഈ നാല് പാളികളിലും ഇടപെടുന്നുണ്ടാകും. നിങ്ങൾ മോഡൽ വെയ്റ്റുകളെയും ആർക്കിടെക്ചറിനെയും ആശ്രയിക്കുന്നു. നിങ്ങൾ അവ നേരിട്ട് ഡൗൺലോഡ് ചെയ്തിട്ടില്ലെങ്കിൽ പോലും, പ്രീ-ട്രെയിനിംഗിനോ ഫൈൻ-ട്യൂണിംഗിനോ ഉപയോഗിച്ച ഡാറ്റാസെറ്റുകളെ നിങ്ങൾ ആശ്രയിക്കുന്നു. മോഡൽ കൺവേർട്ട് ചെയ്യാനോ, ക്വാണ്ടൈസ് (quantize) ചെയ്യാനോ അല്ലെങ്കിൽ സർവ് ചെയ്യാനോ നിങ്ങൾ സോഫ്റ്റ്‌വെയർ ടൂളുകളെ ആശ്രയിക്കുന്നു. കൂടാതെ നിങ്ങൾ GPU-കളിലോ പ്രത്യേക ആക്സിലറേറ്ററുകളിലോ ആണ് പ്രവർത്തിപ്പിക്കുന്നതെങ്കിൽ, ഹാർഡ്‌വെയർ വിഭാഗത്തിൽ വരുന്ന ഫേംവെയർ, ഡ്രൈവർ സ്റ്റാക്കുകളെയും നിങ്ങൾ ആശ്രയിക്കുന്നു.

സുരക്ഷയിലെ ഇരുതലവാൾ

ഈ ഡാറ്റാസെറ്റ് രണ്ട് ലക്ഷ്യങ്ങൾക്കായി ഉപയോഗിക്കാം, സുരക്ഷാ ചുമതലയുള്ളവർ (security leaders) രണ്ട് വശങ്ങളും മനസ്സിലാക്കേണ്ടതുണ്ട്.

പ്രതിരോധപരമായ വശത്ത് (defensive side), നിങ്ങളുടെ AI സപ്ലൈ ചെയിനിനായുള്ള ഒരു ഫോൺ ബുക്ക് പോലെയാണ് Gap Map പ്രവർത്തിക്കുന്നത്. നിങ്ങളുടെ സ്ഥാപനം ആശ്രയിക്കുന്ന റെപ്പോസിറ്ററികളെയും ടൂളുകളെയും ഈ ഇൻഡക്സുമായി താരതമ്യം ചെയ്യാനും നിങ്ങളുടെ കാഴ്ചപ്പാടിലെ (visibility) വിടവുകൾ കണ്ടെത്താനും നിങ്ങൾക്ക് കഴിയും. ഒരു നിർണ്ണായകമായ റെപ്പോസിറ്ററി മാപ്പിൽ കാണുന്നുണ്ടെങ്കിലും നിങ്ങളുടെ സോഫ്റ്റ്‌വെയർ ബിൽ ഓഫ് മെറ്റീരിയൽസിൽ (software bill of materials) ഇല്ലെങ്കിൽ, നിങ്ങൾ ഒരു 'ഷാഡോ AI ഇൻഫ്രാസ്ട്രക്ചർ' കണ്ടെത്തിയിരിക്കാം. ഒരു ശത്രു അത് കണ്ടെത്തുന്നതിന് മുമ്പ് തന്നെ ഇത് അറിയുന്നത് നല്ലതാണ്.

ആക്രമണപരമായ വശത്ത് (offensive side), ഈ ഡാറ്റാസെറ്റ് റെക്കണൈസൻസിന് (reconnaissance) ഏറെ മൂല്യമുള്ള ഒന്നാണ്. ആക്രമണകാരികൾ എപ്പോഴും എക്സ്പോസ്ഡ് ആയ AI ഇൻഫ്രാസ്ട്രക്ചറുകൾക്കും, മോഡൽ സർവിംഗ് എൻഡ് പോയിന്റുകൾക്കും, പ്രശസ്തമായ ML പൈപ്പ്‌ലൈനുകളിലെ ദുർബലമായ ഡിപെൻഡൻസികൾക്കുമായി തിരയുന്നു. അവർക്ക് താൽപ്പര്യമുള്ള വിഭാഗങ്ങളായി തിരിച്ചിട്ടുള്ള ലക്ഷ്യങ്ങളുടെ ഒരു മെഷീൻ-റീഡബിൾ ലിസ്റ്റ് Gap Map നൽകുന്നു. ഒരു സിംഗിൾ YAML പാർസർ ഉപയോഗിച്ച് ആയിരക്കണക്കിന് റെപ്പോസിറ്ററി URL-കൾ വേർതിരിച്ചെടുക്കാം, അവിടെ നിന്ന് ആക്രമണകാരിക്ക് അറിയപ്പെടുന്ന വൾനറബിലിറ്റികളുമായി അവ താരതമ്യം ചെയ്യാനോ, തെറ്റായി കോൺഫിഗർ ചെയ്ത പബ്ലിക് ഇൻസ്റ്റൻസുകൾ കണ്ടെത്താനോ, ഡിപെൻഡൻസി കൺഫ്യൂഷൻ ആക്രമണങ്ങൾക്കായി ഉയർന്ന മൂല്യമുള്ള ലക്ഷ്യങ്ങൾ തിരിച്ചറിയാനോ കഴിയും.

ഡാറ്റ MIT ലൈസൻസിന് കീഴിൽ പൊതുവായി ലഭ്യമായതിനാൽ, ഇത് ഉപയോഗിക്കുന്നതിന് തടസ്സങ്ങളൊന്നുമില്ല. സബ്‌സ്‌ക്രിപ്ഷനോ അനുമതി പ്രക്രിയയോ ഇതിന് ആവശ്യമില്ല. ഈ രൂപകൽപ്പന ഗവേഷകർക്കും പ്രതിരോധിക്കുന്നവർക്കും ഉപയോഗപ്രദമാണെങ്കിലും, ഇത് ഭീഷണി ഉയർത്തുന്നവർക്കും (threat actors) ഒരുപോലെ ഉപകാരപ്രദമാണ്. നിങ്ങളുടെ സിസ്റ്റം സുരക്ഷിതമാക്കാൻ സഹായിക്കുന്ന അതേ ഫയൽ മറ്റൊരാൾക്ക് ഒരു ലക്ഷ്യ പട്ടിക (target list) തയ്യാറാക്കാൻ സഹായിക്കുന്നു.

ഈ വിവരങ്ങൾ ഉപയോഗിച്ച് എന്തുചെയ്യണം

ഈ ഡാറ്റാസെറ്റിനെ ഒരു ത്രെറ്റ് ഇന്റലിജൻസ് ഫീഡ് (threat intelligence feed) പോലെ തന്നെ പരിഗണിക്കുക. ഇത് ബുക്ക്മാർക്ക് ചെയ്ത് മറന്നുപോകാതിരിക്കുക. നിങ്ങളുടെ എൻവയോൺമെന്റിനെതിരെ സജീവമായ പരിശോധനകൾ നടത്തുക.

നിങ്ങളുടെ ടീമുകൾ നിലവിൽ ഉപയോഗിക്കുന്ന എല്ലാ ഓപ്പൺ സോഴ്സ് AI ഘടകങ്ങളുടെയും (open-source AI components) ഒരു പട്ടിക തയ്യാറാക്കി തുടങ്ങുക. പ്രകടമായവയ്ക്ക് അപ്പുറത്തേക്ക് നോക്കുക. നിങ്ങളുടെ ടോക്കണൈസറുകൾ (tokenizers), ഇവാലുവേഷൻ സ്ക്രിപ്റ്റുകൾ (evaluation scripts), ക്വാണ്ടൈസേഷൻ ലൈബ്രറികൾ (quantization libraries), കണ്ടെയ്നർ ബേസ് ഇമേജുകൾ (container base images) എന്നിവ ഏത് റെപ്പോസിറ്ററികളിൽ നിന്നാണ് ലഭിക്കുന്നത് എന്ന് ചോദിച്ചറിയുക. തുടർന്ന്, ആ റെപ്പോസിറ്ററികളെ Gap Map-ൽ ട്രാക്ക് ചെയ്തിട്ടുള്ള 16,000 റെപ്പോസിറ്ററുകളുമായി താരതമ്യം ചെയ്യുക. അവയിൽ പൊരുത്തമുള്ളവ കണ്ടെത്തുകയാണെങ്കിൽ, നിങ്ങളുടെ ഡിപ്പൻഡൻസികൾ (dependencies) ഓപ്പൺ സോഴ്സ് AI ലോകത്തെ ഏറ്റവും പ്രധാനപ്പെട്ട ഇൻഡക്സ് ചെയ്ത ഭാഗങ്ങളിലൊന്നിലാണെന്ന് നിങ്ങൾക്ക് സ്ഥിരീകരിക്കാം. ആ പ്രശസ്തിക്ക് രണ്ട് വശങ്ങളുണ്ട്. ഇത് സാധാരണയായി സജീവമായ പരിപാലനത്തെയും (active maintenance) കമ്മ്യൂണിറ്റി പരിശോധനയെയും സൂചിപ്പിക്കുന്നു, എന്നാൽ ആക്രമണകാരികൾക്ക് ഈ റെപ്പോസിറ്ററികൾ ഉണ്ടെന്ന് അറിയാം എന്നതിനും ഇത് അർത്ഥമുണ്ട്.

അടുത്തതായി, YAML ഘടന തന്നെ പരിശോധിക്കുക. 1,184 ഫയലുകളിൽ ഓരോന്നും ഉൽപ്പന്നങ്ങളെ അവയുടെ അടിസ്ഥാന റെപ്പോസിറ്ററികളുമായി ഒരു സ്റ്റാൻഡേർഡൈസ്ഡ് ഫോർമാറ്റിൽ ബന്ധിപ്പിക്കുന്നു. നിങ്ങളുടെ ഡിപ്പൻഡൻസി മാനിഫെസ്റ്റുകൾ (dependency manifests), പാക്കേജ് ലിസ്റ്റുകൾ (package lists), അല്ലെങ്കിൽ SBOM എക്‌സ്‌പോർട്ടുകൾ (SBOM exports) എന്നിവ ഈ മാപ്പിംഗുകളുമായി താരതമ്യം ചെയ്യാൻ നിങ്ങൾക്ക് ഒരു ലളിതമായ സ്ക്രിപ്റ്റ് എഴുതാവുന്നതാണ്. നിങ്ങളുടെ പ്രൊഡക്ഷൻ സ്റ്റാക്ക് (production stack) നിങ്ങൾ ഇതുവരെ കേട്ടിട്ടില്ലാത്ത റെപ്പോസിറ്ററികളെയാണ് ആശ്രയിക്കുന്നതെന്ന് നിങ്ങൾ കണ്ടെത്തിയാൽ, കൂടുതൽ ആഴത്തിൽ പരിശോധിക്കുക. അറിയപ്പെടാത്ത ഡിപ്പൻഡൻസികളിലാണ് സപ്ലൈ ചെയിൻ ആക്രമണങ്ങൾ (supply chain attacks) ഒളിച്ചിരിക്കുന്നത്.

ഹാർഡ്‌വെയർ ലെയറിന് (hardware layer) പ്രത്യേക ശ്രദ്ധ നൽകുക. സെക്യൂരിറ്റി ടീമുകൾ പലപ്പോഴും സോഫ്റ്റ്‌വെയറുകളിലും മോഡലുകളിലും ശ്രദ്ധ കേന്ദ്രീകരിക്കുകയും ഡ്രൈവറുകളെയും ഫേംവെയറിനെയും (drivers and firmware) വെറും പശ്ചാത്തല കാര്യങ്ങളായി (background noise) കണക്കാക്കുകയും ചെയ്യുന്നു. Gap Map ഹാർഡ്‌വെയറുമായി ബന്ധപ്പെട്ട റെപ്പോസിറ്ററികളെ വ്യക്തമായി ഇൻഡക്സ് ചെയ്യുന്നു, GPU ഡ്രൈവർ സ്റ്റാക്കുകളും (GPU driver stacks), കംപൈലർ ടൂൾചെയിനുകളും (compiler toolchains), ആക്സിലറേറ്റർ ഫേംവെയറുകളും (accelerator firmware) കോഡ് ആണെന്ന് ഇത് നിങ്ങളെ ഓർമ്മിപ്പിക്കണം. അവയിൽ ബഗുകൾ ഉണ്ടാകാം. അവ അപ്‌ഡേറ്റ് ചെയ്യപ്പെടുന്നു. അവ കാലഹരണപ്പെട്ടതാകുമ്പോൾ (out of date), നിങ്ങളുടെ പൈപ്പ്‌ലൈനിലെ ഏറ്റവും എളുപ്പത്തിൽ ആക്രമിക്കാവുന്ന ലക്ഷ്യമായി (softest target) അവ മാറാം.

അവസാനമായി, ഉപയോഗിക്കുക