Kyösti Herrala

Kyösti Herrala

Technical Director

kyosti.herrala@vincit.fi
+358 50 337 6505

TwitterLinkedIn

Pilvipalvelujen ammattilaisen vuoden kohokohta on vuosittainen AWS:n re:Invent konferenssi. Syviin neuroverkkoihin pohjautuvat tekoäly-ratkaisut ovat viime aikoina tuoneet esille algoritmien kykyä korvata ihminen intuitiota ja luovuutta vaativissa tehtävissä. Sama kehitys koskee ohjelmistokehitystä. Vincit päätti selvittää mihin AWS Code Guru tekoälyyn pohjautuva koodin katselmointiratkaisu kykenee.

Viime viikolla Amazon Web services julkaisi sen, mitä monen ohjelmistofirman kahvipöytäkeskusteluissa on jo pitkään osattu aavistella: tekoälyyn pohjautuvan koodausavustajan. AWS re:Invent on pilviteollisuuden vuosittainen alan suurin tapahtuma, jolta osataan jo odottaa suuria alaa mullistavia keksintöjä ja lanseerauksia. Ensiksi tuli ensimmäisenä maailmassa elastinen suorituskapasiteetti (EC2), sitten hetken päästä ylläpitovapaat täysin hallitut sovelluskerroksen tukipalvelut ja viimeisenä esimerkiksi hahmontunnistusta palveluna tarjoavat ratkaisut. Vuosi vuodelta lanseerauksiin kohdistuvat odotukset ovat nousseet varsin arkipäiväisistä infrastruktuuri-palveluista yhä erikoistuneisimpiin niche-tuotteisiin kuten satelliittien tukiasemia hallittuna palveluna tarjoava AWS Ground Station. Tekoälyyn ja koneoppimiseen liittyvien palveluiden määrä on ollut erityisessä kasvussa.

Tällä kertaa erityistä hämmästystä herätti siis AWS Code Guru, joka nimensä perusteella lupaa lähes intuitiivisella tasolla toimivan tekoälyä ohjelmistokehittäjän avuksi. Mistä on kyse ja onko kohta jo aika julistaa koodaus yhdeksi ajan hämärään siirtyväksi ammatiksi?

Tekoälyn hyödyt ohjelmistokehityksessä

Pitää paikkansa, että ohjelmistojen kehitysprosessiin sisältyy matalimmalla tasolla jonkin verran lähes mekaanisia työvaiheita, kuten koodin siisteyteen liittyvät korjaukset. Näiden tehtävien automatisoinnista on kuitenkin revitty hyödyt irti jo vuosia sitten perinteisiin menetelmiin pohjautuvien työkalujen avulla. Nykyaikainen koodin kehitysympäristö osaa myös tarjota parannuksia ja korjauksia ohjelman logiikkaan lähes ällistyttävän hyvin ja kehittäjän tuottavuus on noussut todistetusti. Nämä työkalut perustuvat perinteiseen koodin jäsentämiseen ja staattiseen analyysiin, jonka pohjalta kehitysympäristöihin on luotu paljon erilaisia heuristiikkoihin perustuvia tarkistuksia.

Voisiko uudenlaisista koneoppimiseen pohjautuvista menetelmistä kuitenkin saada muita parannuksia ohjelmistokehityksen tuottavuuteen? Yksi menneen vuoden kantavista teemoista on varmastikin ollut syviin neuroverkkoihin pohjautuvat sovellukset. Kone on oppinut esimerkiksi hyvin rajallisen opetusaineiston avulla säveltämään euroviisukappaleita tai barokki-musiikkia. Saavutukset ovat hyviä vertailukohtia ohjelmistoihin, koska ohjelmistokehitystiimin toimintaa on verrattu runouden kirjoittamiseen ryhmässä.

Yksi esimerkki syvien neuroverkkojen hyödyntämisestä on GPT-2 algoritmiin perustuva tekstin synteesi, jota esimerkiksi kaupallinen Deep TabNine hyödyntää. Sen tehokkuus perustuu avoimeen GitHub:sta irroitettuun noin 2 miljoonan tiedoston opetusmateriaaliin. Algoritmi pystyy ennakoivaan kontekstisidonnaiseen tekstinsyöttöön useilla eri ohjelmointikielillä. Se pystyy myös sopeuttamaan ehdotusten laatua laitteiston tehokkuuden perusteella ja malli toimii siksi myös paikallisesti. TabNine on parhaimmillaan apuvälineenä hyvin perinteisten koodirakenteiden syöttämisessä, mutta käyttäjäpalautteen perusteella vielä takeltelee kirjoittaessa ratkaisua täysin ennennäkemättömään koodauspähkinään.

Olemassa olevien ratkaisuiden pohjalta odotukset AWS Code Gurun hyötyihin ohjelmistokehityksen apukeinona ovat luonnollisesti valtavat, joten me Vincitillä tietenkin säntäsimme heti julkaisua seuraavana päivänä sitä testaamaan. Mielenkiintoisin Code Gurun ominaisuus meidän näkökulmasta oli tekoälyn tuottamat koodin katselmointikommentit. Katselmoinnista on meillä Vincitillä pitkät perinteet ja sen nähdään edesauttavan tiimin ymmärrystä toistensa kehittämistä ominaisuuksista pintaa syvemmällä. Joissain tilanteissa katselmointi voi estää myös haitallisten bugien lipsahtamista tuotantoon viimeisenä keinona, mikäli automatisoidun testikoodin kattavuus pettää.

Code Guru lupaa ammattimaisia parannusehdotuksia koodirivien tasolla jokaisesta versionhallintaan luodusta koodin inkrementistä. Palvelun opetusaineistona on käytetty kymmeniä tuhansia AWS:n sisäisiä  ja GitHub:n avoimia projekteja sekä niiden kehityksessä kertyneitä katselmointikommentteja. Käytössä on siis oletettavasti tuhansien alan parhaimmistoon kuuluvien ohjelmistoinsinöörien viisaus.

Palvelun käyttöönotossa meni yhteensä noin kymmenen minuuttia ja latasimme oitis palvelun analysoitavaksi noin kaksikymmentä tuhatta Riistakeskuksen asiointiportaalin avointa koodiriviä. Minuutit kuluivat ja innostus vaihtui hitaasti hämmennykseen. Tuloksia odotellessa kerkesimme myös toteamaan pienen testiajomme maksavan odotettavasti noin $160, joskin hinta sisältyy meneillään olevaan ilmaiskauteen.

Lopulta palvelun kojelautaan ilmestyi analysoitujen rivien määrä, mutta automaattisten ehdotusten lukumäärä pysyi visusti nollassa. Menikö jotain pieleen vai tarkoittaako tulos sitä, että Vincitillä laadittu koodi on varsin timanttista laadullisesti?

Katse tulevaisuuteen

On mahdollista, että juuri lanseerattu palvelu on vielä tavanomaista hitaampi tai sen analyysiin sisältyy joitakin lastentauteja. Tarkemmin dokumentaatioon perehtyessä selviää, että palvelu tarjoaa erityisesti AWS:n omien SDK-pakettien käyttöön sekä rinnakkaisuuden ongelmiin liittyviä ehdotuksia sekä toimii tällä hetkellä vain Java-koodin osalta. Aineistomme oli kyllä pääosin Java:lla kirjoitettua, mutta ei ehkä muuten osu kohderyhmään kovinkaan hyvin.

Lopputuloksena voidaan päätellä, että Code Guru:n perusajatuksessa on paljon potentiaalia ja jatkokehitysmahdollisuuksia. Jokainen koodinkatselmointiin käytetty minuutti maksaa ja on ainakin osittain toisarvoista arvon tuottamista asiakkaalle. Jos menetelmä pystyisi korvaamaan ihmisen tekemän analyysin edes osittain, niin palvelun nykyinen hinta ei olisi jarru sen käyttämiselle. Toistaiseksi kuitenkin jäämme odottelemaan ensimmäisiä palvelun antamia kommentteja. Näkisimme sen myös mielellään osana nykyisiä sovelluskehityksen työkaluja, jotta työnkulkuun liittyvät viiveet saataisiin poistettua.

Tykkäsitkö artikkelista?

Anna pienet aplodit!

Kommentit

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *