Att göra AI bättre på att lösa problem i kodningstävlingar

Att göra AI bättre på att lösa problem i kodningstävlingar

Intervju Kommersiella stora språkmodellers förmåga att lösa konkurrenskraftiga programmeringsproblem kan förbättras avsevärt genom att noggrant styra dess processer genom smart och snabb ingenjörskonst.

För att demonstrera detta byggde Codium AI, baserat i Israel, AlphaCodium och frigörs programvaran på GitHub den här månaden. AlphaCodium är ingen stor språkmodell i sig. Istället är det en metod som förbättrar problemlösningsförmågan hos generativa AI-verktyg som GPT-4 genom att använda vad VD Itamar Friedman kallar "flödesteknik."

Först matas en programmeringsfråga till den underliggande stora språkmodellen, och den ombeds att beskriva och sammanfatta problemet. Den informationen vägleder sedan hur det ska börja lösa problemet. AlphaCodium definierar saker, som vad ingångarna och utgångarna ska vara, när de kommer med en lösning. Allt detta är specificerat på naturligt språk.

Modellen börjar sedan generera kod som överensstämmer med specifikationerna den just beskrev. Programmeringstävlingar som ber tävlande att koda till spec ger vanligtvis tester som visar vad ett skript ska mata ut för en given ingång. AlphaCodium genererar fler av dessa testfall, och sedan körs genom möjliga lösningar för att kontrollera om koden fungerar som förväntat.

Om den inte lyckas matcha någon av utgångarna som definierats i något av testerna, genererar modellen olika lösningar tills de klarar alla tester eller den misslyckas. Fel kan uppstå när dess kod inte kompileras eller bara är fel.

Du kan se de olika stegen i flödesteknikprocessen i diagrammet nedan. Det är till stor del uppdelat i en förbehandlingsfas, där systemet analyserar problemet på naturligt språk, och ett koditerationssteg, där det kör möjliga lösningar mot offentliga och AI-genererade tester.

alfakodium

Alla de breda stegen som guidar AlphaCodium till att generera kod för att lösa problem

"Vi tar inte problemet och går till modellen och säger till den, 'Hej, snälla generera den slutliga lösningen'," berättade Friedman Registret. "Vi ber modellen att snälla omdefiniera detta problem i punktform." Att förenkla det och dela upp saker i bitar gör det lättare för modellen att senare generera kod för olika delar av en algoritm.

I huvudsak är flödesteknik en procedur som styr modellens problemlösningsprocess genom att dela upp den i väldefinierade steg. Att uppmana den att "dela upp den genererade koden i små underfunktioner, med meningsfulla namn och funktionalitet", får vi veta, leder till färre buggar och gör koden lättare att testa och fixa.

"Vi spenderade i princip 95 procent av vår tid på flödesteknik, och bara 5 procent på prompt engineering och vi ändrade inte uppmaningarna för varje [steg], tillade Friedman.

Ingenjörer från Codium testade sin modells prestanda på hundratals problem som användes i verifierings- och testdelarna av CodeForces-datauppsättningen som sammanställdes av Google DeepMind för två år sedan. De hävdar att AlphaCodium var bättre på att lösa kodningsproblem än Google DeepMinds AlphaCode- och AlphaCode2-modeller.

I resultat rapporterade i en arXiv papper [PDF], AlphaCodium kunde svara korrekt på 44 procent av frågorna jämfört med AlphaCodes 24 procent, samtidigt som det bara genererade fem lösningar jämfört med AlphaCodes tio utvalda lösningar för 107 valideringsproblem. Intressant nog minskade gapet när det kom till 165 testproblem med AlphaCodium som löste 29 procent jämfört med AlphaCodes 28 procent.

AlphaCode väljer ut de tio mest lovande lösningarna av tiotusentals eller hundratusentals möjliga skript som den genererar – vilket gör det beräkningskrävande att köra.

"Vi fokuserade mycket mer på hela testflödet," sa Friedman. "För [Google] gjorde de så mycket arbete med generationen. De försöker generera hundratals andra alternativ och vi genererar väldigt få lösningar, men testar dem riktigt bra för att vägleda förbättringen av koden.”

AlphaCodium är lite bättre än Google DeepMinds senaste AlphaCode2-modell som är 10,000 XNUMX gånger effektivare än sin föregångare AlphaCode, tillade han.

alfakodium_2

Hur AlphaCodium jämför med andra toppmoderna modeller när det gäller noggrannhet och effektivitet

Friedman sa att han var säker på att AlphaCodiums prestanda inte beror på dataläckage, där den underliggande modellen har tränats och testats på samma problem. GPT-4-versionen som driver AlphaCodium tränades på text som skrapats från internet fram till september 2021, medan problemen den testade sitt system på togs från ovannämnda CodeForces-datauppsättning som släpptes mycket senare.

En bättre äpple-till-äpple-jämförelse som bedömer flödesteknikprocessen är dock att titta på GPT-4:s förmåga att lösa samma frågor med och utan att använda AlphaCodium. Vanlig gammal GPT-4 kunde bara svara korrekt på 19 och 12 procent av problemen i validerings- respektive testset, jämfört med den AlphaCodium-drivna variantens 44 och 29 procent.

Kort sagt verkar det som att implementera en noggrann pipeline som genererar ytterligare data för att vägleda hur kod genereras och förbättra testprocessen kan vara mer effektivt än att försöka träna en stor språkmodell från grunden.

Codium släppte nyligen ett nytt verktyg för att stödja Python-utvecklare, som nu kan ringa AlphaCodium för att direkt lösa ett kodningsproblem i sin IDE. Du kan leka med den här. ®

Tidsstämpel:

Mer från Registret