Zephyrnet-logo

GitHub Copilot en de opkomst van AI-taalmodellen in programmeerautomatisering

Datum:

GitHub Copilot en de opkomst van AI-taalmodellen in programmeerautomatisering

Lees verder om meer te weten te komen over wat Copilot anders maakt dan eerdere autocomplete-tools (inclusief TabNine) en waarom deze specifieke tool zoveel controverse heeft gegenereerd.


github-copilot.png

Moet ik Github Copilot gebruiken?

 
Als u een software-engineer bent, of een van hen tot uw kennissenkring rekent, dan weet u waarschijnlijk al op een bepaald niveau van Copilot. Copilot is GitHub's nieuwe deep learning code-aanvullingstool.

Autocomplete-tools voor programmeurs zijn niets nieuws en Copilot is niet eens de eerste die gebruikmaakt van deep learning en zelfs niet de eerste die een GPT-transformator gebruikt. Ten slotte, Tab Negen voortgekomen uit een zomerproject van OpenAI alum Jacob Jackson en maakt gebruik van de GPT-2 transformator voor algemeen gebruik.

Microsoft (die eigenaar is van GitHub) heeft hun eigen verpakt IntelliSense code-aanvullingstool met programmeerproducten sinds ten minste 1996, en autocomplete en tekstcorrectie zijn sinds de jaren vijftig een actief onderzoeksgebied.

Lees verder als u meer wilt weten over wat Copilot anders maakt dan eerdere autocomplete-tools (inclusief TabNine), en waarom deze specifieke tool zoveel controverse heeft veroorzaakt.

Auteursrechtcontroverse

 

Screenshot dat de gretigheid van GitHub Copilot demonstreert om de snelle inverse vierkantswortelfunctie van Quake III te reciteren.
Schermafbeelding van Armin Ronacher het demonstreren van de gretigheid van GitHub Copilot om de snelle inverse vierkantswortel functie van Quake III.

 

Sinds de oprichting heeft Copilot een verhitte discussie over het product en de mogelijke implicaties voor auteursrechten aangewakkerd. Dit komt voor een groot deel door de manier waarop het model is getraind. GitHub Copilot is gebaseerd op OpenAI's Codex, een op code afgestemde variant van GPT-3. GPT-3 is OpenAI's 175 miljard parameter (Codex is blijkbaar gebaseerd op de 12 miljard parameterversie van GPT-3) universele transformator, en natuurlijk heeft elke gigantische transformator een gigantische trainingsdataset nodig om effectief te zijn. GitHub is precies de plek om zo'n dataset te vinden, en de trainingsdataset van Copilot inclusief alle openbare code gehost door GitHub.

Dit is een belangrijke bron van controverse rond het project en overtreft de discussie over: software engineering weg automatiseren en de impact van tools zoals Copilot op de toekomst van programmeren. Meer technische informatie over het model en zijn beperkingen vindt u in de papier op Arxiv.


Portret van Edmond de Belamy.” Collective Obvious gebruikte open source-code om het stuk te genereren en verkocht later voor meer dan $ 400,000 op een veiling, tot grote ergernis van Robbie Barrat, wiens code ze gebruikten.

 

Sommige programmeurs zijn gewoon boos dat hun code heeft bijgedragen aan wat waarschijnlijk een betaald product zal worden zonder hun uitdrukkelijke toestemming, met een paar commentatoren op hacker nieuws bespreken van het verlaten van het platform.

In sommige opzichten echoot de reactie op Copilot van de GAN-gegenereerd "schilderij"' die op een veiling voor bijna een half miljoen dollar werd verkocht. De kunstwerk is gemaakt bovenop open source-bijdragen met een afstamming van meerdere auteurs, van wie geen van allen enige vergoeding ontving waarvan we weten dat ze een beloning zijn voor het opmerkelijke succes van het werk op de veiling.

De code gebruikt om het kunstwerk te produceren, en mogelijk ook de vooraf getrainde modelgewichten, werd openbaar gemaakt onder een BSD-licentie door de auteur van het model, Robbie Barrat, wiens eigen werk was gebaseerd op eerdere open source-projecten en die later de licentie aanpaste om commercieel gebruik van de vooraf getrainde gewichten niet toestaan. Het is begrijpelijk dat programmeurs gefrustreerd raken als ze geen winstgevend gebruik van hun werk kunnen maken, maar de auteursrechtcontroverse rond Copilot is meer dan dat.

”github Copilot is, naar eigen zeggen, getraind in bergen gpl-code, dus het is mij niet duidelijk hoe het geen vorm is van het witwassen van open source-code in commerciële werken."-Twitter-gebruiker eevee.

GitHub Copilot is aantoonbaar in staat om uitgebreide delen van copyleft-code te reproduceren, die velen in de open source-gemeenschap beschouwen als een schending van de voorwaarden van licenties zoals GPL.

Copilot is getraind in alle openbare code, inclusief tolerante open source-licenties zoals de MIT-licentie. Het bevat echter ook auteursrechtlicenties zoals de Affero Algemene Publieke Licentie (AGPL) die gebruik en wijziging toestaat, maar vereist dat gewijzigde werken onder dezelfde licentie beschikbaar worden gesteld. In sommige interpretaties code gegenereerd door GitHub Copilot kan worden beschouwd als een afgeleide van de oorspronkelijke trainingsgegevens, en misschien problematischer kan Copilot soms code reproduceren letterlijk uit de trainingsdataset. Dat maakt Copilot tot een lastiger geval dan, laten we zeggen, het Google-boek-scannende precedent dat vaak wordt aangehaald als een hoeksteen van redelijk gebruik voor het schrapen van auteursrechtelijk beschermde gegevens.

De discussie over mogelijke juridische kwesties gaat door met weinig consensus van beide kant van het debat voor nu, en het onderwerp kan zeer waarschijnlijk een kwestie worden voor de rechtbanken om op te lossen.

Zelfs als we ervan uitgaan dat Copilot juridisch helemaal duidelijk is, kunnen er andere risico's zijn bij het gebruik van het product. Als de training van Copilot als redelijk gebruik wordt beschouwd en de output niet wordt beschouwd als afgeleid werk of werk dat inbreuk maakt op auteursrechten/copyleft, kan het toch output produceren die gemakkelijk voldoet aan de criteria voor plagiaat in de context van zoiets als een promovendus die code schrijft voor hun scriptieonderzoek. Voorlopig is het misschien een goed idee om Copilot voorzichtig te gebruiken, maar er is nog een reden waarom Copilot een trending onderwerp van discussie is: Copilot kan verrassend goede oplossingen bieden voor veelvoorkomende programmeertaken en lijkt zowel kwantitatief als kwalitatief beter in staat te zijn dan eerdere tools voor automatisch aanvullen.

Hoe goed is de copiloot van GitHub?

 

YouTube-video die laat zien hoe Github-copiloot leetcode-interviewvragen verplettert
GitHub Copiloot CRUSHES Leetcode Interview Vragen! bron

 

Zelfs als je geen programmeur bent, heb je waarschijnlijk al ervaring met autocomplete in de vorm van voorspellende tekst op een mobiele telefoon. Dit zal automatisch het volgende woord voorstellen als u het begint te typen, en het kan een iets langere voortzetting voorstellen, bijvoorbeeld om de huidige zin af te maken.

Voor de meeste programma's voor automatisch aanvullen is het aantal en de complexiteit van de suggesties ongeveer gelijk aan wat je zou vinden in een toetsenbord van een mobiele telefoon, maar niet alle tools voor het aanvullen van codes maken gebruik van moderne (ook wel deep learning) machine learning.

De standaard automatische aanvulling in vim biedt bijvoorbeeld eenvoudig een lijst met voorgestelde aanvullingen op basis van de woorden die een gebruiker eerder heeft ingevoerd. Meer recent ontwikkelde tools voor het aanvullen van code, zoals: Tab Negen or Vlieger zijn een beetje geavanceerder en kunnen de voltooiing van de rest van een of twee regels suggereren. De Kite-website suggereert dat dit genoeg is om een ​​programmeur bijna twee keer zo efficiënt te maken in termen van het aantal gebruikte toetsaanslagen, maar Github Copilot gaat nog een stap verder, zij het met een zeer lange pas.

Copilot heeft vergelijkbare voltooiingsmogelijkheden als de standaardtaal GPT-3 waarop het is gebaseerd, en het werken met de code-aanvullingstool ziet eruit en voelt vergelijkbaar met de stijl van "snelle programmering” die GPT-3-onderzoekers hebben aangenomen bij het werken met het model. Copilot kan de inhoud van een docstring interpreteren en een functie schrijven die overeenkomt, of gegeven een functie en de start van een toepasselijke testfunctie, kan het eenheidstests genereren. Dat scheelt veel meer dan 50% van de toetsaanslagen van een programmeur.

Tot de logische conclusie genomen, als Copilot perfect werkt, verandert het de taak van een software-engineer in iets dat veel meer lijkt op constante codebeoordeling dan op het schrijven van code.

Verschillende programmeur-bloggers met vroege toegang tot de technische preview-versie hebben Copilot op de proef gesteld door het model in wezen uit te dagen om programmeerproblemen op interviewniveau op te lossen. Copilot is behoorlijk indrukwekkend in hoe goed het kan dit soort uitdagingen oplossen, maar niet goed genoeg om het gebruik van de output te rechtvaardigen zonder deze eerst zorgvuldig te bekijken.

Verschillende online software-ingenieurs hebben de "AI-paarprogrammeur" (zoals GitHub het uitdrukt) op de proef gesteld. We zullen enkele van de punten die in de Arxiv papier als scenario's waarin Codex tekortschiet en probeer voorbeelden te vinden in de experimenten die zijn uitgevoerd door programmeurs die betrokken zijn bij de technische preview.

De HumanEval-gegevensset

 
OpenAI Codex is een parameter van ongeveer 12 miljard GPT-3 die is afgestemd op code, waarbij Codex-S de meest geavanceerde variant van Codex zelf is. Om de prestaties van dit model te evalueren, bouwde OpenAI wat zij de HumanEval-dataset noemen: een verzameling van 164 handgeschreven programmeeruitdagingen met bijbehorende unit-tests, het soort dat je zou kunnen vinden op een codeeroefensite zoals CodeSignaal, Codeforces, of HackerRank.

In HumanEval zijn de probleemspecificaties opgenomen in functiedocstrings en zijn de problemen allemaal geschreven voor de programmeertaal Python.

Terwijl een ongedifferentieerde GPT-3 zonder code-specifiek geen van de problemen in de HumanEval-dataset kon oplossen (tenminste bij de eerste poging), waren de verfijnde Codex en Codex-S in staat 28.8% en 37.7% van de problemen op te lossen. respectievelijk problemen. Door een selectie te maken uit de top-100 van pogingen tot problemen, was Codex-S verder in staat om 77.5% van de problemen op te lossen.

Een manier om dit te interpreteren is dat als een programmeur Codex zou gebruiken, hij zou kunnen verwachten een geldige oplossing voor een probleem te vinden (ongeveer het niveau van complexiteit dat men tegenkomt in technische interviews) door de eerste 100 suggesties te bekijken, of zelfs blindelings een poging te wagen oplossingen bij een geldige set eenheidstests totdat ze slagen. Dat wil niet zeggen dat er geen betere oplossing kan worden gevonden, als een programmeur bereid is suggesties van Codex aan te passen, in een van de eerste paar suggesties.

Ze gebruikten ook een meer gecompliceerde schatter om elk probleem op te lossen door ongeveer 200 monsters te genereren en een onbevooroordeelde schatter te berekenen van het deel van de monsters dat eenheidstests doorstaat, die ze rapporteren als "pass@k" waarbij k 100 is, het aantal monsters dat geschatte. Deze methode heeft een lagere variantie dan het direct rapporteren van pass@k.

Het beste Codex-model presteert nog steeds ondermaats voor een student informatica

 
De auteurs van Codex merken op dat het model, getraind op meer dan 150 GB in honderden miljoenen regels code van GitHub, is getraind op aanzienlijk meer code dan een menselijke programmeur in de loop van zijn carrière kan verwachten te lezen. Het beste Codex-model (Codex-S met 12 miljard parameters) presteert echter nog steeds onder de capaciteiten van een beginnende informaticastudent of iemand die een paar middagen doorbrengt met het oefenen van codeeruitdagingen in interviewstijl.

Met name de prestaties van Codex nemen snel af wanneer verschillende bewerkingen in een probleemspecificatie worden samengevoegd.

In feite daalt het vermogen van Codex om verschillende aan elkaar geketende bewerkingen op te lossen met een factor 2 of erger voor elke extra instructie in de probleemspecificatie. Om dit effect te kwantificeren, hebben de auteurs van OpenAI een evaluatieset van tekenreeksmanipulaties gebouwd die sequentieel kunnen werken (veranderen in kleine letters, elk ander teken vervangen door een bepaald teken, enz.). Voor een enkele stringmanipulatie passeerde Codex bijna 25% van de problemen, daalde tot net onder 10% voor 2 stringmanipulaties aan elkaar geketend, 5% voor 3, enzovoort.

Een vroege Copilot-recensent zag de snelle afname bij het oplossen van problemen in meerdere stappen Giuliano Giacaglia op Middel. Giuliano meldt dat hij Copilot een probleembeschrijving gaf van het omkeren van de letters in elk woord in een invoerreeks, maar in plaats daarvan stelde Copilot een functie voor die de volgorde van woorden in een zin omkeert, niet letters in een zin van woorden ("World Hello" in plaats van " olleH dlroW"). Copilot slaagde er echter in om een ​​test te schrijven die faalde voor zijn eigen implementatie.

Hoewel we niet vasthouden aan het meerstaps-paradigma voor stringmanipulatie dat door Giuliano en OpenAI wordt gebruikt om Copilot te testen, Kumar Shubham ontdekte een indrukwekkend resultaat toen Copilot met succes een probleembeschrijving in meerdere stappen oploste waarbij systeemprogramma's werden aangeroepen om een ​​screenshot te maken, optische tekenherkenning op de afbeelding uit te voeren en uiteindelijk e-mailadressen uit de tekst te extraheren. Dat roept echter het probleem op dat Copilot code kan schrijven die afhankelijk is van niet-beschikbare, verouderde of niet-vertrouwde externe afhankelijkheden. Dat is een punt dat door OpenAI naar voren is gebracht, naast de gevoeligheid van het model voor vooringenomenheid, het vermogen om beveiligingskwetsbaarheden te genereren en mogelijke economische en energiekosten in het gedeelte van hun paper waarin risico's worden besproken.

Andere recensies van Copilot door YouTubers DevOps-richtlijn en Benjamin Carson vond indrukwekkende resultaten bij het uitdagen van Copilot met vragen in interviewstijl van letcode.com, waaronder enkele die aanzienlijk ingewikkelder leken dan het aan elkaar koppelen van een reeks eenvoudige snaarmanipulaties. Het verschil in de complexiteit van code die Copilot kan genereren en de complexiteit van probleemspecificaties die Copilot kan begrijpen, is opvallend.

Misschien leidt de prevalentie van code die is geschreven in de stijl van oefenvragen voor interviews in de trainingsdataset ertoe dat Copilot dat soort problemen overbelast, of misschien is het gewoon moeilijker om verschillende stappen van modulaire functionaliteit aan elkaar te koppelen dan om een ​​groot stuk te produceren van complexe code die erg lijkt op iets dat het model eerder heeft gezien. Slecht beschreven en slecht geïnterpreteerde specificaties zijn al een veelvoorkomende bron van klachten voor ingenieurs en hun managers van de menselijke soort, dus misschien zou het niet zo verwonderlijk moeten zijn dat een AI-coderingsassistent niet uitblinkt in het ontleden van gecompliceerde probleemspecificaties.

Copiloot-alternatieven

 
Op het moment van schrijven is Copilot nog steeds beperkt tot programmeurs die het geluk hebben te zijn ingeschreven voor de Technical Preview, maar wees niet bang: talloze andere code-aanvullingsassistenten (of ze nu deep learning gebruiken of niet) zijn direct beschikbaar om uit te proberen en het is geen slecht moment om na te denken over wat toenemende automatisering zou kunnen betekenen voor software-engineering.

Eerder vermeldden we Tab Negen, een code-aanvullingstool die gedeeltelijk is gebaseerd op de GPT-2-transformator van OpenAI. Oorspronkelijk gebouwd door Jacob Jackson en nu eigendom van codota, TabNine was in staat om 7.6% van de HumanEval-benchmark op te lossen in de pass@100-statistiek die wordt gebruikt door OpenAI-auteurs. Dat is behoorlijk indrukwekkend als je bedenkt dat TabNine is ontworpen als een meer praktische oplossing voor het voltooien van code, in tegenstelling tot Codex, die expliciet werd geïnspireerd door het potentieel van GPT-3-modellen om code te produceren op basis van probleembeschrijvingen. TabNine bestaat sinds 2018 en heeft zowel gratis als betaalde versies.

Vlieger is een andere code-aanvullingstool in dezelfde geest als TabNine, met gratis (desktop) en betaalde (server) versies die verschillen in de grootte van het gebruikte model met een factor 25. Volgens de gebruiksstatistieken van Kite kiezen codeurs ervoor om de voorgestelde voltooiingen vaak genoeg om hun toetsaanslagen te halveren in vergelijking met het handmatig typen van elke regel, en Kite's citeren de zelfgerapporteerde productiviteitsverhoging van 18% van hun gebruikers. Afgaande op de geanimeerde demo's op hun website, suggereert Kite zeker kortere voltooiingen dan zowel TabNine als Copilot. Dit verschilt in graad van TabNine, wat voor het grootste deel slechts iets langere voltooiingen suggereert, maar het is kwalitatief anders dan Copilot: Copilot kan uitgebreide codeblokken voorstellen en de ervaring veranderen van het kiezen van de beste voltooiing tot het beoordelen van verschillende voorgestelde benaderingen van het probleem.

Is Copilot hier om uw baan te nemen of alleen uw code?

 
GitHub Copilot laat een paar software-engineers een grapje maken dat de automatisering die ze al jaren aan het bouwen zijn eindelijk naar huis komt om te slapen, en binnenkort zullen we allemaal werkloos zijn. In werkelijkheid is het zeer onwaarschijnlijk dat dit gedurende vele jaren het geval zal zijn, aangezien programmeren meer is dan alleen het schrijven van code.

Bovendien is het een vaak herhaalde trope dat zelfs het precies interpreteren van wat een klant of manager wil in een reeks softwarespecificaties, meer een kunst dan een wetenschap is.

Aan de andere kant zullen Copilot en andere soortgelijke tools voor het aanvullen van natuurlijke taalcode (en geloof ons, er komen er nog meer) inderdaad een grote impact hebben op de manier waarop software-engineers hun werk doen. Ingenieurs zullen waarschijnlijk meer tijd besteden aan het beoordelen van code en het controleren van tests, of de onderzochte code nu is geschreven door een AI-model of een collega-ingenieur. We zullen waarschijnlijk ook een andere metalaag in de kunst van het programmeren zien, aangezien "snel programmeren" van programmeerassistenten voor machine learning gemeengoed wordt.

Als cyberpunk-auteur William Gibson zei het al die jaren geleden: "de toekomst is er al - het is gewoon niet gelijkmatig verdeeld."

Copilot heeft ook een debat op gang gebracht over copyright, copyleft en allerlei open source-licenties en de filosofie van het bouwen van goede technologie, een discussie die eerder vroeger dan later moet plaatsvinden. Bovendien vereisen de meeste hedendaagse interpretaties van intellectueel eigendom een ​​menselijke auteur voordat een werk in aanmerking komt voor auteursrecht. Als meer code in grotere proporties wordt geschreven door machine learning-modellen in plaats van door mensen, zullen die werken dan legaal in het publieke domein komen na hun creatie?

Wie weet? Misschien zal de open source-gemeenschap uiteindelijk winnen, aangezien de over-over-over-opvolger van Copilot een fervent voorstander van open source wordt en erop staat alleen aan gratis en open source software te werken.

 
Bio: Kevin Vu beheert de Exxact Corp-blog en werkt samen met veel van zijn getalenteerde auteurs die schrijven over verschillende aspecten van Deep Learning.

ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:


PlatoAi. Web3 opnieuw uitgevonden. Gegevensintelligentie versterkt.
Klik hier om toegang te krijgen.

Bron: https://www.kdnuggets.com/2021/09/github-copilot-rise-ai-language-models-programming-automation.html

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?