Gyorsítsa fel akár 35%-kal a mélytanulási modell képzését az Amazon SageMaker intelligens szitálással | Amazon webszolgáltatások

Gyorsítsa fel akár 35%-kal a mélytanulási modell képzését az Amazon SageMaker intelligens szitálással | Amazon webszolgáltatások

A mesterséges intelligencia napjainkban gyorsan fejlődő világában a mély tanulási modellek az innováció élvonalában találták magukat, a számítógépes látást (CV), a természetes nyelvi feldolgozást (NLP) és az ajánlórendszereket felölelő alkalmazásokkal. A modellek képzésével és finomhangolásával kapcsolatos növekvő költségek azonban kihívást jelentenek a vállalkozások számára. Ezt a költséget elsősorban a mély tanulási modellek képzéséhez felhasznált adatok puszta mennyisége okozza. Manapság a nagy modelleket gyakran terabájtnyi adatra oktatják, és hetekig tarthat a betanítás, még erős GPU-val vagy AWS Trainium-alapú hardver. Az ügyfelek jellemzően olyan technikákra és optimalizálásokra hagyatkoznak, amelyek javítják a modell betanítási ciklusának hatékonyságát, például optimalizált kernelekre vagy rétegekre, vegyes precíziós képzésre vagy olyan szolgáltatásokra, mint pl. Amazon SageMaker elosztott oktatókönyvtárak. Azonban ma már kevésbé összpontosítanak magának a képzési adatoknak a hatékonyságára. A modellképzés során nem minden adat járul hozzá egyformán a tanulási folyamathoz: előfordulhat, hogy a számítási erőforrások jelentős részét olyan egyszerű példák feldolgozására fordítják, amelyek nem járulnak hozzá lényegesen a modell általános pontosságához.

Az ügyfelek hagyományosan olyan előfeldolgozási technikákra támaszkodnak, mint a fel- vagy lemintavétel és a deduplikáció, hogy finomítsák és javítsák adataik információminőségét. Ezek a technikák segíthetnek, de gyakran időigényesek, speciális adattudományi tapasztalatot igényelnek, és néha inkább művészet, mint tudomány. Az ügyfelek gyakran a kurált adatkészletekre is támaszkodnak, mint pl RefinedWeb, hogy javítsák modelljeik teljesítményét; ezek az adatkészletek azonban nem mindig teljesen nyílt forráskódúak, és gyakran általánosabb célt szolgálnak, és nem kapcsolódnak az Ön konkrét használati esetéhez.

Hogyan lehet másként leküzdeni ezt az alacsony információs adatmintákhoz kapcsolódó eredménytelenséget a modellképzés során?

Örömmel jelentjük be az intelligens szitálás nyilvános előzetesét, a SageMaker új képességét, amely akár 35%-kal csökkentheti a mélytanulási modellek képzésének költségeit. Az intelligens szitálás egy új adathatékonysági technika, amely aktívan elemzi az adatmintákat a képzés során, és kiszűri azokat a mintákat, amelyek kevésbé informatívak a modell számára. Ha az adatok egy kisebb részhalmazára oktatunk, csak a modellkonvergenciához leginkább hozzájáruló mintákkal, a teljes betanítás és a költség csökken, minimális vagy semmilyen hatással a pontosságra. Ezen túlmenően, mivel a funkció online működik a modellképzés során, az intelligens szitálás nem igényel változtatásokat az upstream adatokon vagy a későbbi képzési folyamatokon.

Ebben a bejegyzésben a következő témákat tárgyaljuk:

  • A SageMaker új intelligens szitálási képessége és működése
  • Az intelligens szitálás használata PyTorch képzési terhelésekkel

Azt is megnézheted dokumentáció és a mintafüzetek további forrásokért az intelligens szitálás megkezdéséhez.

Hogyan működik a SageMaker intelligens szitálás

Ezt a bejegyzést annak áttekintésével kezdjük, hogy az intelligens szitálási képesség hogyan gyorsíthatja fel a modellképzést a SageMakeren.

Az intelligens szitálás feladata, hogy a betanítási folyamat során átszitálja a betanítási adatokat, és csak az informatívabb mintákat táplálja be a modellbe. A PyTorch-al végzett tipikus edzés során az adatokat a rendszer iteratív módon, kötegekben küldi el a képzési hurokba és a gyorsítóeszközökbe (például GPU-k vagy Trainium chipek) PyTorch DataLoader. Az intelligens rostálást ebben az adatbetöltési szakaszban valósítják meg, és ezért független a betanítási folyamatban zajló upstream adat-előfeldolgozástól.

Az intelligens szitálás az Ön modelljét és a felhasználó által megadott veszteségfüggvényt használja az egyes adatminták kiértékelő előrehaladására a betöltéskor. A nagy veszteségű minták lényegesen befolyásolják a modellképzést, ezért a képzésben használják őket; a viszonylag alacsony veszteségű adatmintákat félretesszük és kizárjuk a képzésből.

Az intelligens szitálás kulcsfontosságú eleme a kizárandó adatok aránya: például ha az arányt 33%-ra állítja be (béta_value=0.5), az egyes kötegek veszteségének körülbelül az alsó harmadában lévő minták ki lesznek zárva a képzésből. Ha elegendő nagy veszteségű mintát azonosítottunk egy köteg befejezéséhez, az adatok a teljes betanítási hurkon keresztül kerülnek elküldésre, és a modell normálisan tanul és oktat. Ha az intelligens rostálás engedélyezve van, nem kell módosítania az edzési hurkot.

A következő diagram ezt a munkafolyamatot mutatja be.

Accelerate deep learning model training up to 35% with Amazon SageMaker smart sifting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Azáltal, hogy a betanítási adatoknak csak egy részhalmazát tartalmazza, az intelligens szitálás csökkenti a modell betanításához szükséges időt és számítási időt. Tesztjeink során közel 40%-kal csökkentettük a teljes edzésidőt és költséget. Az adatok intelligens szitálása minimális vagy semmilyen hatással lehet a modell pontosságára, mivel a kizárt minták viszonylag alacsony veszteséggel jártak a modell számára. A következő táblázatban egy sor kísérleti eredményt mutatunk be, amelyek bemutatják a SageMaker intelligens szitálással lehetséges teljesítményjavulást.

Accelerate deep learning model training up to 35% with Amazon SageMaker smart sifting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A táblázatban az Elfogadott százalék oszlop a képzési ciklusban szereplő és felhasznált adatok arányát jelzi. Ennek a hangolható paraméternek a növelése csökkenti a költségeket (ahogyan az IMR megtakarítás % oszlopban látható), de a pontosságot is befolyásolhatja. A % Accepted megfelelő beállítása az adatkészlettől és a modelltől függ; kísérletezni kell ezzel a paraméterrel, és be kell hangolnia, hogy a legjobb egyensúlyt érje el a csökkentett költségek és a pontosságra gyakorolt ​​hatás között.

Megoldás áttekintése

A következő szakaszokban egy gyakorlati példát mutatunk be az intelligens szitálás engedélyezésére egy PyTorch képzési feladattal a SageMakeren. Ha gyorsan szeretne kezdeni, ugorjon a PyTorch vagy PyTorch Lightning példák.

Előfeltételek

Feltételezzük, hogy már tudja, hogyan kell betanítani egy modellt a PyTorch vagy a PyTorch Lightning segítségével a SageMaker Python SDK használatával és az Estimator osztályt a SageMaker Deep Learning Containers használatával. Ha nem, nézze meg A SageMaker Python SDK használata mielőtt folytatná.

Kezdje el a SageMaker intelligens szitálást

Egy tipikus PyTorch képzési feladatban inicializálja a PyTorch képzést DataLoader adatkészletével és egyéb szükséges paramétereivel, amely a képzés előrehaladtával bemeneti kötegeket biztosít. Az edzési adatok intelligens rostálásának engedélyezéséhez újat kell használnia DataLoader osztály: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Ezt az osztályt burkolóként használják a meglévő PyTorch tetején DataLoader és a képzési folyamat ehelyett használni fogja SiftingDataloader bemeneti kötegek beszerzéséhez. A SiftingDataLoader lekéri a bemeneti köteget az eredeti PyTorch-től DataLoader, értékeli a minták fontosságát a kötegben, és szitált köteget készít nagy veszteségű mintákkal, amelyeket aztán továbbít a betanítási lépésnek. A csomagolóanyag a következő kódhoz hasonlít:

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
)

A SiftingDataloader néhány további paramétert igényel az edzési adatok elemzéséhez, amelyeket a következőn keresztül adhat meg sift_config paraméter. Először hozzon létre a smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig tárgy. Ez az objektum tartalmazza a konfigurálható és szükséges elemeket beta_value és a loss_history_length, amelyek rendre meghatározzák a megtartandó minták arányát és a relatív veszteség értékelésekor figyelembe veendő minták ablakát. Vegye figyelembe, hogy mivel az intelligens szitálás az Ön modelljét használja a minta fontosságának meghatározására, negatív következményei lehetnek, ha teljesen véletlenszerű súlyozású modellt használunk. Ehelyett használhatja loss_based_sift_config és egy sift_delay a szitálási folyamat késleltetése addig, amíg a modellben szereplő paramétersúlyok a véletlenszerű értékeken túl nem frissülnek. (További részletekért lásd Alkalmazza az intelligens szitálást az edzési szkriptjére.) A következő kódban definiáljuk sift_config és adja meg beta_value és a loss_history_length, valamint késlelteti a szitálás megkezdését a használatával 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) )
)

Ezután be kell írnia a loss_impl paraméter a SiftingDataloader tárgy. Az intelligens szitálás egyéni mintaszinten működik, és kulcsfontosságú, hogy hozzáférjünk egy veszteségszámítási módszerhez a minta fontosságának meghatározásához. Meg kell valósítania egy szitálási veszteség módszert, amely egy nx1 tenzort ad vissza, amely n minta veszteségi értékét tartalmazza. Általában ugyanazt a veszteségi módszert adja meg, amelyet az Ön által használt model edzés közben. Végül helyezzen el egy mutatót a modelljére a SiftingDataloader objektum, amelyet a minták értékelésére használnak, mielőtt azok bekerülnének a képzésbe. Lásd a következő kódot:

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
)

A következő kód egy teljes példát mutat be az intelligens szitálás engedélyezésére egy meglévő BERT képzési munkával:

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.

Következtetés

Ebben a bejegyzésben megvizsgáltuk az intelligens szitálás nyilvános előzetesét, a SageMaker új képességét, amely akár 35%-kal csökkentheti a mélytanulási modell képzési költségeit. Ez a funkció javítja az adathatékonyságot a képzés során, és kiszűri a kevésbé informatív adatmintákat. A modellkonvergenciához csak a leghatásosabb adatok felvételével jelentősen csökkentheti a képzési időt és költséget, miközben megőrzi a pontosságot. Sőt, zökkenőmentesen integrálódik a meglévő folyamatokba anélkül, hogy módosítani kellene az adatokon vagy a képzési folyamaton.

Ha mélyebben szeretne belemerülni a SageMaker intelligens szitálásba, felfedezni annak működését, és megvalósítani a PyTorch képzési terhelésekkel, tekintse meg dokumentáció és a mintafüzetek és kezdje meg ezzel az új képességgel.


A szerzőkről

Accelerate deep learning model training up to 35% with Amazon SageMaker smart sifting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Robert Van Dusen az Amazon SageMaker vezető termékmenedzsere. Keretrendszereket, fordítókat és optimalizálási technikákat vezet a mélytanulási képzéshez.

Accelerate deep learning model training up to 35% with Amazon SageMaker smart sifting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.K Lokesh Kumar Reddy az Amazon Applied AI csapat vezető mérnöke. A hatékony ML-képzési technikákra és a társalgási AI-rendszerek fejlesztésére szolgáló eszközök kifejlesztésére összpontosít. Szabadidejében szívesen keres új kultúrákat, új tapasztalatokat, és naprakész marad a legújabb technológiai trendekkel.

Accelerate deep learning model training up to 35% with Amazon SageMaker smart sifting | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Abhishek Dan az Amazon Applied AI csapatának vezető fejlesztői menedzsere, gépi tanulással és párbeszédes AI-rendszerekkel foglalkozik. Szenvedélyesen rajong az AI-technológiákért, és a tudomány és a mérnöki tudományok metszéspontjában dolgozik az AI-rendszerek képességeinek fejlesztésén, hogy intuitívabb és zökkenőmentesebb ember-számítógép interakciókat hozzon létre. Jelenleg nagy nyelvi modellekre épít alkalmazásokat, hogy növelje a hatékonyságot és a CX fejlesztéseket az Amazon számára.

Időbélyeg:

Még több AWS gépi tanulás