Soprogramerji AI morda ne bodo povzročili toliko hroščev, kot se je bali PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Soprogramerji AI morda ne bodo povzročili toliko hroščev, kot se jih je balo

Modeli strojnega učenja, ki poganjajo orodja za dokončanje kode naslednje generacije, kot je GitHub Copilot, lahko razvijalcem programske opreme pomagajo pri pisanju bolj funkcionalne kode, ne da bi bila manj varna.

To je okvirni rezultat, čeprav majhne raziskave, v kateri je sodelovalo 58 oseb, ki jo je izvedla skupina računalniških znanstvenikov Univerze v New Yorku.

In papir distribuirano prek ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt in Siddharth Garg pripovedujejo, kako so na preizkus postavili varnost izvorne kode, ustvarjene s pomočjo velikih jezikovnih modelov (LLM).

LLM-ji, kot je družina OpenAI GPT, so bili usposobljeni na ogromnih količinah javnih besedilnih podatkov ali javni izvorni kodi v primeru kodeksa OpenAI, potomca GPT in temelja GitHubovega kopilota. Kot taki lahko reproducirajo napake, ki so jih v preteklosti naredili človeški programerji, kar ponazarja pravilo »smeti noter, smeti ven«. Obstajal je strah, da bodo ta orodja regurgitirala in predlagala slabo kodo razvijalcem, ki bi to vstavili v svoje projekte.

Še več, varnost kode je lahko kontekstualna: koda, ki je varna sama po sebi, je lahko nevarna, ko se izvaja v določenem zaporedju z drugo programsko opremo. Torej lahko ta orodja za samodejno dokončanje ponujajo predloge kode, ki so same po sebi v redu, vendar so povezane z drugo kodo zdaj ranljive za napade ali preprosto pokvarjene. Kljub temu se je izkazalo, da ta orodja morda dejansko ne poslabšajo ljudi pri programiranju.

V nekem smislu so raziskovalci sami gasili požar. Pred približno enim letom sta dva ista računalničarja prispevala k članku z naslovom »Zaspal za tipkovnico? Ocenjevanje varnosti prispevkov kode GitHub Copilot.« To delo je bilo najdeno O 40 odstotkov rezultat Copilot je vključeval slabosti, ki bi jih lahko izkoristili (CWE).

»Razlika med obema dokumentoma je v tem, da je 'Asleep at the Keyboard' obravnaval popolnoma avtomatizirano ustvarjanje kode (brez človeka v zanki) in nismo imeli človeških uporabnikov, s katerimi bi lahko primerjali, zato nismo mogli povedati ničesar o tem, kako varnost Copilota v primerjavi z varnostjo kode, ki jo je napisal človek,« je v elektronskem sporočilu za Register.

»Uporabniški študijski dokument se poskuša neposredno lotiti teh manjkajočih delov, tako da polovica uporabnikov dobi pomoč od Codexa (model, ki poganja Copilot), druga polovica pa napiše kodo sama. Vendar pa je tudi ožji od 'Zaspal za tipkovnico': pogledali smo le eno nalogo in en jezik (pisanje povezanega seznama v C).«

V zadnjem poročilu »Varnostne posledice pomočnikov kode velikega jezikovnega modela: uporabniška študija« nekoliko raznolika skupina raziskovalcev NYU priznava, da prejšnje delo ni uspelo realistično modelirati uporabe orodij, ki temeljijo na LLM, kot je Copilot.

"Prvič, te študije predpostavljajo, da LLM samodejno ustvari celotno kodo (to bomo imenovali način avtopilota)," pojasnjujejo boffini v svojem prispevku.

»V praksi LLM-ji za dokončanje kode pomagajo razvijalcem s predlogi, ki jih bodo sprejeli, uredili ali zavrnili. To pomeni, da medtem ko lahko programerji, ki so nagnjeni k avtomatizaciji, naivno sprejmejo dokončanja z napakami, lahko drugi razvijalci izdelajo kodo z manj napakami, tako da prihranjeni čas uporabijo za odpravljanje napak.«

Drugič, opažajo, da čeprav se je izkazalo, da LLM-ji proizvajajo hroščečo kodo, to počnejo tudi ljudje. Napake v podatkih o usposabljanju LLM so prišle od ljudi.

Zato namesto da bi sami ocenili hrošče kode, ustvarjene z LLM, so se odločili primerjati, kako se koda, ki so jo ustvarili človeški razvijalci ob pomoči modelov strojnega učenja, razlikuje od kode, ki jo je ustvarilo samostojno programiranje.

Računalniški znanstveniki NYU so zbrali 58 udeležencev ankete – dodiplomske in podiplomske študente tečajev razvoja programske opreme – in jih razdelili v kontrolno skupino, ki je delala brez predlogov, in skupino za pomoč, ki je imela dostop do sistema predlogov po meri, zgrajenega z uporabo OpenAI. Codex API. Za primerjavo so uporabili tudi model Codex, da so ustvarili 30 rešitev za dane programske probleme. Ta skupina avtopilotov je delovala predvsem kot druga kontrolna skupina.

Skupini za pomoč in nadzor sta lahko uporabljali spletne vire, kot sta Google in Stack Overflow, ne pa prositi drugih za pomoč. Delo je bilo opravljeno v Visual Studio Code znotraj spletnega vsebnika, zgrajenega z odprto kodo Anubis.

Udeleženci so bili naprošeni, naj dokončajo program nakupovalnega seznama z uporabo programskega jezika C, ker "je razvijalcem enostavno nehote izraziti ranljive vzorce oblikovanja v C" in ker uporabljena veriga orodij prevajalnika C ne preverja napak v enaki meri kot verige orodij za sodobni jeziki, kot sta Go in Rust, to počnejo.

Ko so raziskovalci ročno analizirali kodo, ki sta jo izdelali skupini Control in Assistant, so ugotovili, da v nasprotju s prejšnjim delom predlogi kode AI stvari na splošno niso poslabšali.

Videti je jasno, vendar so podrobnosti

"Nismo našli nobenih dokazov, ki bi nakazovali, da pomoč Codexa poveča pojavnost varnostnih hroščev," je zapisano v dokumentu, pri čemer je bilo ugotovljeno, da majhen vzorec študije pomeni, da je nadaljnja študija upravičena. "Ravno nasprotno, obstaja nekaj dokazov, ki kažejo, da se CWE/LoC [vrstice kode] zmanjšajo s pomočjo Codexa."

"Težko je sklepati o tem z veliko statistično gotovostjo," je v telefonskem intervjuju za Register.

Težko je to sklepati z veliko statistično gotovostjo

Kljub temu je dejal: "Podatki kažejo, da uporabniki Copilota niso bili veliko slabši."

Dolan-Gavitt je glede ugotovitev podobno previden.

»Trenutna analiza rezultatov naše uporabniške študije ni odkrila nobenih statistično pomembnih razlik – to še vedno analiziramo, tudi kvalitativno, zato iz tega ne bi delal trdnih zaključkov, zlasti ker je bila majhna študija (skupno 58 uporabnikov) in vsi uporabniki so bili študenti in ne profesionalni razvijalci,« je dejal.

»Kljub temu lahko rečemo, da pri teh uporabnikih pri tej nalogi vpliv pomoči AI na varnost verjetno ni bil velik: če bi imel zelo velik vpliv, bi opazili večjo razliko med obema skupinama. Trenutno izvajamo malo več statistične analize, da bi to natančno določili.”

Poleg tega so se pojavila še nekatera druga spoznanja. Eno je, da so bili udeleženci skupine Assistant bolj produktivni, saj so ustvarili več vrstic kode in dokončali večji del funkcij v nalogi.

»Uporabniki v skupini Assisted so opravili več funkcionalnih testov in ustvarili več funkcionalne kode,« je dejal Garg in dodal, da lahko takšni rezultati pomagajo podjetjem, ki iščejo orodja za pomoč pri kodiranju, da se odločijo, ali jih bodo uvedli.

Drugo je, da so raziskovalci lahko razlikovali rezultate, ki so jih ustvarile skupine za nadzor, pomoč in avtopilot, kar lahko ublaži skrbi o goljufanju z močjo umetne inteligence v izobraževalnih okoljih.

Boffini so tudi ugotovili, da je treba orodja AI obravnavati v kontekstu uporabniške napake. "Uporabniki zagotavljajo pozive, ki lahko vključujejo hrošče, sprejemajo pozive z napakami, ki končajo v 'dokončanih' programih, kot tudi sprejemajo hrošče, ki so pozneje odstranjeni," piše v časopisu. "V nekaterih primerih imajo uporabniki tudi več hroščev, kot je predlagal model!"

Pričakujte nadaljnje delo v tej smeri. ®

Časovni žig:

Več od Register