SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Kokemuksia Azure OpenAI
fine-tuningista omalla datalla
9.5.2023
Pontus Mauno
Data Engineer @ Zure
pontus.mauno@zure.com
Linkedin
Pontus Mauno
Sisältö
• Mitä Azure OpenAI:lla ja Fine-tuningilla on
väliä?
• Mitä Fine-tuning on?
• Mihin sitä voi käyttää?
• Kokemuksia ja oppeja esimerkkien kautta
Tulikuuma
Bisnessovellukset
Suojattu
Tehokkuus
Miksi fine-tuningilla on väliä?
Asiakkaiden ylivoimaisesti yleisin kysymys OpenAI:sta on
“Miten saan OpenAI:n toimimaan omalla datallani?”
Neljä tapaa:
• Few-shot learning
• “retrieval augmented generation pattern”
• Upotukset (embeddings)
• Fine-tuning
Mihin sitä voi käyttää?
• Chatbotteihin
• Luokitteluun
• Yhteenvetoihin
• Sisällöntuottamiseen
Mitä fine-tuning teknisesti on?
“Olemassa olevan tekoälymallin erikoistamista tiettyyn tehtävään tai
aihealueeseen.”
• Tämä saavutetaan opettamalla mallia relevantilla lisäaineistolla
• Fine-tuning
• Parantaa mallin suorituskykyä kohdennetuissa tehtävissä
• Mahdollistaa enemmän esimerkkejä kuin promptin muotoilu
• Vähentää token-kulutusta ja vastausten latenssia
Ominaisuus taulukko
Mallin valinta
• Riippuu käyttötapauksesta
• Vapaatekstiä? Koodia? Avainsanoja? Konteksti?
• Monimutkaisemmat tapaukset vaativat kyvykkäämpiä
malleja
• Iteroiva prosessi kyvykkäämmästä mallista alaspäin
• Tavoitteena tasapaino kyvykkyyden ja kustannusten
kesken
Kustannukset
Malli
Promptaus per
1000 tokenia
Koulutus per tunti Ylläpito per tunti
Ada €0.000363 €18.110201 €0.045276
Babbage €0.000453 €19.921221 €0.072441
Curie €0.001812 €21.732241 €0.217323
Davinci €0.018111 €76.062843 €2.716531
Miten fine-tuning tapahtuu?
Opetusdatan
koostaminen
Mallin valinta ja
opetusdatan
lisääminen
Mallin
kouluttaminen
ja julkaiseminen
Fine-tuned
mallin käyttö
Opetusdata
Projekti BestDev
• Tavoitteena testata ja oppia Azure
OpenAI:sta
• Tehtäväksi valikoitui saada curie-malli
opetettua yhdistämään devaajia ja
projekteja
• Iteratiivinen yritys-erehdys prosessi
Ensimmäiset iteraatiot
Parannuksia
• Erottajat, välilyönnit ja lopetussekvenssit
kuntoon
• OpenAI validator tool
• Lisää ja monipuolisempaa dataa
• Seed-rivi ja kysymysten variointia
• (Hyper)parametrien säätöä
Katastrofaalinen unohtaminen
Demo
Mitä opimme?
• Opetusdatan laatu ja määrä ensisijaisia
• LLM-kehitys vaatii iterointia
• Kustannusoptimointia mallin valinnalla
• Fine-tuning ja muut kustomointitavat
täydentävät toisiaan
Confidential
Kiitos!
Pontus Mauno
Data Engineer
Zure
Lähteitä & linkkejä
• “Mitä fine-tuningilla on väliä?”
• GPT-x mallien visualisointi
• Dolly
• Zure fine-tuning blogipostaus
• Microsoft fine-tuning documentation

Weitere ähnliche Inhalte

Ähnlich wie openai-finetuning-conference.pptx

Testauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteenTestauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteen
Knowit Oy
 
Confluence blueprints
Confluence blueprintsConfluence blueprints
Confluence blueprints
Marko Saha
 

Ähnlich wie openai-finetuning-conference.pptx (20)

Mitä uutta Office 365:ssa ja milloin tulee SharePoint 2016? Office 365 Keep o...
Mitä uutta Office 365:ssa ja milloin tulee SharePoint 2016? Office 365 Keep o...Mitä uutta Office 365:ssa ja milloin tulee SharePoint 2016? Office 365 Keep o...
Mitä uutta Office 365:ssa ja milloin tulee SharePoint 2016? Office 365 Keep o...
 
Sovelto Channel -esittely
Sovelto Channel -esittelySovelto Channel -esittely
Sovelto Channel -esittely
 
SAPin innovatiivinen hyödyntäminen HR:ssä - case TeliaSonera
SAPin innovatiivinen hyödyntäminen HR:ssä - case TeliaSoneraSAPin innovatiivinen hyödyntäminen HR:ssä - case TeliaSonera
SAPin innovatiivinen hyödyntäminen HR:ssä - case TeliaSonera
 
Kettera vaatimustenhallinta
Kettera vaatimustenhallintaKettera vaatimustenhallinta
Kettera vaatimustenhallinta
 
Sovellusmodernisoinnin webinaarisarja, osa 3: modernisoidun sovelluksen integ...
Sovellusmodernisoinnin webinaarisarja, osa 3: modernisoidun sovelluksen integ...Sovellusmodernisoinnin webinaarisarja, osa 3: modernisoidun sovelluksen integ...
Sovellusmodernisoinnin webinaarisarja, osa 3: modernisoidun sovelluksen integ...
 
Testauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteenTestauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteen
 
Testauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteenTestauksen vaikutus yritysten tuloksellisuuteen
Testauksen vaikutus yritysten tuloksellisuuteen
 
Sovellusmodernisoinnin webinaarisarja, osa 1: sovellusportfolion modernisoinn...
Sovellusmodernisoinnin webinaarisarja, osa 1: sovellusportfolion modernisoinn...Sovellusmodernisoinnin webinaarisarja, osa 1: sovellusportfolion modernisoinn...
Sovellusmodernisoinnin webinaarisarja, osa 1: sovellusportfolion modernisoinn...
 
Julkishallinnon IT-hankinnat @Mearra
Julkishallinnon IT-hankinnat @MearraJulkishallinnon IT-hankinnat @Mearra
Julkishallinnon IT-hankinnat @Mearra
 
Dev ops atlassianway-final-2017-10
Dev ops atlassianway-final-2017-10Dev ops atlassianway-final-2017-10
Dev ops atlassianway-final-2017-10
 
Ketterän omistajuuden abc_ruuskanen
Ketterän omistajuuden abc_ruuskanenKetterän omistajuuden abc_ruuskanen
Ketterän omistajuuden abc_ruuskanen
 
Names nimekkäimmat it-osaajat
Names   nimekkäimmat it-osaajatNames   nimekkäimmat it-osaajat
Names nimekkäimmat it-osaajat
 
Ideaflow webinaari hakukoneoptimointi slideshare
Ideaflow webinaari hakukoneoptimointi slideshareIdeaflow webinaari hakukoneoptimointi slideshare
Ideaflow webinaari hakukoneoptimointi slideshare
 
Microservices - Palveluarkkitehtuurin uusi tuleminen - EMC Forum 2014
Microservices - Palveluarkkitehtuurin uusi tuleminen - EMC Forum 2014Microservices - Palveluarkkitehtuurin uusi tuleminen - EMC Forum 2014
Microservices - Palveluarkkitehtuurin uusi tuleminen - EMC Forum 2014
 
o365 opetuksessa ja oppimisessa ammatillisilla aloilla
o365 opetuksessa ja oppimisessa ammatillisilla aloillao365 opetuksessa ja oppimisessa ammatillisilla aloilla
o365 opetuksessa ja oppimisessa ammatillisilla aloilla
 
Confluence blueprints
Confluence blueprintsConfluence blueprints
Confluence blueprints
 
Voita peli verkossa: Parempia asiakkaita verkkopalvelun optimoinnilla
Voita peli verkossa: Parempia asiakkaita verkkopalvelun optimoinnillaVoita peli verkossa: Parempia asiakkaita verkkopalvelun optimoinnilla
Voita peli verkossa: Parempia asiakkaita verkkopalvelun optimoinnilla
 
Tekoälysovelluksia amkiin
Tekoälysovelluksia amkiinTekoälysovelluksia amkiin
Tekoälysovelluksia amkiin
 
Tutut sovellukset muuttuneet 19.10.23
Tutut sovellukset muuttuneet 19.10.23Tutut sovellukset muuttuneet 19.10.23
Tutut sovellukset muuttuneet 19.10.23
 
Digitalisoituvan maailman laatuhaasteet - miten laadunvarmistus muuttuu
Digitalisoituvan maailman laatuhaasteet - miten laadunvarmistus muuttuuDigitalisoituvan maailman laatuhaasteet - miten laadunvarmistus muuttuu
Digitalisoituvan maailman laatuhaasteet - miten laadunvarmistus muuttuu
 

openai-finetuning-conference.pptx

Hinweis der Redaktion

  1. Oikein hyvää iltapäivää ja tervetuloa kuulemaan kokemuksia liittyen tekoälymallien fine-tuningiin omalla datalla Azure OpenAI Servicessä Alkuun kysymys et kuinka monelle yleisössä Azure OpenAI Services ja sen sisältö on tuttua? Kättä ilmaan jos on Entä mites fine-tuning?
  2. Seuraavan tunnin aikana mä tuun käymään läpi tällaisia aiheita omalta kantiltani läpi, eli ensin lähetään siitä et miks mun mielestä Azure OpenAI:lla ja fine-tuningilla on merkitystä Sen lisäksi käydään läpi et mitä tämä hienosti suomeksi esim hienosäädöksi tai mukauttamiseksi kääntyvä fine tuning oikeen on ja että millaisissa bisneskeisseissä sitä voi käyttää, minkä lisäksi mä kerron omista kokemuksistani ja tähänastisella matkalla opituista asioista Eli mun tavoitteena on että tän tunnin jälkeen teillä on yleiskuva siitä mitä fine-tuning on, mihin sitä ehkä voisi käyttää ja sen lisäksi teillä on mun kokemukset mihin peilata kun mietitte tätä omaan käyttöönne
  3. Eli lähetääs sit ensin pureutumaan tähän ensimmäiseen aihealueeseen eli että mitä väliä Azure OpenAI:lla on Lähestytään asiaa tällasen kuvan kautta, tässä on siis Midjourneylla generoitu kuva jonka promptissa on käytetty neljää sanaa joihin mun mielestä tiivistyy syyt miksi Azure OpenAI:lla on merkitystä näiden AI-sovellusten kehittämisessä Mä ajattelin että annan teille vaikka 15 sekuntia aikaa miettiä että mitä ne vois olla, ja sille kuka onnistuu arvaamaan lähimmäs mä tarjoon päivän jälkeen juoman Tulikuuma – Vaikeaa keksiä hypetetympää ja nopeammin suosituksi noussutta teknologiaa kuin nää OpenAI- ja muiden toteuttamat suuret kielimallit ja ChatGPTt sun muut, ja ne voi helposti ottaa käyttöön Azuren kautta Bisnessovellukset – Hauska promptailu ja chatgpt’lle höpöttely on yksi asia, mut bisneskäyttö, omalla datalla operointi ja bisnessovelluksiin upottaminen on asioita joilla tulee olemaan iso arvo isojen kielimallien käytössä ja siinä Azure OpenAI on hyödyllinen Suojeltu – Jotkut on varmaan nähneet erinäisiä lapsuksia mitä on päässyt tapahtumaan, paitsi Samsungilla missä työntekijät syötti bisnessalaisuuksia suoraan OpenAI:lle, myös esim OpenAI:n chat-bugissa joka vuoti satunnaisten käyttäjien keskusteluita muille. Tällaisia on helpompi välttää Azure OpenAI:n avulla missä tietoturva, pääsynhallinta ja omistajuus dataan toteutuu Azuren kautta Tehokkuus – Tää pointti johtuu vahvasti noista aiemmista, eli näiden AI-teknologioiden turvallisen käytönhän on tarkoitus tehostaa ja helpottaa ihmisten työntekoa ja elämää eli toisin sanoen vapauttamaan meidät toisteisesta ja generatiivisesta työstä ja mahdollistamaan meille lisää aikaa olla luovia ja keksiä uusia asioita Entäs sitten se fine-tuning?
  4. Eli nyt kun me ollaan mietitty että miksi Azure OpenAI servicellä on laajemmin väliä tullaankin lähemmäs tätä tän päivän aihetta ja relevanttiin kysymykseen eli että no mitäs ihmeen väliä tällä fine-tuningilla sitten on? Hyviä syitä miksi sillä on väliä on useita, joista ensimmäinen on se että se vastaa ylivoimaisesti yleisimpään OpenAI-käyttöä koskevaan kysymykseen että miten omaa dataa voi turvallisesti käyttää ja hyödyntää näiden mallien kanssa? Näitä tapoja on toki muitakin, esim Few-shot learning: Mallille annetaan promptin mukana joitain esimerkkejä siitä mitä sen pitäisi tehdä tai palauttaa vastaukseksi RAGP: Nimihirviö joka tarkoittaa käytännössä semanttisen haun käyttämistä mahdollistamaan olemassaolevien datapankkien käyttöä ison kielimallin kanssa Upotukset: Tekstipohjainen sisältö käännetään numeerisiksi vektoreiksi jotka esittää sisällön tarkoitusta ja kontekstia, hyödyllinen ison yhtenäisen tekstimassan opettamisessa isolle kielimallille Fine-tuning: mallille opetetaan rakenteita, kaavoja, toimintamalleja tai tyylejä joiden mukaan sen tulisi toimia. Näitä toimintatapoja voi myös yhdistää, esim semanttista hakua tai upotuksia hyödyntävää mallia voi myös fine-tunea jotain tiettyä käyttötapausta tai kohderyhmää varten. Lisäksi tietty osan jutuista mitä mä oon ratkonut fine-tuningilla voi ratkoa myös näillä muilla tavoilla, mutta niissä on omat rajoitteensa joista suurimpina on tällä hetkellä raha ja lainsäädäntö. Viimeksi kun tarkistin niin esimerkiksi GPT-4:n ja vähän vanhemman mallin hintaero saattaa olla 15-50 –kertainen. Sen lisäksi nykyisellään GPT-4 on saatavissa vaan jenkeissä, eli GDPR sun muista syistä kovin moni ei mielellään syöttäne Amerikassa sijaitseviin datakeskuksiin mitään kovin salaista. Eli senkin puolesta fine-tuningin mahdollisuudet on hyvä ymmärtää ja tiedostaa Eli nyt hypätään sitten tän esityksen pihviin eli tutkimaan tätä fine-tuningia
  5. Mä koostin hyvin lyhyen ja ylätason listan käyttötapauksista missä fine-tuningia voi hyödyntää. Tän lisäksi mä nostin näistä skenaarioista kuranttiuden ja uutisten perusteella lähempään syyniin chatbotit ja sisällön tuottamisen Eli ensimmäinen skenaario on chatbotit ja niiden hienosäätö. Ennen vanhaanhan chatbotit ohjelmoitiin tunnistamaan tekstiä joka muistutti niiden tietopankissa olevia kysymys-vastaus pareja, mutta nykyään tällaisen ison kielimallin fine-tuningilla saman voi tehdä halvemmin, nopeammin ja laadukkaammin Sitten on erilaiset luokitteluskenaariot, joita varten on tietty myös ihan omia algoritmeja ja ohjelmia, mutta fine-tuningilla voi opettaa tällaisen ison kielimallin luokittelemaan vaikkapa tekstiä, esimerkiksi vaikka asiakaspalautteita niiden sisällön mukaan ja ohjaamaan halutut reagoitavaksi Myös teksti- ja muun sisällön koostaminen yhteenvedoiksi halutulla tavalla on yks ulottuvuus missä tätä fine-tuningia voi käyttää, vaikkapa jos johto haluaa seurata jotain uutisvirtaa ja saada executive summaryn jokaisesta tapahtumasta joissa mainitaan tiettyja avainasioita Sit vähän niinkuin päinvastaisessa skenaariossa, fine-tuningilla voi myös opettaa mallin tuottamaan halutunlaista sisältöä, esim vaikkapa yrityksen brändin mukaista viestintää tai somepostauksia
  6. Jos pureudutaan tarkemmin pariin käyttötapaukseen ja aloitetaan chaboteista Kuka tahansa nykybottien kanssa operoinut on raastavan tietoinen niiden rajoitteista, mutta GPT-pohjaisella mallilla ja fine-tuningilla voidaan taklata näitä haasteita Tärkein hyöty fine-tuningista chatbottien kanssa on mun mielestä se miten fine-tuningilla voi antaa kontekstia ja parantaa sen botin vastausten relevanssia sitä kautta että se tunnistaa ja ymmärtää asiakkaan tarkoitusperiä paremmin Sitten myös poikkeustapausten eli ns odottamattomien viestien tai kysymysten käsittelyssä on hyödyksi fine-tuunata chatbotin käyttämää mallia jotta esim vältetään hallusinointia ja muuten sekavia vastauksia. Esimerkiks mallia voi fine-tuunata niin että jos joku alkaa höpöttelemään mitä sattuu ilman että se liittyy botin käyttötarkoituksiin, niin se pyrkii empaattisesti ohjaamaan käyttäjän takaisin kontekstinsa piiriin sen sijaan että se alkaa itsevarmasti antamaan vääriä vastauksia tai höpöttämään niitä näitä Ja toki paitsi että ihmiset saattaa ihan ilman pahaa tarkoitusta höpötellä botille mitä sattuu, on myös mahdollista että joku tarkoituksellisesti pyrkii saamaan vahinkoa aikaan niin sanotulla prompt hackingilla, eli sille botille koitetaan syöttää ohjeita ja käskyjä joilla saada se esimerkiksi käyttäytymään loukkaavasti tai rasistisesti tai paljastamaan jotain sen datasetistä. Joku saattaa vaikkapa muistaa ajan ennen OpenAI’ta kun vuonna 2016 Microsoft julkaisi sen Tay-nimisen Twitter-botin joka saatiin alle vuorokaudessa opetettua Donald Trumpia fanittavaksi natsiksi. Vaikka tää onkin ääriesimerkki, niin tällaistakin voi pyrkiä ennaltaehkäisemään fine-tuningilla niin että opettaa sen mallin sivuuttamaan sellaisia prompteja joilla pyritään saamaan aikaan ikävyyksiä Sit jos siirrytään vähän pehmeämpiin hyötyihin niin myös botin brändinmukaisuutta voi rakentaa fine-tuningilla, esim opettamalla sille miten se kuvailee yrityksen tuotteita tai että millaisilla fraaseilla se reagoi minkäkinlaisiin prompteihin Eli kun me lyödään nää kaikki edelliset yhteen niin tullaan siihen että saadaan aikaan asiakaspalvelukanava joka saa nimenomaan tehokkaasti ihmisten asioita hoidettua, eli tuotetaan sekä asiakashyötyä että kustannussäästöjä
  7. Sitten ihan toisenlainen esimerkki, nimittäin sisällön tuottamiseen Voin meinaan sanoa että jos sillon kun kymmenen vuotta sitten mä tein sisällöntuotantoa medioille ja firmoille niin oisin haljennut innosta siinä että mitä nykyään voi tekoälyllä tehdä Esimerkiksi uutissisällön generointi on tavannut olla hyvin toisteista grindiä jossa vaikkapa pörssitiedotteista tai muista vastaavista lähteistä poimitaan yleisöä mahdollisesti kiinnostavia nostoja ja muokataan niistä uutisjuttuja, kun nykyään taas tekoälymallille voi fine-tuningilla opettaa halutun sävyn ja opastaa sen generoimaan vetäviä uutisjuttuja aika blandeista lähteistä niinku vaikka firmojen tai julkishallinnon tiedotteista Vastaavasti myös somepostauksia pystyy tuottamaan halutulla sävyllä ja halutulle yleisölle Sit jos käännetäänkin asetelma toisin päin versus mitä puhuttiin tosta uutissisällöstä niin erinäisiä julkaisuja ja tiedotteita sun muuta “bulkkitekstiä” on hyvinkin mahollista generoida niin että fine-tuningilla opettaa mallille ne nyanssit joita sen generoidun tekstin haluaa noudattavan Näistä tuli kanssa mieleeni että me oltiin tossa joku kuukaus sitten yhden juristikaverin kanssa saunomassa ja visioitiin maailmaa että kun ennen tarvittiin juristiarmeijoita missä yhden tahon asianajajat generoi pienestä asiasta valtavia tekstimassoja ja sit vastapuolella juristiarmeija purkaa ja koittaa vastata siihen, niin nykymaailmassa kaks juristibottia voi pelata samaa lakipingistä Että tässä aletaan tulla jo sellaiseen tilanteeseen, en tiedä onko monet täällä kattonu vanhoja simpsoneita missä oli sellanen sketsi missä se juristihahmo kuvitteli maailman ilman juristeja ja näki vaan ihmisiä tanssimassa piirissä onnellisena. Mut okei, sit katotaan et mitä tää fine-tuning niinku teknisesti on
  8. Fine-tuning eli suomeksi hienosti ”mukauttaminen” tai “hienosäätö” on tapa opettaa olemassaolevaa tekoälymallia ymmärtämään jotain tiettyä erikoiskäyttötapausta tai –tapaa Ei mennä teknisiin syvädetaljeihin sen ihmeemmin, mutta käydään pari perustekijää läpi Eli nää GPT-tyyliset kielimallit on siis teknisesti hemmetin monimutkaisia ja niiden kouluttaminen voi viedä päiviä tai viikkoja ja miljoonia euroja. Fine-tuningissa hyödynnetään tällaista isoilla resursseilla valmiiksi koulutettua mallia niin että vain mallin paria päällimmäisintä koulutuskerrosta hienosäädetään ymmärtämään haluttua käyttötapausta ja toimimaan sen mukaan, ettei meidän ite tarvitse laittaa sitä fyrkkaa ja aikaa tällasen kouluttamiseen
  9. Sit niitä malleja on erilaisia, täs on Microsoftin visualisaatio näistä OpenAI:n malleista että miten ne asettuu kyvykkyys/nopeus akselilla Et jos käydään lyhyesti läpi et mitä malleja siellä on niin toki tuolla on oikeessa yläreunassa GPT-4 joka on se OpenAI:n ja ChatGPT:n kyvykkäin malli, sit siitä seuraava on toi davinci, mistä toi turboversio on se mitä myös voi ChatGPT:ssä käyttää Nykyisellään näitä davincia ja GPT-4:ää ei pysty fine-tuneemaan Mutta sitten näitä muita pystyy Niistä kyvykkäin on tää curie ja sitä mä oon eniten käyttänyt, se on nopeampi ja halvempi kuin davinci-pohjaiset mallit mutta kykenee silti esimerkiksi kielikäännöksiin, kompleksiin luokitteluun, tekstin sentimentin analysointiin ja tiivistämiseen Babbage – yksinkertaisempi malli joka sopii esim keskitason luokitteluun ja semanttisiin dokumenttihakuihin Ada – nopein malli, pystyy yksinkertaiseen luokitteluun ja tekstinkäsittelyyn, tarvitsee kontekstia
  10. Mikäs näistä kaikista malleista ois sitten syytä valita? Tähän sopii hyvin perinteinen konsulttivastaus ”no, se riippuu” Eli käytännössä mitä monimutkaisempi skenaario niin tietty sen vaativampi malli tarvitaan, mutta yhtälailla fine-tuningin ja kontekstin avulla nää ”vanhemmatkin” mallit pärjää selvästi speksattujen vaatimusten kanssa Eli käytännössä se mallin valinta on aika iteratiivista, aloitetaan ns parhaasta mallista ja sitten katsotaan kuinka simppeliin malliin voidaan mennä niin että se suoriutuu tehtävästä vielä tyydyttävästi
  11. Mites sitten kustannukset? Skaala on aika laaja ja riippuu mallista Promptit: 1000 tokenia maksaa sentin sadasosista muutamaan senttiin (sama standardi- ja fine-tuned malleilla) Koulutus: Muut kuin Davinci parikymppiä tunti, Davinci vajaa kahdeksankymppiä tunti, training-iteraation kesto riippuu datasetin koosta ja jonosta Ylläpito: Simppelein malli vajaa viisi senttiä tunti, kallein davinci vajaa kolme euroa tunti
  12. Sit jos mennään siihen konkreettiseen prosessiin että miten jonkun näistä edellä mainituista malleista saa fine-tuunattua niin se prosessi näyttää jotakuinkin tältä Ensin on se tärkein vaihe, eli itse opetusdatan koostaminen. Niinkuin me kollegan Laurin kanssa opittiin, niin jos tätä ei tee kunnolla niin ei tartte tehdä sit muutakaan. Eli käytännössä tulokset määrittyy lähes täysin sen mukaan että kuinka hyvää ja tarkoituksenmukaista se opetusdata on. Mä kerron ja näytän tossa vähän myöhemmin niistä jännittävyyksistä mitä pääs syntymään kun me tehtiin ensimmäisiä iteraatioita pienellä datamäärällä. Joka tapauksessa, tän datan pitäisi siis olla monipuolista ja sitä pitäisi olla mahdollisimman paljon, minkä lisäksi siinä on teknisiä speksejä joita mä käyn kohta läpi. Rajote Azure OpenAIssa koulutusdatalle oli 200 megaa kun viimeksi katsoin eli sinne mahtuu kyllä paljon kamaa. Sitten kun sitä opetusdataa on haluttu määrä, niin se vielä jaetaan opetus- ja validointidatasettiin joista ensimmäisellä mallia opetetaan ja toisella testataan että oppiko se niitä asioita mitä sen piti. Seuraava vaihe on sitten simppelimpi, valitaan haluttu pohjamalli jota fine-tunetaan ja sitten muodostetut datasetit vaan uploadataan Azure OpenAI:hin joko omalta koneelta tai jos on iso filu eli lähemmäs tota kahen adan megan rajaa niin Azure Blob Storagen kautta. Tän jälkeen voi vielä tarvittaessa hifistellä edistyneemmillä asetuksilla kuten epookeilla tai batchin koolla mutta niiden merkitys suhteessa datasetin kokoon ja laatuun on melko pieni ja liittyy lähinnä datasetin kokoon sovittamiseen. Sitten kun malli on valittu ja data upattu alkaa mallin kouluttaminen ja julkaiseminen. Itse koulutus vie muutamista minuuteista kymmeniin minuutteihin riippuen datasetin koosta ja sen hetkisestä jonosta, meillä se jono taisi pahimmillaan olla puolen tunnin luokkaa. Joka tapauksessa sitten kun malli on koulutettu voi koulutuksen tuloksia ja tilastoja tarkastella OpenAI Studiossa ja jos niihin on tyytyväinen, voi mallin julkaista jossa sitten menee toinen puolesta pariin tuntia. Kun malli on julkaistu, voi sitä testata ja käyttää sekä Azure OpenAI Studion että rajapinnan kautta ja sitä kautta arvioida sitten mallin tuottamaa tekstiä. Mutta entäs miltä se opetusdata sit konkreettisesti näyttää?
  13. Tässä on GPT-4 generoituja esimerkkejä joita mä ja Lauri käytettiin kun me testailtiin erilaisia datasettejä fine-tuningia varten. Vaikka teksti itsessään on generoitua höpöhöpöä, tästä näkee hyvin sen yleisen rakenteen joka opetusdatalla on ja ne nyanssit joihin fine-tuning perustuu Eli jos pureudutaan tähän tarkemmin niin on kolme teknistä tekijää jotka opetusdatassa merkkaa Ensinnäkin se on siis JSON lines muotoista, eli yks JSON-rivi per esimerkki Sit toisekseen se data koostuu input-output tyylisistä pareista missä jokaiseen esimerkkiin kuuluu teksti jonka malli vastaanottaa ja sitten esimerkki että miten sen sellaiseen pitäisi vastata Sit se formaatti on melko lailla tarkka ja siinä on jonkun verran viilaamista kun hakee niitä paikalleen, eli millä mallille tekee selväksi että missä input tai output loppuu tai alkaa ja näin poispäin Ton formaatin hiomiseen on myös OpenAI:n aputyökalu jolle voi syöttää erimuotoista dataa ja antaa sulle palautetta ja ehdotuksia siitä datasta ja halutessa muokkaa esim csv- ja xml- muotoista dataa JSON linesiksi
  14. No niin, nyt kun meillä on täydellinen teoreettinen ymmärrys ja paljon lupauksia ja haippia fine-tuningista sekä teknisesti että bisnesmielessä mä voinkin vähän tarinoida että miten tää homma on tähän asti oikeasti mennyt Eli me lähdettiin kollegan Laurin kanssa tutkimaan että mihin tää fine-tuning pystyy ja otettiin vertailun vuoks saman tyylinen skenaario minkä Lauri oli jo toteuttanut asiakkaalle aiemmin, eli sellanen missä etsitään matchia henkilön ja tehtävän välillä. Me nimettiin tää projekti luovasti bestdev.io:ks joka sit vääntyi vielä DALL-E generoidun logon kautta projekti bstdediks Meidän prosessi oli hyvin iteratiivinen ja niin sanotusti ketterä, eli me kokeiltiin erilaisia asioita ja katottiin että mitä siitä seuras
  15. Me lähdettiin ensin ihan mielenkiinnosta kokeilemaan kymmenen rivin opetusdatasetillä että saako tää curie-malli kiinni siitä ajatuksesta mitä me haettiin takaa, ja todettiin aika nopeasti että… ei. Vastaukset mitä fine-tuunattu malli tuotti oli aivan horinaa, vaikka avainsanat oli oikein niin se lähti kysymyksistä tällasille jännille matkoille että se alkoi keskustelemaan itsensä kanssa tai sitten jäi jumiin johonkin sanaan, ellei tietty se vaan todella halunnut saada viestiä perille että nyt käytetään sit DevOps serveriä Mutta joo, vaikka huumoriarvo oli tietty korkea näissä horinoissa niin me kuitenkin haluttiin tutkia lisää että miten mallin saisi opetettua vain vastaamaan annettuun kysymykseen ja myös tuottamaan luonnollisempaa tekstiä Näiden ensimmäisten ja opettavaisten kokeilujen jälkeen me palattiin takaisin piirustuspöydän ääreen funtsimaan että miten edellä mainituista tendensseistä pääsisi eroon ja muutenkin miten mallin suorityskykyä voisi parantaa
  16. Ensimmäinen askel oli laittaa sen datan tekniset speksit kondikseen käyttämällä OpenAI:n tarjoomaa rajapintaa jossa pystyy validoimaan ja saamaan parannusehdotuksia koulutusdatalleen, suosittelen käyttämään jos päädytte joskus fine-tuningia tekemään. Sitten tietty me generoitiin lisää esimerkkidataa ja myös laajennettiin niitä kieliopillisesti ja sisällöllisesti jotta sillä mallilla oli enemmän esimerkkejä mistä oppia erilaisia tapoja kysyä ja vastata. Sen lisäksi me kokeiltiin syöttää niin sanottua “seed-dataa” eli me annettiin ensimmäisessä opetusdatan esimerkissä selkokielisenä listana devaajat ja heidän tekkistäkkinsä, vähän samaan malliin kuin few-shot learningissa tehtäisiin. Sen lisäks me myös tehtiin pari iteraatiokierrosta missä me hienosäädettiin sekä koulutuksen hyperparametreja että ihan mallin päättelyn eli inferenssin parametreja, esimerkiksi että kuinka deterministisiä tai luovia vastauksia se malli generoi
  17. Näillä toimenpiteillä alkoi jo näyttää aika hyvältä, vaikka tää meidän käyttämä curie ei oo millään tapaa kärkeä näissä isoissa kielimalleissa niin tulokset parani huomattavasti, firman sisäinen testaus osoitti että malli kykeni sekä vastailemaan höpöttelyyn alkamatta horisemaan sekavia ja jäämättä jumiin omiin keskusteluihinsa tai avainsanoihin että vastaamaan kysymyksiin joihin löytyi vastaus meidän seed-datasta. Nythän me oltiin jo aika tyytyväisiä ja todettiin että tämähän varmaan vielä paranee tästä kun lisätään lisää samantyylistä opetusdataa, mut sitten tulikin yllätys vastaan
  18. Kun me oltiin lisätty ehkä kaksinkertainen määrä eli jostain parista sadasta esimerkistä neljäänsataan, eli edelleen todella marginaalinen määrä suhteessa kokonaiskapasiteettiin niin me huomattiin että malli hurahti taas aivan täysin. Se vähän niinkuin unohti kaiken yleisen kyvyn keskustella tai ymmärtää tekstiä ja selitti vaan samoja lauseita Timo Timosesta ja Bob Bobssonista. No, lopulta me päädyttiin siihen että vaikka tää fine-tuning datan määrä on yks pieni hippunen sen mallin kokonaisdatan määrään verraten, tää malli on silti altis katastrofaaliselle unohtamiselle. Se siis meinaa että liian ykspuolinen koulutusdata keikauttaa ne mallin sisäiset painotukset vinksalleen ja se malli menettää kaiken yleisen kyvykkyytensä. Me pähkittiin tätä hetki kunnes me keksittiin että ehkäpä sitä fine-tuning prosessia vois huijata sisällyttämällä sinne koulutusdataan myös ns täysin generalistista dataa? Tähän tarkotukseen me otettiin databricksin dolly-datasetistä
  19. Tähän tarkotukseen me otettiin databricksin open source dolly-datasetistä otanta täysin satunnaista opetusdataa jolla me tasapainotettiin meidän devien ja projektien matchausdatasettiä about 50-50 suhteessa. Ajatuksena oli siis että tää satunnaisdata tasapainottaa sitä fine-tuning prosessia niin jottei se malli ylioppis fokusoitumaan vaan yhteen pieneen kulmaan siitä. Mä voin tästä nyt vielä näyttää et mihin jamaan tää malli nyt tän matkan päätteeks toistaseks päätyi
  20. Eli loppuviimeks jos kerrataan että mitä me ollaan nyt tässä käsitelty, niin me ollaan mietitty paitsi että mitä fine-tuning on ja että mihin sitä voi käyttää niin me ollaan nyt käyty läpi että mitä fine-tuningista on tähän asti opittu