Izboljšati AI pri reševanju problemov na tekmovanjih v kodiranju

Izboljšati AI pri reševanju problemov na tekmovanjih v kodiranju

Intervju Sposobnosti komercialnih velikih jezikovnih modelov za reševanje problemov konkurenčnega programiranja je mogoče znatno povečati s skrbnim vodenjem njihovih procesov s pametnim in hitrim inženiringom.

Da bi to dokazal, je Codium AI s sedežem v Izraelu zgradil AlphaCodium in sprosti programsko opremo na GitHubu ta mesec. AlphaCodium sam po sebi ni velik jezikovni model. Namesto tega je to metoda, ki izboljšuje zmožnosti reševanja problemov generativnih orodij AI, kot je GPT-4, z uporabo tega, kar izvršni direktor Itamar Friedman imenuje »inženiring pretoka«.

Najprej se osnovnemu velikemu jezikovnemu modelu posreduje programsko vprašanje, od katerega se zahteva, da opiše in povzame težavo. Te informacije nato vodijo, kako naj začne reševati težavo. AlphaCodium definira stvari, na primer, kakšni bi morali biti vhodi in izhodi, ko pridemo do rešitve. Vse to je določeno v naravnem jeziku.

Model nato začne ustvarjati kodo, ki je usklajena s specifikacijami, ki jih je pravkar opisal. Tekmovanja v programiranju, ki od kandidatov zahtevajo, da kodirajo specifikacije, običajno zagotavljajo teste, ki prikazujejo, kaj mora skript prikazati za dani vnos. AlphaCodium ustvari več teh testnih primerov, nato pa preuči možne rešitve, da preveri, ali koda deluje po pričakovanjih.

Če se ne uspe ujemati z nobenim od izhodov, definiranih v katerem koli od testov, model generira različne rešitve, dokler ne opravijo vseh testov ali pa ne uspe. Napake lahko nastanejo, če se njegova koda ne prevede ali je preprosto napačna.

V spodnjem diagramu si lahko ogledate različne korake v procesu inženiringa toka. V veliki meri je razdeljen na fazo predprocesiranja, kjer sistem analizira problem v naravnem jeziku, in fazo iteracije kode, kjer izvaja možne rešitve glede na javne teste in teste, ustvarjene z umetno inteligenco.

alphacodium

Vsi široki koraki, ki vodijo AlphaCodium v ​​ustvarjanje kode za reševanje težav

"Ne vzamemo težave in gremo k modelu ter mu rečemo: 'Hej, prosim ustvari končno rešitev,'" je povedal Friedman Register. "Model prosimo, naj na novo opredeli to težavo v točkah." Če ga poenostavimo in razdelimo na dele, model lažje pozneje ustvari kodo za različne dele algoritma.

V bistvu je inženiring toka postopek, ki vodi proces reševanja problemov modela tako, da ga razdeli na natančno definirane korake. Povedali so nam, da ga pozovemo, naj "ustvarjeno kodo razdeli na majhne podfunkcije, s smiselnimi imeni in funkcionalnostjo", kar povzroči manj napak in olajša testiranje in odpravljanje kode.

»V bistvu smo porabili 95 odstotkov našega časa za inženiring toka in le 5 odstotkov za hitri inženiring in nismo spreminjali pozivov za vsak [korak],« je dodal Friedman.

Inženirji iz Codiuma so preizkusili zmogljivost svojega modela na stotinah problemov, uporabljenih pri preverjanju in testnih delih nabora podatkov CodeForces, ki ga je pred dvema letoma zbral Google DeepMind. Trdijo, da je bil AlphaCodium boljši pri reševanju težav s kodiranjem kot modela AlphaCode in AlphaCode2 podjetja Google DeepMind.

V rezultatih, navedenih v arXiv papirja [PDF] je AlphaCodium uspel pravilno odgovoriti na 44 odstotkov vprašanj v primerjavi s 24 odstotki AlphaCode, medtem ko je ustvaril samo pet rešitev v primerjavi z desetimi izbranimi rešitvami AlphaCode za 107 težav pri preverjanju. Zanimivo je, da se je vrzel zmanjšala, ko je prišlo do 165 testnih nalog, pri čemer je AlphaCodium rešil 29 odstotkov v primerjavi z 28 odstotki AlphaCode.

AlphaCode izbere deset najbolj obetavnih rešitev izmed več deset tisoč ali sto tisoč možnih skriptov, ki jih ustvari – zaradi česar je izvajanje računsko zahtevno.

"Veliko bolj smo se osredotočili na celoten tok testiranja," je dejal Friedman. »Za [Google] so naredili toliko dela na generaciji. Poskušajo ustvariti na stotine drugih možnosti, mi pa ustvarimo zelo malo rešitev, vendar jih res dobro preizkusimo, da vodimo izboljšavo kode.«

AlphaCodium je malenkost boljši od najnovejšega modela AlphaCode2 podjetja Google DeepMind, ki je 10,000-krat učinkovitejši od svojega predhodnika AlphaCode, je dodal.

alphacodium_2

Kako se AlphaCodium primerja z drugimi najsodobnejšimi modeli v smislu natančnosti in učinkovitosti

Friedman je dejal, da je prepričan, da delovanje AlphaCodiuma ni posledica uhajanja podatkov, kjer je bil osnovni model usposobljen in preizkušen na istih težavah. Različica GPT-4, ki poganja AlphaCodium, se je do septembra 2021 učila na besedilu, postrganem iz interneta, medtem ko so bile težave, na katerih je testiral svoj sistem, vzete iz zgoraj omenjenega nabora podatkov CodeForces, ki je bil objavljen veliko pozneje.

Boljša primerjava med jabolki, ki ocenjuje proces inženiringa pretoka, pa obravnava sposobnost GPT-4 za reševanje istih vprašanj z in brez uporabe AlphaCodium. Navadni stari GPT-4 je lahko pravilno odgovoril samo na 19 oziroma 12 odstotkov težav v validacijskih oziroma testnih nizih, v primerjavi s 44 oziroma 29 odstotki različice, ki jo poganja AlphaCodium.

Skratka, zdi se, da je izvajanje skrbnega cevovoda, ki generira dodatne podatke za vodenje generiranja kode in izboljšanje postopka testiranja, lahko učinkovitejše od poskusa usposabljanja velikega jezikovnega modela iz nič.

Codium je pred kratkim izdal novo orodje za podporo razvijalcem Pythona, ki lahko zdaj pokličejo AlphaCodium za neposredno rešitev težave s kodiranjem v svojem IDE. Lahko se igraš z njim tukaj ®

Časovni žig:

Več od Register