Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services

Nykypäivän nopeasti kehittyvässä tekoälyn maisemassa syväoppimismallit ovat löytäneet olevansa innovaatioiden eturintamassa, ja sovellukset kattavat tietokonenäön (CV), luonnollisen kielen käsittelyn (NLP) ja suositusjärjestelmät. Koulutukseen ja mallien hienosäätöön liittyvät kustannusten nousut asettavat kuitenkin haasteen yrityksille. Tämä kustannus johtuu ensisijaisesti syvän oppimismallien koulutuksessa käytetyn datan valtavasta määrästä. Nykyään suuret mallit koulutetaan usein teratavuilla datalla, ja niiden harjoittelu voi kestää viikkoja, jopa tehokkaalla grafiikkasuorittimella tai AWS Trainium-pohjainen laitteisto. Tyypillisesti asiakkaat luottavat tekniikoihin ja optimointiin, jotka parantavat mallin harjoitussilmukan tehokkuutta, kuten optimoidut ytimet tai kerrokset, sekoitettu tarkkuuskoulutus tai ominaisuuksia, kuten Amazon Sage Maker hajautetut koulutuskirjastot. Itse harjoitustietojen tehokkuuteen kiinnitetään kuitenkin nykyään vähemmän huomiota. Kaikki tiedot eivät vaikuta tasaisesti oppimisprosessiin mallin koulutuksen aikana: huomattava osa laskennallisista resursseista voidaan käyttää yksinkertaisten esimerkkien käsittelyyn, jotka eivät vaikuta olennaisesti mallin kokonaistarkkuuteen.

Asiakkaat ovat perinteisesti luottaneet esikäsittelytekniikoihin, kuten ylös- tai alasnäytteenottoon ja duplikoinnin poistamiseen, tarkentamaan ja parantamaan tietojensa tiedon laatua. Nämä tekniikat voivat auttaa, mutta ovat usein aikaa vieviä, vaativat erikoistunutta datatieteen kokemusta ja voivat joskus olla enemmän taidetta kuin tiedettä. Asiakkaat luottavat usein myös kuratoituihin tietokokonaisuuksiin, kuten RefinedWeb, parantaakseen malliensa suorituskykyä; Nämä tietojoukot eivät kuitenkaan aina ole täysin avoimen lähdekoodin lähdekoodia, ja ne ovat usein yleisempiä eivätkä liity sinun käyttötapauksiisi.

Kuinka muuten voit voittaa tämän tehottomuuden, joka liittyy vähän tietoa sisältäviin tietonäytteisiin mallikoulutuksen aikana?

Olemme iloisia voidessamme ilmoittaa julkisen esikatselun älykkäästä seulonnasta, SageMakerin uudesta ominaisuudesta, joka voi alentaa syväoppimismallien koulutuskustannuksia jopa 35 %. Älykäs seulonta on uusi tietojen tehokkuustekniikka, joka analysoi datanäytteesi aktiivisesti harjoittelun aikana ja suodattaa pois mallin kannalta vähemmän informatiiviset näytteet. Harjoittelemalla pienempää datan osajoukkoa käyttäen vain näytteitä, jotka vaikuttavat eniten mallin konvergenssiin, koulutus ja kustannukset pienenevät, mutta tarkkuuteen vaikuttavat vain vähän tai ei ollenkaan. Lisäksi, koska ominaisuus toimii verkossa malliharjoittelun aikana, älykäs seulonta ei vaadi muutoksia ylävirran tietoihin tai loppupään koulutusputkiin.

Tässä viestissä keskustelemme seuraavista aiheista:

  • SageMakerin uusi älykäs seulontaominaisuus ja sen toiminta
  • Kuinka käyttää älykästä seulontaa PyTorchin harjoituskuormien kanssa

Voit myös tarkistaa meidän dokumentointi ja näytekannettavat saadaksesi lisäresursseja älykkään seulonnan aloittamiseen.

Kuinka SageMakerin älykäs seulonta toimii

Aloitamme tämän viestin yleiskatsauksella siitä, kuinka älykäs seulontaominaisuus voi nopeuttaa malliharjoitteluasi SageMakerissa.

Smart Siftingin tehtävänä on seuloa harjoitustietosi läpi harjoitusprosessin aikana ja syöttää malliin vain informatiivisemmat näytteet. Tyypillisessä PyTorch-harjoituksessa data lähetetään iteratiivisesti erissä harjoitussilmukkaan ja kiihdytinlaitteisiin (esim. GPU:t tai Trainium-sirut). PyTorch DataLoader. Älykäs seulonta toteutetaan tässä tiedonlatausvaiheessa, ja siksi se on riippumaton koulutusputken ylävirran tietojen esikäsittelystä.

Älykäs seulonta käyttää malliasi ja käyttäjän määrittämää häviötoimintoa arvioivan eteenpäin kuljetuksen jokaiselle datanäytteelle sitä ladattaessa. Suurihäviöiset näytteet vaikuttavat olennaisesti mallikoulutukseen, ja siksi niitä käytetään koulutuksessa; datanäytteet, jotka ovat suhteellisen vähähäviöisiä, jätetään sivuun ja suljetaan pois koulutuksesta.

Älykkään seulonnan avainsyöte on poissuljettavien tietojen osuus: esimerkiksi asettamalla suhteeksi 33 % (beta_arvo = 0.5), kunkin erän häviön alimmassa kolmanneksessa olevat näytteet jätetään koulutuksen ulkopuolelle. Kun on tunnistettu tarpeeksi suurihäviöisiä näytteitä erän täydentämiseksi, tiedot lähetetään täyden harjoitussilmukan läpi ja malli oppii ja harjoittelee normaalisti. Sinun ei tarvitse tehdä muutoksia harjoitussilmukkaan, kun älykäs seulonta on käytössä.

Seuraava kaavio kuvaa tätä työnkulkua.

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Sisällyttämällä vain osan harjoitustiedoistasi älykäs seulonta vähentää mallin harjoittamiseen tarvittavaa aikaa ja laskentaa. Testeissämme saavutimme lähes 40 % vähennyksen kokonaisharjoitteluajassa ja -kustannuksissa. Tietojen älykkäällä seulonnalla voi olla vain vähän tai ei ollenkaan vaikutusta mallin tarkkuuteen, koska pois jätetyt näytteet olivat mallille suhteellisen vähäisiä. Seuraavassa taulukossa on joukko kokeellisia tuloksia, jotka osoittavat suorituskyvyn parantamisen, joka on mahdollista SageMakerin älykkäällä seulonnalla.

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Taulukon % Hyväksytty -sarake ilmoittaa harjoitussilmukassa käytetyn datan osuuden. Tämän säädettävän parametrin suurentaminen pienentää kustannuksia (kuten IMR Savings % -sarakkeessa näkyy), mutta se voi myös vaikuttaa tarkkuuteen. Sopiva % Hyväksytty -asetus on tietojoukosi ja mallisi funktio. sinun tulee kokeilla ja säätää tätä parametria parhaan tasapainon pienentämisen ja tarkkuuden välillä.

Ratkaisun yleiskatsaus

Seuraavissa osioissa käymme läpi käytännön esimerkin älykkään seulonnan mahdollistamisesta PyTorch-harjoitustyöllä SageMakerissa. Jos haluat aloittaa nopeasti, voit siirtyä kohtaan PyTorch tai PyTorch Lightning esimerkkejä.

Edellytykset

Oletamme, että osaat jo kouluttaa mallia PyTorchin tai PyTorch Lightningin avulla käyttämällä SageMaker Python SDK:ta ja Estimator-luokkaa käyttämällä SageMaker Deep Learning Containers -säilöjä koulutukseen. Jos ei, katso SageMaker Python SDK:n käyttäminen ennen kuin jatkat.

Aloita SageMakerin älykäs seulonta

Tyypillisessä PyTorch-koulutustyössä aloitat PyTorch-koulutuksen DataLoader tietojoukollasi ja muilla vaadituilla parametreilla, jotka tarjoavat syöttöerät koulutuksen edetessä. Ota harjoitustietojesi älykäs seulonta käyttöön käyttämällä uutta DataLoader luokka: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Tätä luokkaa käytetään kääreenä olemassa olevan PyTorchin päällä DataLoader ja koulutusprosessi sen sijaan käyttää SiftingDataloader syöttöerien saamiseksi. The SiftingDataLoader saa syöttöerän alkuperäisestä PyTorchista DataLoader, arvioi näytteiden tärkeyden erässä ja muodostaa seulotun erän suurihäviöisistä näytteistä, jotka siirretään sitten opetusvaiheeseen. Kääre näyttää seuraavalta koodilta:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

- SiftingDataloader vaatii joitain lisäparametreja harjoitustietojen analysoimiseksi, jotka voit määrittää käyttämällä sift_config parametri. Luo ensin a smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig esine. Tämä objekti sisältää määritettävän ja vaaditun beta_value ja loss_history_length, jotka määrittävät säilytettävien näytteiden osuuden ja suhteellista häviötä arvioitaessa huomioon otettavien näytteiden ikkunan. Huomaa, että koska älykäs seulonta käyttää malliasi näytteen tärkeyden määrittämiseen, sillä voi olla negatiivisia seurauksia, jos käytämme mallia, jolla on täysin satunnaiset painot. Sen sijaan voit käyttää loss_based_sift_config ja sift_delay viivästyttää seulontaprosessia, kunnes mallin parametrien painot päivitetään satunnaisten arvojen yli. (Jos haluat lisätietoja, katso Käytä älykästä seulontaa harjoitusohjelmassasi.) Seuraavassa koodissa määrittelemme sift_config ja täsmentää beta_value ja loss_history_length, sekä viivyttää käytön aloittamista loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

Seuraavaksi sinun on sisällytettävä myös a loss_impl parametrissa SiftingDataloader esine. Älykäs seulonta toimii yksittäisten näytteiden tasolla, ja on tärkeää, että sinulla on pääsy hävikkilaskentamenetelmään näytteen tärkeyden määrittämiseksi. Sinun on otettava käyttöön seulontahäviömenetelmä, joka palauttaa nx1-tensorin, joka sisältää n näytteen häviöarvot. Yleensä määrität saman menetystavan, jota käytät model harjoittelun aikana. Lisää lopuksi osoitin malliisi SiftingDataloader objekti, jota käytetään näytteiden arvioimiseen ennen niiden sisällyttämistä koulutukseen. Katso seuraava koodi:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

Seuraava koodi näyttää täydellisen esimerkin älykkään seulonnan käyttöönotosta olemassa olevassa BERT-koulutustyössä:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

Yhteenveto

Tässä viestissä tutkimme julkista esikatselua älykkäästä seulonnasta, SageMakerin uudesta ominaisuudesta, joka voi vähentää syvän oppimismallin koulutuskustannuksia jopa 35 %. Tämä ominaisuus parantaa tietojen tehokkuutta harjoituksen aikana, mikä suodattaa vähemmän informatiiviset tietonäytteet. Sisällyttämällä vain tehokkaimmat tiedot mallien konvergenssiin, voit vähentää merkittävästi harjoitusaikaa ja -kustannuksia samalla, kun säilytät tarkkuuden. Lisäksi se integroituu saumattomasti olemassa oleviin prosesseihisi ilman, että sinun tarvitsee tehdä muutoksia tietoihisi tai koulutusputkistoon.

Sukeltaaksesi syvemmälle SageMakerin älykkääseen seulomiseen, tutkiaksesi sen toimintaa ja toteuttaaksesi sen PyTorch-koulutuskuormilla, tutustu dokumentointi ja näytekannettavat ja aloita tämän uuden ominaisuuden käyttäminen.


Tietoja kirjoittajista

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Robert Van Dusen on vanhempi tuotepäällikkö Amazon SageMakerissa. Hän johtaa puitteita, kääntäjiä ja optimointitekniikoita syväoppimisen koulutukseen.

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.K Lokesh Kumar Reddy on vanhempi insinööri Amazon Applied AI -tiimissä. Hän keskittyy tehokkaisiin ML-harjoittelutekniikoihin ja työkalujen rakentamiseen keskustelun tekoälyjärjestelmien parantamiseksi. Vapaa-ajallaan hän etsii uusia kulttuureja, uusia kokemuksia ja pysyy ajan tasalla viimeisimmistä teknologiatrendeistä.

Nopeuta syväoppimismallien koulutusta jopa 35 % Amazon SageMakerin älykkäällä seulonnalla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Abhishek Dan on vanhempi kehittäjäpäällikkö Amazon Applied AI -tiimissä ja työskentelee koneoppimisen ja keskustelun tekoälyjärjestelmien parissa. Hän on intohimoinen tekoälyteknologioihin ja työskentelee tieteen ja tekniikan risteyksessä edistääkseen tekoälyjärjestelmien kykyjä luoda intuitiivisempia ja saumattomampia ihmisen ja tietokoneen välisiä vuorovaikutuksia. Hän rakentaa parhaillaan sovelluksia suurille kielimalleille tehostaakseen Amazonin CX-parannuksia.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen