Sådan finder og retter Facebook kodefejl med kunstig intelligens

30. november 2018 kl. 05:116
Sådan finder og retter Facebook kodefejl med kunstig intelligens
Illustration: Alexandru Voica.
Den skandaleombruste SoMe-gigant har taget hul på fremtiden, hvor machine learning skriver kode for udviklerne. På længere sigt skal teknologien blive open source.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

LONDON. Medie-giganten Facebook har det ikke så nemt i den internationale presse for tiden.

Problematiske overskrifter om datalæk og gustne forretningsmetoder har domineret både it-pressen og de bredere medier.

Om det er den massivt kedelige omtale, der er baggrunden for at Facebook i denne uge inviterede en større håndfuld europæiske journalister til sit britiske udviklingscenter i London, kan man kun gisne om.

Her havde den ombruste virksomhed nemlig for en gangs skyld en positiv fortælling at berette.

Artiklen fortsætter efter annoncen

Under ledelse af Mark Harman, som har en længere karriere bag sig som professor i datalogi ved University College London, forsøger Facebook sig med en hel del succes på automatisk vis både at finde og udbedre fejl i programkode.

At Facebook tager fejlretning alvorligt er der ingen tvivl om. På indersiden af dørene til dametoiletterne i London-hovedkvarteret hænger en anvisning på, hvordan selskabets interne ‘Logviewgo’-system kan bruges til analyse af crash i applikationerne.

Man tager programmeringsfejl alvorligt hos Facebook. På indersiden af dørene på dametoilettet i London-afdelingen findes en guide i anvendelsen af systemet ‘Logviewgo,’ der kan benyttes til analyse af crash.

Men tilbage til den automatiske fejlretning. I første omgang er det Facebooks egne Android-mobilapps, der er under luppen.

Artiklen fortsætter efter annoncen

Mark Harman var en del af en startup-virksomhed, som beskæftigede sig med teknologien. Det firma blev opkøbt af Facebook for et par år siden.

Søgebaseret optimering

Facebook bruger mange resurser på forskning i test, fortæller Mark Harman. Den største udfordring er skalering.

Fordi noget fungerer i forskning, betyder det ikke nødvendigvis, at det kan skaleres op til et firma som Facebook, hvis mobil-software opdateres med 100.000 ændringer om ugen. Facebook kalder sit system Sapienz.

»Problemet med tests er, at der er flere sekvenser af inddata til eksempelvis mobile enheder, end antallet af stjerner i universet,« forklarer Mark Harman.

»Vi kan ikke dække alle muligheder, men vi kan udvælge eksempler på en intelligent facon.«

Bug eller feature

Taktikken kaldes for ‘søgebaseret optimering.’ Der er lidt af et filosofisk problem, mener Mark Harman, for hvad er rigtig eller forkert opførsel i et program? Det er ligesom den gamle snak om ‘bug eller feature.’

Det kræver et slags orakel for at afgøre den dom, men i stedet kan man klare sig med hvad han kalder for et ‘implicit orakel,’ som bygger på, at de færreste programmører går efter at skrive et program der crasher, løber tør for hukommelse eller hænger i brugerfladen.

Det er ikke alle fejl, som systemet finder, for det forstår ikke tingenes sammenhæng. Et menneske kan måske hurtigt identificere et ISBN-nummer repræsenteret i koden, men den viden har den kunstige intelligens ikke og det spiller ind i, hvilke fejl der kan findes på nuværende tidspunkt.

Test er kedeligt

Facebooks forskere er ikke de eneste på området og årsagen til pressemødet i London er et ‘symposium’, et møde mellem forskere, hvor også Google, Microsoft og universitetsfolk deltager. Der er ligefrem en polynomisk stigning i videnskabelige artikler i forskningsområdet for tiden.

Artiklen fortsætter efter annoncen

Test er et langsommeligt og kedeligt arbejde for mennesker, mener Mark Harman. Mange firmaer betragter test som noget, der ikke er så vigtigt.

Med unittests og andre fremgangsmåder er udførelsen af test blevet automatiseret, men selve det at skrive testen, samt det patch, der retter en eventuel fejl, har hidtil været programmørens opgave. Nu skal de opgaver også udføres af maskiner.

Processen integreres i et ‘continuous integration'-forløb, hvor der testes automatisk, hvorefter det vurderes, hvor slem fejlen er. Det foregår også maskinelt. Derefter skaber maskinlæring et patch, som en udvikler endeligt kan anvende eller videreudvikle på.

Fejlene findes ved at skabe testsekvenser og rulle dem ud på en stor mængde emulatorer. De fleste fejl er null pointers, hvor en variabel ikke er blevet initieret, og dernæst illegal state, illegal argument, og så videre, som vist på grafen herunder. Det afspejler samme fordeling af fejl på Android-apps i det hele taget, fortæller Mark Harman.

Årsager til crash i Facebooks mobil-applikationer.

Systemet skal så skaleres op til de 100.000 kodeændringer pr. uge. Men det er næsten 'pinligt nemt' at parallelisere, med den teknologi, som holdet benytter, lyder det.

Statisk analyse finder fejlårsagen

Sapienz kan lokalisere en fejl ved at benytte maskinlæring på stack traces, altså den sekvens af funktionskald, der fører op til et crash.

Udover Sapienz arbejder et andet Facebook-hold på en teknologi med navnet Infer.

Når Sapienz har fundet det sted, hvor fejlen opstår, kan Infer derefter foretage statisk analyse på den lokaliserede kode og måske have held til at udpege en ‘fishy’ kodestump, hvor eksempelvis et kald til et ikke-initieret objekt kan give en null pointer-fejl.

En patch-generator skaber derefter forslag til rettelser ud fra en eller flere passende skabeloner. Dernæst tjekkes, om patchet overhovedet kan buildes, og om buildet kan passerer eksisterende tests, ikke mindst den test, der var årsag til patchet. Hvis det er tilfældet, gives patchet videre til udvikleren, der kan anvende det som det er, videreudvikle på det, eller afvise det.

De automatiske patches kan i 75 procent af tilfældene rette fejlen, og halvdelen af gangene bruger udviklerne forslaget som det er, i stedet for at ændre det eller skrive et patch i hånden, bedyrer Mark Harman. Ifølge ham er denne del af forskningen ‘bleeding edge', som det hedder på engelsk.

Finder og retter fejlen på en time

Målet er detektere fejl, ligeså snart ny kode er tilføjet til kodebasen. Mark Harman har dog ikke noget bud på, hvor stor andel af alle fejl systemet finder, men pointerer, at det gør mennesker nu heller ikke.

Et vigtigt nøgletal er, hvor hurtigt fejlen kan findes. Øjeblikkelige builds giver feedback til udviklerne i løbet af en halv til en hel time, hvor det tidligere kunne have taget en hel dag eller længere. Det betyder, at programmøren stadig har koden frisk i hovedet, når fejlen detekteres.

Lige nu er det som nævnt Facebooks Android-apps, der fejlrettes på, men på et spørgsmål fra Version2 fortæller Mark Harman, at det sagtens kan bruges til andre sprog og sammenhænge, som for eksempel med backend-serverprogrammering, som en af hans ph.d-studerende har eksperimenteret med. Lige nu er det et spørgsmål om prioritering af, hvor kræfterne skal lægges.

Dernæst skal eksempelvis de skabeloner, der ligger til grund for fejlrettelserne, tilpasses hvert enkelt sprog.

På længere sigt vil teknologien blive udsendt som open source, lover Mark Harman. Om det handler om måneder eller år, før det sker, vil han dog ikke gætte på.

Facebook betalte Version2’s rejseomkostninger i forbindelse med artiklen.

6 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
6
2. december 2018 kl. 22:28

Undskyld mit franske, men hvad er det for en gang paranoidt ævl og kævl? Prøv at forholde dig til hvad artiklen handler om. Noget uhyre interessant forskning som faktisk viser sig at virke i praksis - og endda som open source. Ingen steder er nævnt noget om at testsne køres på brugerens telefon. Du kan læse mere her: https://link.springer.com/chapter/10.1007/978-3-319-99241-9_1

5
1. december 2018 kl. 20:39

Ok Peter ! Jeg glemmer lidt tegnsætning, når fb og deres grådighed, samt folks "blindhed" kommer på tale !

Jeg er aldeles klar over at der er sammenhænge hvor noget fb-lignende gør noget vældigt godt, men i fb regi oplever jeg at prisen er afsindigt høj. Pris og kvalitet hænger på ingen måde sammen, men "gratis" gør folk blinde til trods for de seneste afsløringer !!

Var dette bedre ;-) !!

3
1. december 2018 kl. 00:36

Som jeg læser det der er frem lagt her, og Mark Harman citeres for er, at disse automatiserede AI tests køre på brugerenes tlf'er for som det argumenteres "så virker lab-tests kun i begrænset omfang !", de har ikke alle de forskellige tlf's der bruges og slet alle de kombinationer af app's der køres på disse tlf's, så for at fange så mange "fejl" som muligt, og få dem rettet, at gøre det sådan kan på ingen måde være et mindre pres på hardwarens langt fra ubegrænsede ressourcer, og jo ældre jo mere presset, for så vidt jeg pt ved, er det ikke muligt at begrænse fb's forbrug på anden måde end afinstallation, og en kraftig gennemgang af systemet bagefter i jagt efter rester, i stil med MS når man afinstallerer div MS programmer, a la office, så opfører de sig som om de VED bedre og er SIKRE på at man fortryder, og derfor bliver størstedelen af programmet liggende !!

Der er en ting fb kan gøre, men det vil de med garanti IKKE, de kunne være mindre grådige med ressourceforbruget, MEN det vil sikkert afstedkomme at de må samle færre pers. data, NOT BLOODY LIKELY !

2
30. november 2018 kl. 20:26

Vi bliver ikke uenige om at Facebook bør ødelægges...

Men artiklen handler om en dims, der analyserer kildekode i Facebooks udviklingsmiljø, så du behøver ikke være bange for at den gør din telefon langsommere.

1
30. november 2018 kl. 17:53

Det ville være intenst lækkert hvis fb en dag ville "nøjes" med at bruge under 10 % at div smartphones ressourcer, hvilket det bestemt LANG fra er i nærhenden af så lidt de grådigt bruger i dag, specielt på lidt ældre tlf's slås tlf næsten totalt i knæ hvis fb indstalleres, hos mange har jeg igen og igen måtte fortælle dem at der intet er galt med deres tlf (hardware) men fb er eneste årsag, meget få er med på at fjerne fb fra tlf, og pludseligt reagerer tlf så hurtigt at ejerene overraskes gevaldigt, med udtalelser som "aldrig mere fb på min tlf !" ! Når så fb også lader fejlfinding foregå på tlf'eren er det kun værre for de mange tlf der ikke er de sidste få 2 måske 3 år gl !

Nå heldigvis lider jeg ikke personligt under det, og det glæder mig at fb dd er udsat for så meget opmærksomhed ift deres gøren og laden med menneskers brugerdata, det er på høje tide at brugere bliver opmærksomme på hvad de har "sagt" ja til !

Næste etape må være at få lagt "politisk korrekthed" i graven, for en dæmper er LANGT fra nok, fb er en vildt stor del i at det er gået totalt amok over de sidste mange år, og fortsætter det ad samme sti, vare det meget få år før vi INTET kan og må ift hinanden, så ultimativt fører "P K" menneskeheden til udryddelse, hvilket jeg opfatter som første gang at menneskeheden har gjort noget godt for Jorden, og de rester af dyre arter de endnu ikke har udryddet !!

I må have en fin weekend, og en god arb uge !!