Tekoälyratkaisuja on kaikkialla ja mallien kuten GPT 4o -integrointi on keskeisenä osana monien yrityksien ja palveluiden toimintaa tällä hetkellä. Tekoälyn tuomat hyödyt ovat siis todellisia ja ne ovat täällä pysyäkseen. Nykyiset kielimallit ja muut generoivat tekoälyt vievät kuitenkin erittäin paljon palvelinresursseja. Mitä jos olisi mahdollista suorittaa tekoälymalleja suoraan käyttäjän laitteella? Se varmistaisi käyttäjän tietojen turvallisuuden sekä nopeuttaisi mallien inferenssiä poistamalla palvelimen ja käyttäjän välistä viivettä verkon ylitse.
Tämä on jo nyt mahdollista ja kehitys on nopeaa. Tässä blogissa käydään läpi, miksi kannattaa harkita paikallisten mallien käyttöä ja kuinka ne voidaan integroida käytännössä web-sovelluksiin. Kirjoitus sai inspiraationsa Codegardenissa kuullusta Önder Ceylanin luennosta "The Future of Web AI: Integrating On-Device Models and LLMs in the Browser".
Miksi harkita paikallisia malleja?
Paikallisilla malleilla tarkoitetaan tekoälymalleja, jotka toimivat täysin loppukäyttäjän laitteella. Nämä ovat yleisesti huomattavasti pienempiä kuin tunnetuimmat kielimallit kuten GPT 4o tai Gemini. Hyödyt tulevatkin niiden kustannustehokkuudesta ja nopeudesta.
Vaikka paikalliset mallit ovat skaalaltaan paljon pienempiä, ovat ne silti hyödyllisiä. Pienien mallien valitsemisessa voidaankin miettiä, että millainen käyttötarkoitus sovelluksessa on. Pitääkö sen olla yleismallisempi kielimalli, joka osaa vähän kaikkea, vai riittäisikö yksinkertaisempi ja toiminnaltaan kohdennetumpi malli?
Kuvitellaan, että sivustolla on kommenttikenttä, jonka kautta käyttäjä voi kirjoittaa ja julkaista kommenttinsa. Haluamme suodattaa käyttäjän lähettämiä kommenteja siten, että tekstisisältö ei saa olla liian ilkeä. Tähän tarvitsisimme kielimallin, joka pystyy arvioimaan sekä tunnistamaan tekstin sisällön tuntuman. Käytännössä tähän tarkoitukseen voisi hyvinkin toimia OpenAI:n GPT -mallit tai Googlen Gemini, mutta niihin vaadittu teho on turhan suuri ja yksinkertaisempiakin ratkaisuja on saatavilla. Lopullinen tuloskaan ei nimittäin vaadi monimutkaista tulostetta, vaan esimerkiksi yksinkertaisen liukuluku taikka kyllä/ei-arvio riittäisi hyvin.
Voidaan siis harkita vaihtoehtoisia toteutustapoja, esimerkiksi paikallista mallia, joka on kehitetty toimimaan erityisesti tällaisessa tunteiden tunnistuksessa. Tällä tavalla toteutuksesta tulee tehokkaampi ja todennäköisesti myös nopeampi yksinkertaiseen käyttötarkoitukseen. Esimerkin käyttötarkoitukseen riittää hyvin esimerkiksi tekstinluokitusmalli, joka antaa vastauksen vain sisällön positiivisuudesta liukulukuarvona 0–1 välillä. Näitä malleja on saatavilla Hugging Face -palvelusta ja voit nähdä mainittujen hakukriteerien tulokset tästä linkistä. Niiden lähdekoodi on myös avointa.
Paikallisten mallien käyttöönotto web-sovelluksessa
Kuten aiemmassa vaiheessa käytiin lävitse, haluamme käyttää Hugging Facen avoimen lähdekoodin ratkaisuja ja malleja. Palvelulta löytyykin valmis kirjasto, jolla voidaan integroida nämä mallit JavaScript-koodin kanssa. Tämän kirjaston nimi on Transformers.js. Se voidaan asettaa käyttämään laitteen näytönohjainta WebGPU:n avulla tai prosessoria WebAssemblyn kautta. Tällä voidaan siis hyödyntää käyttäjän oman laitteen tehoja. Tulevaisuudessa kun selaimien WebNN-teknologia on toimintakelpoinen, tulee kirjasto myös tukemaan NPU-prosessorien käyttämistä (WebNN Overview | Microsoft Learn).
Hakemalla huggingface.co/models -sivustolta malleja, voidaan suodattaa vain ne, jotka ovat yhteensopivia Transformers.js -kirjaston kanssa. Kun kirjasto on ladattu ja malli valittu, niin niitä voidaan alkaa käyttämään JavaScript-koodissa. Alla oleva esimerkki käyttää tunteentunnistusmallia, joka analysoi sille annetun tekstin ja palauttaa arvion positiivisuudesta sekä myös itsevarmuusarvion liukulukuna.
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.0.0';
const pipe = await pipeline('sentiment-analysis', 'Xenova/distilbert-base-uncased-finetuned-sst-2-english');
const result = await pipe("I love transformers"); console.log(result)
Kuten voi huomata, niin ratkaisu ei vie paljoa koodia toimiakseen ja sen toimintaa on täten helppo laajentaa sovelluksen tarpeisiin. Esimerkissä käytetään CDN:ää, josta kirjasto ladataan, mutta se on mahdollista myös ottaa käyttöön paikallisena npm-pakettina. Lue lisää kirjaston käyttöönotosta Hugging Facen dokumentaatio sivuilta. (Transformers.js)
Kirjoitimme myös yksinkertaisen prototyypin aiemmin mainitusta kommenttien validoinnista. Se on saatavilla CodePen-sivustolla, missä pääset kokeilemaan ja kopioimaan myös käytettyä koodia. (Sentimental Analysis Validation - CodePen)
Yhteenveto
On selvää, että tulevaisuuden web-sovelluksissa tekoälyn ei aina tarvitse olla suurien yrityksien palvelimilla – osa ominaisuuksista voi ja kannattaa tuoda lähemmäksi käyttäjää. Jos et vielä ole tutkinut mahdollisuuksia paikallisten mallien hyödyntämiseen omissa projekteissasi, nyt on erinomainen hetki aloittaa.
Ota meihin yhteyttä, niin muutetaan ideasi ratkaisuiksi!
2025
Elokuu (3)
Kesäkuu (9)
Toukokuu (1)
Helmikuu (1)
2024
Joulukuu (2)
Lokakuu (2)
Kesäkuu (1)
Toukokuu (2)
Huhtikuu (1)
2023
Joulukuu (4)
Lokakuu (4)
Syyskuu (3)
Elokuu (1)
Heinäkuu (1)
Helmikuu (1)
2022
Joulukuu (3)
Syyskuu (2)
Kesäkuu (3)
Toukokuu (3)
Maaliskuu (3)
Tammikuu (1)
2021
Joulukuu (3)
Marraskuu (2)
Toukokuu (3)
Helmikuu (1)
2020
Elokuu (1)
Toukokuu (1)
Huhtikuu (1)
Maaliskuu (1)
Helmikuu (1)
2019
Joulukuu (2)
Marraskuu (1)
Lokakuu (1)
Syyskuu (1)
Huhtikuu (3)
Helmikuu (3)
2018
Joulukuu (2)
Marraskuu (1)
Lokakuu (1)
Syyskuu (5)
Elokuu (1)
Kesäkuu (2)
Toukokuu (2)
Huhtikuu (1)
Maaliskuu (1)
2017
Joulukuu (3)
Toukokuu (2)
2016
Joulukuu (1)
Marraskuu (2)
Syyskuu (1)