Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services

I dagens raskt utviklende landskap av kunstig intelligens, har dyplæringsmodeller befunnet seg i forkant av innovasjon, med applikasjoner som spenner over datasyn (CV), naturlig språkbehandling (NLP) og anbefalingssystemer. De økende kostnadene knyttet til opplæring og finjustering av disse modellene utgjør imidlertid en utfordring for bedrifter. Denne kostnaden er først og fremst drevet av det store datavolumet som brukes til å trene dyplæringsmodeller. I dag trenes store modeller ofte på terabyte med data og kan ta uker å trene, selv med kraftig GPU eller AWS Trainium-basert maskinvare. Vanligvis stoler kunder på teknikker og optimaliseringer som forbedrer effektiviteten til en modells treningsløkke, for eksempel optimaliserte kjerner eller lag, blandet presisjonstrening eller funksjoner som f.eks. Amazon SageMaker distribuerte opplæringsbibliotek. Det er imidlertid mindre fokus i dag på effektiviteten til selve treningsdataene. Ikke alle data bidrar like mye til læringsprosessen under modelltrening: en betydelig andel av beregningsressursene kan brukes på å behandle enkle eksempler som ikke bidrar vesentlig til modellens generelle nøyaktighet.

Kunder har tradisjonelt sett på forbehandlingsteknikker som oppsampling eller nedsampling og deduplisering for å avgrense og forbedre informasjonskvaliteten til dataene deres. Disse teknikkene kan hjelpe, men er ofte tidkrevende, krever spesialisert datavitenskapelig erfaring, og kan noen ganger være mer kunst enn vitenskap. Kunder er ofte også avhengige av kuraterte datasett, som f.eks RefinedWeb, for å forbedre ytelsen til modellene deres; disse datasettene er imidlertid ikke alltid fullstendig åpen kildekode og er ofte mer generelle formål og ikke relatert til din spesifikke brukssituasjon.

Hvordan kan du ellers overvinne denne ineffektiviteten knyttet til dataprøver med lite informasjon under modelltrening?

Vi er glade for å kunngjøre en offentlig forhåndsvisning av smart sikting, en ny funksjon i SageMaker som kan redusere kostnadene ved å trene dyplæringsmodeller med opptil 35 %. Smart sikting er en ny dataeffektivitetsteknikk som aktivt analyserer dataprøvene dine under trening og filtrerer ut prøvene som er mindre informative for modellen. Ved å trene på et mindre delsett av data med bare prøvene som bidrar mest til modellkonvergens, reduseres total trening og kostnad med minimal eller ingen innvirkning på nøyaktigheten. I tillegg, fordi funksjonen fungerer online under modelltrening, krever ikke smart sikting endringer i oppstrømsdata eller nedstrøms treningspipeline.

I dette innlegget diskuterer vi følgende emner:

  • Den nye smarte siktefunksjonen i SageMaker og hvordan den fungerer
  • Hvordan bruke smart sikting med PyTorch treningsarbeidsmengder

Du kan også sjekke ut vår dokumentasjon og eksempel på notatbøker for ytterligere ressurser om hvordan du kommer i gang med smart sikting.

Slik fungerer SageMaker smart sikting

Vi begynner dette innlegget med en oversikt over hvordan den smarte siktingsevnen kan akselerere modelltreningen din på SageMaker.

Smart siftings oppgave er å sile gjennom treningsdataene dine under treningsprosessen og bare mate de mer informative prøvene til modellen. Under en typisk trening med PyTorch blir data iterativt sendt i batcher til treningssløyfen og til akseleratorenheter (for eksempel GPUer eller Trainium-brikker) av PyTorch DataLoader. Smart sikting er implementert i dette datainnlastingsstadiet og er derfor uavhengig av eventuell oppstrøms dataforbehandling i treningspipeline.

Smart sikting bruker modellen din og en brukerspesifisert tapsfunksjon for å gjøre en evaluerende videresending av hver dataprøve etter hvert som den lastes inn. Prøver som har høye tap vil ha vesentlig innvirkning på modelltrening og brukes derfor i trening; dataprøver som har relativt lite tap blir satt til side og ekskludert fra trening.

Et viktig input til smart sikting er andelen data som skal ekskluderes: for eksempel ved å sette andelen til 33 % (beta_value=0.5), vil prøver i omtrent den nederste tredjedelen av tapet av hver batch bli ekskludert fra trening. Når nok prøver med høyt tap er identifisert til å fullføre en batch, sendes dataene gjennom hele treningssløyfen og modellen lærer og trener normalt. Du trenger ikke gjøre noen endringer i treningsløkken når smart sikting er aktivert.

Følgende diagram illustrerer denne arbeidsflyten.

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Ved å inkludere bare et delsett av treningsdataene dine, reduserer smart sikting tiden og beregningen som trengs for å trene modellen. I testene våre oppnådde vi opptil 40 % reduksjon i total treningstid og kostnad. Med smart sikting av data kan det være minimal eller ingen innvirkning på modellnøyaktigheten fordi de ekskluderte prøvene var relativt lave tap for modellen. I tabellen nedenfor inkluderer vi et sett med eksperimentelle resultater som viser ytelsesforbedringen som er mulig med SageMaker smart sikting.

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

I tabellen angir % Akseptert-kolonnen andelen data som er inkludert og brukt i treningssløyfen. Å øke denne justerbare parameteren reduserer kostnadene (som vist i kolonnen IMR Savings %), men det kan også påvirke nøyaktigheten. Den riktige innstillingen for % akseptert er en funksjon av datasettet og modellen. du bør eksperimentere med og justere denne parameteren for å oppnå den beste balansen mellom reduserte kostnader og innvirkning på nøyaktighet.

Løsningsoversikt

I de følgende delene går vi gjennom et praktisk eksempel på å aktivere smart sikting med en PyTorch-treningsjobb på SageMaker. Hvis du vil komme raskt i gang, kan du hoppe til PyTorch eller PyTorch Lightning eksempler.

Forutsetninger

Vi antar at du allerede vet hvordan du trener en modell ved å bruke PyTorch eller PyTorch Lightning ved å bruke SageMaker Python SDK og Estimator-klassen ved å bruke SageMaker Deep Learning Containers for trening. Hvis ikke, se Bruker SageMaker Python SDK før du fortsetter.

Kom i gang med SageMaker smart sikting

I en typisk PyTorch-treningsjobb initialiserer du PyTorch-treningen DataLoader med datasettet ditt og andre nødvendige parametere, som gir input-batcher etter hvert som opplæringen skrider frem. For å aktivere smart sikting av treningsdataene dine, bruker du en ny DataLoader klasse: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Denne klassen brukes som en innpakning på toppen av din eksisterende PyTorch DataLoader og opplæringsprosessen vil i stedet bruke SiftingDataloader for å få input batcher. De SiftingDataLoader henter input-batchen fra din originale PyTorch DataLoader, evaluerer viktigheten av prøver i batchen, og konstruerer en siktet batch med prøver med høyt tap, som deretter sendes til treningstrinnet. Innpakningen ser ut som følgende kode:

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
)

De SiftingDataloader krever noen ekstra parametere for å analysere treningsdataene dine, som du kan spesifisere via sift_config parameter. Lag først en smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig gjenstand. Dette objektet har det konfigurerbare og nødvendige beta_value og loss_history_length, som henholdsvis definerer andelen prøver som skal beholdes og vinduet med prøver som skal inkluderes ved evaluering av relativt tap. Merk at fordi smart sikting bruker modellen din for å definere viktigheten av prøven, kan det være negative implikasjoner hvis vi bruker en modell med helt tilfeldige vekter. I stedet kan du bruke loss_based_sift_config og en sift_delay å forsinke sikteprosessen til parametervektene i modellen er oppdatert utover tilfeldige verdier. (For mer informasjon, se Bruk smart sikting på treningsskriptet ditt.) I følgende kode definerer vi sift_config og spesifiser beta_value og loss_history_length, samt forsinke starten av sikting ved hjelp av 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) )
)

Deretter må du også inkludere en loss_impl parameter i SiftingDataloader gjenstand. Smart sikting fungerer på individuelt prøvenivå, og det er avgjørende å ha tilgang til en tapsberegningsmetode for å bestemme viktigheten av prøven. Du må implementere en siktetapsmetode som returnerer en nx1-tensor, som inneholder tapsverdier på n prøver. Vanligvis spesifiserer du samme tapsmetode som brukes av din model under trening. Til slutt inkluderer du en peker til modellen din i SiftingDataloader objekt, som brukes til å evaluere prøver før de inkluderes i opplæring. Se følgende kode:

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
)

Følgende kode viser et komplett eksempel på å aktivere smart sikting med en eksisterende BERT-treningsjobb:

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.

konklusjonen

I dette innlegget utforsket vi den offentlige forhåndsvisningen av smart sikting, en ny funksjon i SageMaker som kan redusere treningskostnadene for dyplæringsmodeller med opptil 35 %. Denne funksjonen forbedrer dataeffektiviteten under trening som filtrerer ut mindre informative dataeksempler. Ved å inkludere bare de mest virkningsfulle dataene for modellkonvergens, kan du redusere treningstid og utgifter betraktelig, samtidig som nøyaktigheten opprettholdes. Dessuten integreres den sømløst i eksisterende prosesser uten å kreve endringer i data eller opplæringspipeline.

For å dykke dypere inn i SageMaker smart sikting, utforske hvordan det fungerer og implementere det med PyTorch treningsarbeidsmengder, sjekk ut vår dokumentasjon og eksempel på notatbøker og kom i gang med denne nye muligheten.


Om forfatterne

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Robert Van Dusen er senior produktsjef hos Amazon SageMaker. Han leder rammeverk, kompilatorer og optimaliseringsteknikker for dyp læringstrening.

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.K Lokesh Kumar Reddy er senioringeniør i Amazon Applied AI-teamet. Han er fokusert på effektive ML-treningsteknikker og å bygge verktøy for å forbedre AI-systemer for samtale. På fritiden liker han å oppsøke nye kulturer, nye opplevelser og holde seg oppdatert med de nyeste teknologitrendene.

Akselerer modelltrening for dyp læring med opptil 35 % med Amazon SageMaker smart sikting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Abhishek Dan er senior Dev Manager i Amazon Applied AI-teamet og jobber med maskinlæring og AI-systemer for samtale. Han er lidenskapelig opptatt av AI-teknologier og jobber i skjæringspunktet mellom vitenskap og ingeniørvitenskap for å fremme evnene til AI-systemer for å skape mer intuitive og sømløse interaksjoner mellom mennesker og datamaskiner. Han bygger for tiden applikasjoner på store språkmodeller for å drive effektivitet og CX-forbedringer for Amazon.

Tidstempel:

Mer fra AWS maskinlæring