Tämä on toinen viesti kaksiosaisesta sarjasta, jossa ehdotan käytännön opasta organisaatioille, jotta voit arvioida verkkotunnuksesi tekstin yhteenvetomallien laatua.
Jos haluat johdannon tekstin yhteenvetoon, yleiskatsauksen tästä opetusohjelmasta ja vaiheet projektimme perustan luomiseksi (kutsutaan myös osaksi 1), katso takaisin ensimmäinen viesti.
Tämä viesti on jaettu kolmeen osaan:
- Osa 2: Luo yhteenvedot nollakuvan mallilla
- Osa 3: Harjoittele yhteenvetomalli
- Osa 4: Arvioi koulutettu malli
Osa 2: Luo yhteenvedot nollakuvan mallilla
Tässä viestissä käytämme käsitettä nolla-ammuttu oppiminen (ZSL), mikä tarkoittaa, että käytämme mallia, joka on koulutettu tiivistämään tekstiä, mutta joka ei ole nähnyt esimerkkejä arXiv-tietojoukko. Se on vähän kuin yrittäisi maalata muotokuvaa, kun olet elämäsi aikana tehnyt vain maisemamaalausta. Osaat maalata, mutta et ehkä ole liian perehtynyt muotokuvamaalauksen monimutkaisuuteen.
Tässä osiossa käytämme seuraavaa muistikirja.
Miksi nollasta oppimista?
ZSL:stä on tullut suosittu viime vuosina, koska sen avulla voit käyttää huippuluokan NLP-malleja ilman koulutusta. Ja heidän suorituskykynsä on toisinaan melko hämmästyttävää: Suuri tiedetutkimustyöryhmä on äskettäin julkaissut T0pp (lausutaan "T Zero Plus Plus") -mallinsa, joka on koulutettu erityisesti nolla-shot-monitehtäväoppimisen tutkimiseen. Se voi usein ylittää kuusi kertaa suuremmat mallit BIG-penkki vertailuindeksin ja voi menestyä paremmin GPT-3 (16 kertaa suurempi) useissa muissa NLP-vertailuissa.
Toinen ZSL:n etu on, että sen käyttöön tarvitaan vain kaksi riviä koodia. Kokeilemalla sitä luomme toisen perusviivan, jonka avulla määritämme mallin suorituskyvyn kasvun sen jälkeen, kun olemme hienosäätäneet mallin tietojoukossamme.
Luo zero-shot-oppimisputki
Voit käyttää ZSL-malleja, voimme käyttää Hugging Face'sia Pipeline API. Tämän API:n avulla voimme käyttää tekstin yhteenvetomallia, jossa on vain kaksi koodiriviä. Se huolehtii NLP-mallin tärkeimmistä käsittelyvaiheista:
- Esikäsittele teksti mallin ymmärtämään muotoon.
- Välitä esikäsitellyt syötteet mallille.
- Jälkikäsittely mallin ennusteet, jotta voit ymmärtää niitä.
Se käyttää yhteenvetomalleja, jotka ovat jo saatavilla Hugging Face mallin nappi.
Käytä sitä suorittamalla seuraava koodi:
Se siitä! Koodi lataa yhteenvetomallin ja luo yhteenvedot paikallisesti koneellesi. Jos mietit, mitä mallia se käyttää, voit joko etsiä sen osoitteesta lähdekoodi tai käytä seuraavaa komentoa:
Kun suoritamme tämän komennon, näemme, että tekstin yhteenvedon oletusmallia kutsutaan sshleifer/distilbart-cnn-12-6
:
Voimme löytää mallikortti tälle mallille Hugging Face -sivustolla, jossa voimme myös nähdä, että mallia on koulutettu kahdella tietojoukolla: CNN Dailymail -tietojoukko ja Extreme Summarization (XSum) -tietojoukko. On syytä huomata, että tämä malli ei tunne arXiv-tietojoukkoa ja sitä käytetään vain yhteenvedon tekemiseen teksteistä, jotka ovat samankaltaisia kuin ne, joita se on koulutettu (useimmiten uutisartikkeleita). Numerot 12 ja 6 mallin nimessä viittaavat enkooderikerrosten ja vastaavasti dekooderikerrosten lukumäärään. Niiden selittäminen ei kuulu tämän opetusohjelman soveltamisalaan, mutta voit lukea siitä lisää postauksesta Esittelyssä BART Sam Shleifer, joka loi mallin.
Käytämme jatkossa oletusmallia, mutta suosittelen kokeilemaan erilaisia esikoulutettuja malleja. Kaikki yhteenvetoon sopivat mallit löytyvät sivulta Hugging Face -sivusto. Jos haluat käyttää eri mallia, voit määrittää mallin nimen kutsuessasi Pipeline API:ta:
Ekstraktiivinen vs. abstrakti yhteenveto
Emme ole vielä puhuneet kahdesta mahdollisesta mutta erilaisesta lähestymistavasta tekstin yhteenvetoon: uuttavia vs. abstrakti. Ekstraktiivinen tiivistelmä on strategia, jossa tekstistä otetut otteet yhdistetään tiivistelmäksi, kun taas abstrakti yhteenveto sisältää rungon parafrasoinnin uusilla lauseilla. Suurin osa yhteenvetomalleista perustuu malleihin, jotka luovat uutta tekstiä (ne ovat luonnollisen kielen sukupolvimalleja, kuten esim. GPT-3). Tämä tarkoittaa, että tiivistelmämallit luovat myös uutta tekstiä, mikä tekee niistä abstrakteja yhteenvetomalleja.
Luo nollakuvan yhteenvedot
Nyt kun tiedämme, kuinka sitä käytetään, haluamme käyttää sitä testitietojoukossamme – samassa tietojoukossa, jossa käytimme jakso 1 perustan luomiseksi. Voimme tehdä sen seuraavalla silmukalla:
Käytämme min_length
ja max_length
parametrit mallin luoman yhteenvedon ohjaamiseksi. Tässä esimerkissä asetimme min_length
viiteen, koska haluamme otsikon olevan vähintään viisi sanaa pitkä. Ja arvioimalla viiteyhteenvedot (tutkimuspaperien todelliset nimet) päätämme, että 5 voisi olla kohtuullinen arvo max_length
. Mutta jälleen kerran, tämä on vasta ensimmäinen yritys. Kun projekti on kokeiluvaiheessa, näitä kahta parametria voidaan ja pitää muuttaa, jotta nähdään, muuttuuko mallin suorituskyky.
Lisäparametrit
Jos olet jo perehtynyt tekstin luomiseen, saatat tietää, että mallin luomaan tekstiin vaikuttaa monia muita parametreja, kuten säteen haku, näytteenotto ja lämpötila. Nämä parametrit antavat sinulle paremman hallinnan luotavaan tekstiin, esimerkiksi tekevät tekstistä sujuvampaa ja vähemmän toistoa. Nämä tekniikat eivät ole saatavilla Pipeline API:ssa – näet lähdekoodi että min_length
ja max_length
ovat ainoat parametrit, jotka otetaan huomioon. Kun olemme kouluttaneet ja ottaneet käyttöön oman mallimme, meillä on kuitenkin pääsy näihin parametreihin. Siitä lisää tämän viestin osiossa 4.
Mallin arviointi
Kun olemme luoneet nollakuvien yhteenvedot, voimme käyttää ROUGE-toimintoa uudelleen vertaillaksemme ehdokasyhteenvetoja viiteyhteenvetojen kanssa:
Tämän laskelman suorittaminen ZSL-mallilla luoduille tiivistelmille antaa meille seuraavat tulokset:
Kun vertaamme niitä perusviivaamme, huomaamme, että tämä ZSL-malli toimii itse asiassa huonommin kuin yksinkertainen heuristimme, jossa otetaan vain ensimmäinen lause. Tämäkään ei ole odottamatonta: vaikka tämä malli osaa tehdä yhteenvedon uutisartikkeleista, se ei ole koskaan nähnyt esimerkkiä akateemisen tutkimuspaperin abstraktin tiivistämisestä.
Lähtötason vertailu
Olemme nyt luoneet kaksi perusviivaa: toisen käyttämällä yksinkertaista heuristista ja toisen ZSL-mallia. Vertaamalla ROUGE-pisteitä näemme, että yksinkertainen heuristinen suorituskyky on tällä hetkellä tehokkaampi kuin syväoppimismalli.
Seuraavassa osiossa otamme tämän saman syvän oppimismallin ja yritämme parantaa sen suorituskykyä. Teemme sen harjoittelemalla sitä arXiv-tietojoukossa (tätä vaihetta kutsutaan myös hienosäätö). Hyödynnämme sitä tosiasiaa, että se osaa jo tiivistää tekstin yleisesti. Näytämme sille sitten paljon esimerkkejä arXiv-tietojoukostamme. Syväoppimismallit ovat poikkeuksellisen hyviä tunnistamaan kuvioita tietojoukoissa sen jälkeen, kun ne on koulutettu niihin, joten odotamme mallin paranevan tässä tehtävässä.
Osa 3: Harjoittele yhteenvetomalli
Tässä osiossa harjoittelemme mallia, jota käytimme nollakuvan yhteenvedoissa osiossa 2 (sshleifer/distilbart-cnn-12-6
) tietoaineistossamme. Ajatuksena on opettaa mallille, miltä tutkimustulosten abstraktien tiivistelmät näyttävät näyttämällä sille useita esimerkkejä. Ajan mittaan mallin pitäisi tunnistaa tämän tietojoukon mallit, mikä antaa sille mahdollisuuden luoda parempia yhteenvetoja.
Vielä kerran on syytä huomata, että jos sinulla on merkittyjä tietoja, eli tekstejä ja vastaavia yhteenvetoja, sinun tulee käyttää niitä mallin kouluttamiseen. Vain tällä tavoin malli voi oppia tietyn tietojoukkosi mallit.
Mallikoulutuksen täydellinen koodi on seuraavassa muistikirja.
Perusta koulutustyö
Koska syväoppimismallin harjoitteleminen kestäisi muutaman viikon kannettavalla tietokoneella, käytämme Amazon Sage Maker koulutustöitä sen sijaan. Katso lisätietoja osoitteesta Kouluta malli Amazon SageMakerilla. Tässä viestissä korostan lyhyesti näiden koulutustöiden käytön etua sen lisäksi, että niiden avulla voimme käyttää GPU-laskentaesiintymiä.
Oletetaan, että meillä on klusteri GPU-instanssia, jota voimme käyttää. Siinä tapauksessa haluamme todennäköisesti luoda Docker-kuvan koulutuksen suorittamista varten, jotta voimme helposti replikoida koulutusympäristön muilla koneilla. Asennamme sitten tarvittavat paketit ja koska haluamme käyttää useita esiintymiä, meidän on myös määritettävä hajautettu koulutus. Kun koulutus on suoritettu, haluamme nopeasti sammuttaa nämä tietokoneet, koska ne ovat kalliita.
Kaikki nämä vaiheet ovat abstrahoituneet pois meistä koulutustöitä käytettäessä. Itse asiassa voimme kouluttaa mallin samalla tavalla kuin on kuvattu määrittämällä koulutusparametrit ja kutsumalla sitten vain yksi menetelmä. SageMaker hoitaa loput, mukaan lukien GPU-esiintymien pysäyttäminen, kun koulutus on valmis, jotta siitä ei aiheudu lisäkustannuksia.
Lisäksi Hugging Face ja AWS ilmoittivat kumppanuudesta aiemmin vuonna 2022, mikä tekee Hugging Face -mallien kouluttamisesta entistä helpompaa SageMakerilla. Tämä toiminto on saatavilla Hugging Facen kehityksen kautta AWS Deep Learning Containers (DLC:t). Näihin säilöihin kuuluvat Hugging Face Transformers, Tokenizers ja Datasets-kirjasto, jonka avulla voimme käyttää näitä resursseja koulutukseen ja päättelytyöhön. Luettelo saatavilla olevista DLC-kuvista on kohdassa Saatavilla Hugging Face Deep Learning Containers kuvat. Niitä ylläpidetään ja päivitetään säännöllisesti tietoturvakorjauksilla. Löydämme monia esimerkkejä Hugging Face -mallien kouluttamisesta näillä lisäosilla ja Hugging Face Python SDK seuraavassa GitHub repo.
Käytämme yhtä näistä esimerkeistä mallina, koska se tekee melkein kaiken, mitä tarvitsemme tarkoitukseemme: kouluttaa yhteenvetomallia tietyssä tietojoukossa hajautetusti (käyttäen useampaa kuin yhtä GPU-esiintymää).
Yksi asia, joka meidän on kuitenkin otettava huomioon, on se, että tämä esimerkki käyttää tietojoukkoa suoraan Hugging Face -tietojoukon keskittimestä. Koska haluamme tarjota omia mukautettuja tietojamme, meidän on muutettava muistikirjaa hieman.
Siirrä tiedot koulutustyöhön
Jotta voimme ottaa huomioon sen tosiasian, että tuomme oman tietojoukon, meidän on käytettävä kanavat. Lisätietoja on kohdassa Kuinka Amazon SageMaker tarjoaa koulutustietoja.
Itse pidän tätä termiä hieman hämmentävänä, joten ajattelen mielessäni aina kartoitus kun kuulen kanavat, koska se auttaa minua visualisoimaan paremmin mitä tapahtuu. Selitän: kuten olemme jo oppineet, koulutustyö pyörittää joukon Amazonin elastinen laskentapilvi (Amazon EC2) esiintyy ja kopioi Docker-kuvan siihen. Tietojoukomme on kuitenkin tallennettu Amazonin yksinkertainen tallennuspalvelu (Amazon S3) eikä sitä voi käyttää kyseisellä Docker-kuvalla. Sen sijaan koulutustyön on kopioitava tiedot Amazon S3:sta ennalta määritettyyn polkuun kyseisessä Docker-kuvassa. Se tekee sen siten, että kerromme koulutustyölle, missä tiedot sijaitsevat Amazon S3:ssa ja mihin Docker-kuvan kohtaan tiedot tulisi kopioida, jotta koulutustyö pääsee käsiksi niihin. Me kartta Amazon S3 -sijainti paikallisen polun kanssa.
Asetamme paikallisen polun harjoitustyön hyperparametrit-osiossa:
Sitten kerromme harjoitustyölle, missä Amazon S3:ssa data sijaitsee, kun kutsumme fit()-menetelmää, joka aloittaa harjoittelun:
Huomaa, että kansion nimi jälkeen /opt/ml/input/data
vastaa kanavan nimeä (datasets
). Tämä mahdollistaa koulutustyön kopioimisen Amazon S3:sta paikalliselle polulle.
Aloita harjoittelu
Olemme nyt valmiita aloittamaan koulutustyön. Kuten aiemmin mainittiin, teemme sen soittamalla fit()
menetelmä. Harjoitustyö kestää noin 40 minuuttia. Voit seurata edistymistä ja nähdä lisätietoja SageMaker-konsolista.
Kun koulutustyö on valmis, on aika arvioida juuri koulutettua malliamme.
Osa 4: Arvioi koulutettu malli
Koulutetun mallimme arviointi on hyvin samanlaista kuin osiossa 2, jossa arvioimme ZSL-mallia. Kutsumme mallia ja luomme ehdokkaiden yhteenvedot ja vertaamme niitä vertailuyhteenvetoon laskemalla ROUGE-pisteet. Mutta nyt malli istuu Amazon S3:ssa tiedostossa nimeltä model.tar.gz
(tarkan sijainnin löytämiseksi voit tarkistaa koulutustyön konsolista). Joten miten pääsemme malliin luomaan yhteenvetoja?
Meillä on kaksi vaihtoehtoa: ota malli käyttöön SageMaker-päätepisteeseen tai lataa se paikallisesti, kuten teimme osiossa 2 ZSL-mallin kanssa. Tässä opetusohjelmassa I ota malli käyttöön SageMaker-päätepisteeseen koska se on kätevämpää ja valitsemalla päätepisteelle tehokkaamman esiintymän, voimme lyhentää päättelyaikaa merkittävästi. GitHub-repo sisältää a muistikirja joka näyttää kuinka arvioida mallia paikallisesti.
Ota malli käyttöön
Koulutetun mallin käyttöönotto SageMakerissa on yleensä erittäin helppoa (katso jälleen seuraava esimerkki aiheesta GitHub Hugging Face -sivustolta). Mallin koulutuksen jälkeen voimme soittaa estimator.deploy()
ja SageMaker tekee loput puolestamme taustalla. Koska siirrymme opetusohjelmassamme muistikirjasta toiseen, meidän on ensin löydettävä koulutustyö ja siihen liittyvä malli, ennen kuin voimme ottaa sen käyttöön:
Kun olemme hakeneet mallin sijainnin, voimme ottaa sen käyttöön SageMaker-päätepisteessä:
Käyttöönotto SageMakerissa on yksinkertaista, koska se käyttää SageMaker Hugging Face Inference Toolkit, avoimen lähdekoodin kirjasto Transformers-mallien palvelemiseen SageMakerissa. Meidän ei normaalisti tarvitse edes antaa päättelykomentosarjaa; työkalupakki huolehtii siitä. Siinä tapauksessa työkalupakki kuitenkin käyttää jälleen Pipeline API:ta, ja kuten kerroimme osiossa 2, Pipeline API ei salli meidän käyttää kehittyneitä tekstin luontitekniikoita, kuten sädehakua ja näytteenottoa. Tämän rajoituksen välttämiseksi tarjoamme mukautettu päättelykomentosarja.
Ensimmäinen arviointi
Äskettäin koulutetun mallimme ensimmäisessä arvioinnissa käytämme samoja parametreja kuin osiossa 2 nolla-shot-mallin kanssa ehdokastiivistelmien luomiseen. Tämä mahdollistaa omena-omenoiden vertailun:
Vertaamme mallin luomia yhteenvetoja referenssitiivistelmiin:
Tämä on rohkaisevaa! Ensimmäinen yrityksemme kouluttaa mallia ilman hyperparametrien viritystä on parantanut ROUGE-pisteitä merkittävästi.
Toinen arviointi
Nyt on aika käyttää joitain kehittyneempiä tekniikoita, kuten säteen hakua ja näytteenottoa, leikkiä mallilla. Katso yksityiskohtaiset tiedot siitä, mitä kukin näistä parametreista tekee Tekstin luominen: käyttämällä erilaisia dekoodausmenetelmiä kielten luomiseen Transformersin avulla. Kokeillaan sitä puolisatunnaisella arvojoukolla joillekin näistä parametreista:
Kun käytämme malliamme näillä parametreilla, saamme seuraavat pisteet:
Se ei toiminut aivan kuten toivoimme – ROUGE-pisteet ovat itse asiassa laskeneet hieman. Älä kuitenkaan anna tämän estää sinua kokeilemasta eri arvoja näille parametreille. Itse asiassa tämä on kohta, jossa lopetamme asennusvaiheen ja siirrymme projektin kokeiluvaiheeseen.
Johtopäätös ja seuraavat vaiheet
Olemme saaneet kokeiluvaiheen asetukset päätökseen. Tässä kaksiosaisessa sarjassa latasimme ja valmistelimme tietomme, loimme perusviivan yksinkertaisella heuristisella menetelmällä, loimme toisen lähtötilanteen nolla-oppimisen avulla ja sitten koulutimme malliamme ja havaitsimme suorituskyvyn parantuneen merkittävästi. Nyt on aika leikkiä jokaisen luomamme osan kanssa luodaksemme entistä parempia yhteenvetoja. Harkitse seuraavaa:
- Esikäsittele tiedot oikein – Poista esimerkiksi pysäytyssanat ja välimerkit. Älä aliarvioi tätä osaa – monissa datatieteen projekteissa tietojen esikäsittely on yksi tärkeimmistä näkökohdista (ellei tärkein), ja datatieteilijät viettävät yleensä suurimman osan ajastaan tämän tehtävän parissa.
- Kokeile eri malleja – Opetusohjelmassamme käytimme yhteenvetoon standardimallia (
sshleifer/distilbart-cnn-12-6
), mutta monia muita malleja käytettävissä, joita voit käyttää tähän tehtävään. Joku niistä saattaa sopia paremmin käyttötarkoitukseen. - Suorita hyperparametrien viritys – Mallia opetettaessa käytimme tiettyä joukkoa hyperparametreja (oppimisnopeus, aikakausien määrä jne.). Näitä parametreja ei ole hakattu kiveen – päinvastoin. Sinun tulee muuttaa näitä parametreja ymmärtääksesi, kuinka ne vaikuttavat mallisi suorituskykyyn.
- Käytä erilaisia parametreja tekstin luomiseen – Teimme jo yhden kierroksen tiivistelmien luomisessa eri parametreilla hyödyntääksemme sädehakua ja näytteenottoa. Kokeile erilaisia arvoja ja parametreja. Lisätietoja on kohdassa Tekstin luominen: käyttämällä erilaisia dekoodausmenetelmiä kielten luomiseen Transformersin avulla.
Toivottavasti pääsit loppuun ja pidit tästä opetusohjelmasta hyödyllisenä.
kirjailijasta
Heiko Hotz on tekoälyn ja koneoppimisen vanhempi ratkaisuarkkitehti ja johtaa Natural Language Processing (NLP) -yhteisöä AWS:ssä. Ennen tätä tehtävää hän toimi Amazonin EU-asiakaspalvelun datatieteen johtajana. Heiko auttaa asiakkaitamme menestymään AI/ML-matkallaan AWS:ssä ja on työskennellyt organisaatioiden kanssa monilla toimialoilla, mukaan lukien vakuutus-, rahoitus-, media- ja viihde-, terveydenhuolto-, yleishyödylliset ja tuotantolaitokset. Vapaa-ajallaan Heiko matkustaa niin paljon kuin mahdollista.
- Coinsmart. Euroopan paras Bitcoin- ja kryptopörssi.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. VAPAA PÄÄSY.
- CryptoHawk. Altcoinin tutka. Ilmainen kokeilu.
- Lähde: https://aws.amazon.com/blogs/machine-learning/part-2-set-up-a-text-summarization-project-with-hugging-face-transformers/
- "
- &
- 100
- 2022
- 7
- 84
- 9
- Meistä
- TIIVISTELMÄ
- pääsy
- Tili
- Lisäksi
- lisä-
- kehittynyt
- Etu
- AI
- Kaikki
- jo
- Vaikka
- Amazon
- ilmoitti
- Toinen
- api
- noin
- artikkelit
- saatavissa
- AWS
- tausta
- Lähtötilanne
- Palkki
- tulevat
- ovat
- benchmark
- hyödyttää
- Bitti
- soittaa
- joka
- muuttaa
- koodi
- yhteisö
- Laskea
- tietokoneet
- käsite
- Console
- Kontit
- sisältää
- ohjaus
- Mukava
- kustannukset
- voisi
- luo
- Luominen
- asiakassuhde
- Asiakaspalvelu
- Asiakkaat
- tiedot
- tietojenkäsittely
- sijoittaa
- Kehitys
- DID
- eri
- jaettu
- Satamatyöläinen
- ei
- verkkotunnuksen
- alas
- lataukset
- helposti
- kannustaa
- päätepiste
- Viihde
- ympäristö
- EU
- kaikki
- esimerkki
- odottaa
- otteet
- Kasvot
- taloudellinen
- rahoituspalvelut
- Etunimi
- sovittaa
- seurata
- jälkeen
- muoto
- Eteenpäin
- löytyi
- toiminto
- toiminnallisuus
- edelleen
- general
- tuottaa
- sukupolvi
- GitHub
- menee
- hyvä
- GPU
- ohjaavat
- pää
- terveydenhuollon
- auttaa
- Korostaa
- Miten
- Miten
- HTTPS
- ajatus
- tunnistaminen
- kuva
- tärkeä
- parantaa
- sisältää
- Mukaan lukien
- Kasvaa
- teollisuuden
- vaikutus
- tiedot
- asentaa
- vakuutus
- koukerot
- IT
- Job
- Työpaikat
- avain
- Landschaft
- Kieli
- kannettava tietokone
- suurempi
- Liidit
- OPPIA
- oppinut
- oppiminen
- Kirjasto
- Lista
- paikallinen
- paikallisesti
- sijainti
- Pitkät
- kone
- koneoppiminen
- Koneet
- TEE
- valmistus
- Media
- mielessä
- ML
- malli
- mallit
- lisää
- eniten
- nimittäin
- Luonnollinen
- uutiset
- muistikirja
- numero
- numerot
- Vaihtoehdot
- tilata
- organisaatioiden
- Muut
- Paperi
- Kumppanuus
- Merkit
- suorituskyky
- vaihe
- Pelaa
- Kohta
- Suosittu
- mahdollinen
- voimakas
- Ennusteet
- projekti
- hankkeet
- ehdottaa
- toimittaa
- tarjoaa
- tarkoitus
- laatu
- nopeasti
- kohtuullinen
- tunnistaa
- tarvitaan
- tutkimus
- Esittelymateriaalit
- REST
- tulokset
- kierros
- ajaa
- juoksu
- tiede
- tutkijat
- Haku
- turvallisuus
- tunne
- Sarjat
- palvelu
- Palvelut
- palvelevat
- setti
- merkittävä
- samankaltainen
- Yksinkertainen
- SIX
- So
- Ratkaisumme
- erityisesti
- viettää
- Alkaa
- alkaa
- huippu-
- Levytila
- Strategia
- onnistunut
- Vaihtaa
- tekniikat
- testi
- Kautta
- aika
- Otsikko
- koulutus
- tyypillisesti
- ymmärtää
- us
- käyttää
- yleensä
- käyttää
- arvo
- Verkkosivu
- Mitä
- KUKA
- wikipedia
- sisällä
- ilman
- sanoja
- Referenssit
- treenata
- työskenteli
- arvoinen
- vuotta
- nolla-