Dyp læring for feillokalisering. Innovasjon i verifikasjon - Semiwiki

Dyp læring for feillokalisering. Innovasjon i verifikasjon – Semiwiki

Kilde node: 2689409

Et nytt blikk på feillokalisering og reparasjon i feilsøking ved hjelp av læring basert på dype semantiske funksjoner. Paul Cunningham (Senior VP/GM, Verification at Cadence), Raúl Camposano (Silicon Catalyst, gründer, tidligere Synopsys CTO og nå Silvaco CTO) og jeg fortsetter vår serie om forskningsideer. Som alltid, tilbakemeldinger velkommen.

Dyp læring for feillokalisering

Innovasjonen

Denne månedens valg er Forbedre feillokalisering og programreparasjon med dype semantiske funksjoner og overført kunnskap. Forfatterne presenterte artikkelen på 2022 International Conference on Software Engineering og er fra Beihang University i Beijing og Newcastle University i New South Wales.

Metoden går utover kjente spektrumbaserte (SBFL) og mutasjonsbaserte (MBFL) lokaliseringsteknikker for å bruke dyp læring fra prekvalifiserte datasett med feil og forpliktede rettelser. Rettingsaspektet er viktig her fordi det avhenger av svært nøyaktig lokalisering av en feil (faktisk er lokalisering og rettelsens natur nært knyttet). Oppgaven bruker SBFL- og MBFL-beregninger som input til deres dyplæringsmetode. Forfatterne demonstrerer at metodene deres er mer effektive enn utvalgte SBFL- og MBFL-tilnærminger, og hevder at dette er fordi andre metoder enten ikke har noen semantisk forståelse eller bare en grunn forståelse av semantiske trekk ved designet, mens de med vilje har en dypere forståelse.

Helautomatisk reparasjon kan imidlertid være et skritt for langt for RTL-feilsøking foreslåtte rettelser er allerede kjent for stave- og grammatikkkontroller, og antyder at denne funksjonen også kan være verdifull ved verifisering.

Paulus syn

Ett år etter vår anmeldelse av DeepFL, tar vi en titt på et annet papir som prøver å flytte nålen videre. Automatisk feildeteksjon er nå et vanlig tema hos Cadence-kunder, og forventningene er høye til at dype nevrale nettverk eller store språkmodeller kan brukes til å dramatisk forbedre tiden brukt på å forårsake feil.

DeepFL brukte en RNN for å rangere kode for feil basert på mistenksomhet (kompleksitetsbasert, mutasjonsbasert, spektrumbasert, tekstbasert). Denne månedens artikkel legger til et ekstra matchingstrinn for feilmal som en ytterligere inndatafunksjon for å forbedre nøyaktigheten. Feilmal-matcheren er i seg selv en annen RNN som matcher individuelle kodesetninger til en eller flere av 11 mulige feilmaler, f.eks. en tapt nullpekerkontroll, feil type cast, feil setningsposisjon eller feil aritmetisk operator.

Det viktigste bidraget til oppgaven for meg er datasettet forfatterne bygger for å trene nettverket sitt for matching av feilmaler. De utvinner hele github-depotet for å finne ekte feilrettinger som samsvarer med feilmalene deres. For hvert samsvar krever de at det er en annen samsvarende setning andre steder i den samme kildekodefilen som ikke er en del av feilrettingen – dvs. at datasettet har både positive og falske positive samsvar. Det endelige datasettet har rundt 400,000 XNUMX positive/falsk-positive feilrettingspar. Hyggelig!

Som med DeepFL, benchmarker forfatterne verktøyet TRANSFER-FL ved å bruke Defects4J. Resultatene ser anstendige ut – 171 av de 395 feilene i Defects4J er rangert som topp-5 av TRANSFER-FL vs. 140 ved bruk av DeepFL. Fra et kommersielt synspunkt er imidlertid 171 fortsatt mindre enn halvparten av det totale referansesettet på 395. Hvis du ser på den gjennomsnittlige rangeringen på tvers av alle 395, er den 80, langt fra topp-5, så en vei unna kommersiell distribusjon. Jeg ser frem til å gjennomgå noen store språkmodellbaserte papirer neste år som flytter nålen enda lenger 😊

Raúl syn

Denne måneden beveger vi oss inn på områdene feillokalisering og automatisk programreparasjon for SW, den gjennomgåtte artikkelen utforsker disse teknikkene for Java-kode. I mai 2022 gjennomgikk vi DeepFL, som ligner på denne artikkelen ved at den utvider tradisjonelle spektrum- og mutasjonsbaserte teknikker for feillokalisering med dyplæringsmodeller.

For å si min konklusjon på forhånd, kanskje automatisk RTL- eller SystemC-feillokalisering og kodereparasjon vil bli rutine i overskuelig fremtid... Forfatterne er optimistiske angående anvendeligheten på andre språk, "de fleste reparasjonsmalene kan generaliseres til andre språk på grunn av den generiske representasjonen av AST (Abstract Syntax Tree)" med forbehold om at tilstrekkelig data må være tilgjengelig for opplæring av de forskjellige nettverkene som brukes i deres tilnærming. For papiret 2000 åpen kildekode Java-prosjekter fra GitHub ble samlet inn for å konstruere 11 datasett for feillokalisering med totalt 392,567 11 prøver (feil utsagn for XNUMX feiltyper som har en feilrettingsbekreftelse); og a programreparasjonsdatasett med 11 kategorier av feilrettinger med totalt 408,091 XNUMX prøver, hver prøve består av en feilaktig setning med den kontekstuelle metoden og dens tilsvarende feiltype. En AST brukes til å gjøre denne matchingen.

Den detaljerte tilnærmingen, kalt TRANSFER, er ganske kompleks og krever litt tid å fordøye, 67 referanser hjelper til med å dykke ned i detaljene. Den utnytter eksisterende tilnærminger for feillokalisering, 1) Spektrumbaserte funksjoner som tar kildekode og relevante testtilfeller som input og sender ut en sortert liste over kodeelementer sortert etter mistankepoeng beregnet fra utførelse av testtilfeller, og 2) mutasjonsbasert funksjoner som beregner mistankepoeng ved å analysere endringene i utførelsesresultatene mellom det originale kodeelementet og dets mutanter. Den legger til 3) Deep Semantic-funksjoner oppnådd ved å bruke BiLSTM (Bidirectional Long Short-Term Memory) binære klassifikatorer trent med datasettene for feillokalisering. Programreparasjon gjøres ved å bruke en "finjustert" multi-klassifikator trent med programreparasjonsdatasettet.

Poenget er at TRANSFER utkonkurrerer eksisterende tilnærminger, og korrigerer 47 feil (6 flere enn de beste eksisterende tilnærmingene) på Defects4J-referansen.

Å skrive og feilsøke SW er allerede rutinemessig assistert av AI som GitHub Copilot; å designe maskinvare, også kjent som å skrive RTL eller kode på høyere nivå, kan ikke være for langt bak, kanskje den største hindringen er tilgjengeligheten av dataene som kreves.

Del dette innlegget via:

Tidstempel:

Mer fra Semiwiki