Näytä suppeat kuvailutiedot

Machine Learning aided Linux Kernel Code Analysis

Krogerus, Heikki (2024)

dc.contributor.authorKrogerus, Heikki
dc.date.accessioned2024-06-07T09:35:43Z
dc.date.available2024-06-07T09:35:43Z
dc.date.issued2024-
dc.identifier.urihttp://www.theseus.fi/handle/10024/863551
dc.description.abstractJokainen koodimuutos, jota ehdotetaan Linux-käyttöjärjestelmäytimeen, testataan monilla eri automaattisilla testeillä. Tästä huolimatta jokainen muutos on vaatinut ihmisten tekemän katselmoinnin. Johtuen rajallisesta määrästä ihmisiä, jotka pystyvät katselmoimaan Linux koodia, monia virheitä on jäänyt huomaamatta. Automaattisten testien ongelmana on ollut niiden keskittyminen staattiseen analyysiin, jolla ongelmia ei pystytä löytämään tehokkaasti. Pieni määrä ihmisiä, jotka ovat katselmoineet Linux-käyttöjärjestelmäytimen koodia on seurausta tehtävän vaativuudesta. Linuxin koodin katselmointi ei vaadi ainoastaan kykyä ymmärtää Linux-käyttöjärjestelmäytimen rakennetta, vaan myös laitestoa tai teknologiaa johon koodimuutoksella vaikutettaan. Jotta nähtäisiin kuinka moderneja syväoppimistekniikoita ja malleja voitaisiin hyödyntää tilanteen parantamiseksi luotiin joukko toisistaan periytyviä kehitysaskeleita. Tavoitteena ei ollut ainoastaan helpottaa ongelmaa koodin katselmoinnissa, vaan nähdä miten syväoppimista voidaan Linux kehityksessä hyödyntää yleisesti. Ensimmäisenä tavoitteena oli luoda malli, jolla voitiin osoittaa syväoppimisen tarjoavan mahdollisuuksia Linux kehityksessä. Ensimmäisen tavoitteen mallin tuli kyetä löytämään perusongelmia ehdotetuista koodimuutoksista, mutta tähän mallia ei ollut mahdollista kouluttaa johtuen huonolaatuisesta opetusdatasta. Oletuksena oli ollut, että jos koodinkatselmointi johti uuteen versioon koodimuutoksesta, koodimuutoksen laatu paranee. Tämä oletus ei täysin vastannut odotuksia. Tästä huolimatta, malli, joka kehitettiin tätä tehtävää varten, koulutettiin ensin ymmärtämään Linuxin lähdekoodia yleisellä tasolla, ja malli selkeästi kykeni. Kouluttamalla malli, joka ymmärtää Linuxin lähdekoodia osoittaa, että syväoppimista voidaan hyödyntää Linuxin kehitystyössä. Sama malli voidaan jatkokouluttaa moniin eri tehtäviin. Epäonnistuminen kouluttaa malli löytämään virheitä koodimuutoksista ei johtunut mallin arkkitehtuurista, vaan opetusdatan heikosta laadusta.-
dc.description.abstractSeveral automated tests are used to find issues in every code change proposal for the Linux kernel. Despite automated testing, each change needs a review that is done by humans. Due to the small number of dedicated reviewers, a lot of issues have goon undetected. The problem with automated testing has been that it relies on static analysis which does not detect issues very efficiently. The few reviewers are a result of not just anyone being able to review the new code. The reviewer does not only need to understand the architecture of Linux kernel itself, but also the hardware or technology that the proposed change was targeted for. To see if modern deep learning techniques could be used to mitigate the problem, a set of steps, each progressing from the previous one, were designed. The focus was not only on the mitigation of the problem, but in the utilisation of deep learning to aid Linux kernel development in general. The first step in the plan was used as the Proof-of-Concept. The goal of the first step in the plan was to construct a model that can detect rudimentary quality issues in the proposed code changes, but that could not be achieved due to the problems with the learning data. The code reviews from the past were used as the learning data. The assumption was that if a code change was revised, its overall quality improves. That assumption turned out not to be true. Nevertheless, the deep learning model that was produced was first taught to understand Linux kernel source code in unsupervised fashion, and that the model could obviously learn. By producing a Large Language Model that understands Linux kernel source code at the general level shows that deep learning can be used to aid Linux kernel development. The model can be fine-tuned to perform several different tasks. The failure to fine-tune the model to detect issues in the code changes were not caused by the model design or architecture. It was caused by the poor-quality learning data.-
dc.language.isoeng-
dc.rightsfi=All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.|sv=All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.|en=All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.|-
dc.titleMachine Learning aided Linux Kernel Code Analysis-
dc.type.ontasotfi=Ylempi AMK-opinnäytetyö|sv=Högre YH-examensarbete|en=Master's thesis|-
dc.identifier.urnURN:NBN:fi:amk-2024060621841-
dc.subject.degreeprogramfi=Tietojenkäsittely|sv=Informationsbehandling|en=Business Information Technology|-
dc.subject.ysoLinux-
dc.subject.ysooperating systems-
dc.subject.ysoartificial intelligence-
dc.subject.ysomachine learning-
dc.subject.ysodeep learning-
dc.subject.ysosource codes-
dc.subject.ysotokens-
dc.subject.ysodata processing-
dc.subject.disciplineArtificial Intelligence and Data analytics-
annif.suggestions.linkshttp://www.yso.fi/onto/yso/p723|http://www.yso.fi/onto/yso/p724|http://www.yso.fi/onto/yso/p2616|http://www.yso.fi/onto/yso/p21846|http://www.yso.fi/onto/yso/p39324|http://www.yso.fi/onto/yso/p9343|http://www.yso.fi/onto/yso/p5462|http://www.yso.fi/onto/yso/p26762|http://www.yso.fi/onto/yso/p26898|http://www.yso.fi/onto/yso/p2407en
annif.suggestions.linkshttp://www.yso.fi/onto/yso/p723|http://www.yso.fi/onto/yso/p724|http://www.yso.fi/onto/yso/p2616|http://www.yso.fi/onto/yso/p21846|http://www.yso.fi/onto/yso/p39324|http://www.yso.fi/onto/yso/p9343|http://www.yso.fi/onto/yso/p5462|http://www.yso.fi/onto/yso/p26762|http://www.yso.fi/onto/yso/p26898|http://www.yso.fi/onto/yso/p2407en
annif.suggestions.linkshttp://www.yso.fi/onto/yso/p723|http://www.yso.fi/onto/yso/p724|http://www.yso.fi/onto/yso/p2616|http://www.yso.fi/onto/yso/p21846|http://www.yso.fi/onto/yso/p39324|http://www.yso.fi/onto/yso/p9343|http://www.yso.fi/onto/yso/p5462|http://www.yso.fi/onto/yso/p26762|http://www.yso.fi/onto/yso/p26898|http://www.yso.fi/onto/yso/p2407en
annif.suggestions.linkshttp://www.yso.fi/onto/yso/p723|http://www.yso.fi/onto/yso/p2616|http://www.yso.fi/onto/yso/p724|http://www.yso.fi/onto/yso/p21846|http://www.yso.fi/onto/yso/p39324|http://www.yso.fi/onto/yso/p9343|http://www.yso.fi/onto/yso/p5462|http://www.yso.fi/onto/yso/p26762|http://www.yso.fi/onto/yso/p9344|http://www.yso.fi/onto/yso/p26898en


Tiedostot

Thumbnail

Viite kuuluu kokoelmiin:

Näytä suppeat kuvailutiedot