Ustvarjanje robustnih in večkrat uporabnih cevovodov strojnega učenja (ML) je lahko zapleten in dolgotrajen proces. Razvijalci običajno testirajo svoje skripte za obdelavo in usposabljanje lokalno, vendar se cevovodi običajno testirajo v oblaku. Ustvarjanje in izvajanje celotnega cevovoda med eksperimentiranjem doda neželene režijske stroške in stroške v razvojnem ciklu. V tej objavi podrobno opisujemo, kako lahko uporabite Amazon SageMaker Pipelines lokalni način za lokalno izvajanje cevovodov ML, da zmanjšate tako razvoj cevovoda kot čas delovanja in hkrati zmanjšate stroške. Ko je cevovod lokalno v celoti preizkušen, ga lahko preprosto znova zaženete z Amazon SageMaker upravljanih virov z le nekaj spremembami kode.
Pregled življenjskega cikla ML
Eno od glavnih gonil za nove inovacije in aplikacije v ML je razpoložljivost in količina podatkov skupaj s cenejšimi računalniškimi možnostmi. Na več področjih se je ML izkazal za sposobnega reševanja problemov, ki prej niso bili rešljivi s klasičnimi velikimi podatki in analitičnimi tehnikami, povpraševanje po podatkovnih znanostih in praktikih ML pa vztrajno narašča. Na zelo visoki ravni je življenjski cikel ML sestavljen iz številnih različnih delov, vendar je izgradnja modela ML običajno sestavljena iz naslednjih splošnih korakov:
- Čiščenje in priprava podatkov (inženiring funkcij)
- Šolanje in uglaševanje modela
- Ocenjevanje modela
- Razmestitev modela (ali paketno preoblikovanje)
V koraku priprave podatkov se podatki naložijo, masirajo in pretvorijo v vrsto vnosov ali funkcij, ki jih pričakuje model ML. Pisanje skriptov za pretvorbo podatkov je običajno ponavljajoč se proces, kjer so hitre povratne zanke pomembne za pospešitev razvoja. Običajno ni treba uporabiti celotnega nabora podatkov pri testiranju skriptov za inženiring funkcij, zato lahko uporabite funkcijo lokalnega načina podjetja SageMaker Processing. To vam omogoča lokalno izvajanje in iterativno posodabljanje kode z uporabo manjšega nabora podatkov. Ko je končna koda pripravljena, se predloži opravilu za oddaljeno obdelavo, ki uporablja celoten nabor podatkov in se izvaja na instancah, ki jih upravlja SageMaker.
Razvojni proces je podoben koraku priprave podatkov za korake usposabljanja modela in korake vrednotenja modela. Podatkovni znanstveniki uporabljajo funkcijo lokalnega načina usposabljanja SageMaker za hitro iteracijo z manjšimi nabori podatkov lokalno, preden uporabite vse podatke v gruči primerkov, optimiziranih za ML, ki jih upravlja SageMaker. To pospeši razvojni proces in odpravi stroške izvajanja primerkov ML, ki jih med eksperimentiranjem upravlja SageMaker.
Ko se zrelost organizacije za strojno upravljanje povečuje, lahko uporabite Amazonski cevovodi SageMaker za ustvarjanje cevovodov ML, ki povezujejo te korake in ustvarjajo bolj zapletene poteke dela ML, ki obdelujejo, usposabljajo in ocenjujejo modele ML. SageMaker Pipelines je popolnoma upravljana storitev za avtomatizacijo različnih korakov delovnega toka ML, vključno z nalaganjem podatkov, transformacijo podatkov, usposabljanjem in prilagajanjem modela ter uvajanjem modela. Do nedavnega ste lahko svoje skripte razvijali in testirali lokalno, vendar ste morali svoje cevovode ML testirati v oblaku. Zaradi tega je ponavljanje toka in oblike cevovodov ML počasen in drag proces. Zdaj, z dodano funkcijo lokalnega načina SageMaker Pipelines, lahko ponavljate in testirate svoje cevovode ML podobno, kot testirate in ponavljate svoje skripte za obdelavo in usposabljanje. Svoje cevovode lahko zaženete in preizkusite na svojem lokalnem računalniku z uporabo majhnega podnabora podatkov za potrditev sintakse in funkcionalnosti cevovoda.
SageMaker cevovodi
SageMaker Pipelines ponuja popolnoma avtomatiziran način izvajanja preprostih ali kompleksnih delovnih tokov ML. S SageMaker Pipelines lahko ustvarite delovne tokove ML s Python SDK-jem, ki je enostaven za uporabo, nato pa vizualizirate in upravljate svoj delovni tok z Amazon SageMaker Studio. Vaše ekipe za podatkovno znanost so lahko učinkovitejše in se hitreje širijo s shranjevanjem in ponovno uporabo korakov poteka dela, ki jih ustvarite v SageMaker Pipelines. Uporabite lahko tudi vnaprej pripravljene predloge, ki avtomatizirajo ustvarjanje infrastrukture in repozitorija za izdelavo, testiranje, registracijo in uvajanje modelov v vašem okolju ML. Te predloge so samodejno na voljo vaši organizaciji in so omogočene z uporabo Katalog storitev AWS izdelkov.
SageMaker Pipelines prinaša prakse stalne integracije in neprekinjenega uvajanja (CI/CD) v ML, kot je ohranjanje paritete med razvojnimi in produkcijskimi okolji, nadzor različic, testiranje na zahtevo in avtomatizacija od konca do konca, kar vam pomaga razširiti ML v celotnem vašem organizacija. Strokovnjaki DevOps vedo, da nekatere glavne prednosti uporabe tehnik CI/CD vključujejo povečanje produktivnosti s komponentami, ki jih je mogoče ponovno uporabiti, in povečanje kakovosti s pomočjo avtomatiziranega testiranja, kar vodi do hitrejšega ROI za vaše poslovne cilje. Te ugodnosti so zdaj na voljo izvajalcem MLOps z uporabo SageMaker Pipelines za avtomatizacijo usposabljanja, testiranja in uvajanja modelov ML. Z lokalnim načinom lahko zdaj veliko hitreje ponavljate med razvijanjem skriptov za uporabo v cevovodu. Upoštevajte, da primerkov lokalnega cevovoda ni mogoče videti ali zagnati znotraj Studio IDE; vendar pa bodo kmalu na voljo dodatne možnosti ogleda lokalnih cevovodov.
SDK SageMaker ponuja splošen namen konfiguracijo lokalnega načina ki razvijalcem omogoča zagon in testiranje podprtih procesorjev in ocenjevalcev v njihovem lokalnem okolju. Uporabite lahko usposabljanje v lokalnem načinu z več slikami ogrodja, ki jih podpira AWS (TensorFlow, MXNet, Chainer, PyTorch in Scikit-Learn), ter slikami, ki jih zagotovite sami.
SageMaker Pipelines, ki gradi usmerjeni aciklični graf (DAG) orkestriranih korakov delovnega toka, podpira številne dejavnosti, ki so del življenjskega cikla ML. V lokalnem načinu so podprti naslednji koraki:
- Obdelava delovnih korakov – Poenostavljena, upravljana izkušnja na SageMakerju za izvajanje delovnih obremenitev obdelave podatkov, kot so inženiring funkcij, validacija podatkov, vrednotenje modela in interpretacija modela
- Delovni koraki usposabljanja – Ponavljajoč se proces, ki model nauči napovedovati s predstavitvijo primerov iz nabora podatkov za usposabljanje
- Hiperparametrska nastavitev – Samodejni način za ocenjevanje in izbiro hiperparametrov, ki proizvajajo najbolj natančen model
- Pogojni tekaški koraki – Korak, ki zagotavlja pogojni potek vej v cevovodu
- Modelni korak – Z uporabo argumentov CreateModel lahko ta korak ustvari model za uporabo v korakih preoblikovanja ali poznejše uvedbe kot končne točke
- Preoblikujte delovne korake – Opravilo paketnega preoblikovanja, ki ustvarja napovedi iz velikih naborov podatkov in izvaja sklepanje, ko trajna končna točka ni potrebna
- Neuspešni koraki – Korak, ki ustavi potek cevovoda in označi potek kot neuspešen
Pregled rešitev
Naša rešitev prikazuje bistvene korake za ustvarjanje in izvajanje cevovodov SageMaker v lokalnem načinu, kar pomeni uporabo lokalnega procesorja, RAM-a in diskovnih virov za nalaganje in izvajanje korakov poteka dela. Vaše lokalno okolje se lahko izvaja na prenosniku z uporabo priljubljenih IDE-jev, kot sta VSCode ali PyCharm, ali pa ga lahko gosti SageMaker z uporabo klasičnih primerkov prenosnika.
Lokalni način podatkovnim znanstvenikom omogoča, da združijo korake, ki lahko vključujejo opravila obdelave, usposabljanja in vrednotenja, ter lokalno izvajajo celoten potek dela. Ko končate lokalno testiranje, lahko znova zaženete cevovod v okolju, ki ga upravlja SageMaker, tako da zamenjate LocalPipelineSession
objekt z PipelineSession
, ki prinaša doslednost v življenjski cikel ML.
Za ta vzorec zvezka uporabljamo standardni javno dostopni nabor podatkov, the UCI Machine Learning Abalone Dataset. Cilj je usposobiti model ML za določanje starosti polža abalona iz njegovih fizičnih meritev. V bistvu je to problem regresije.
Vsa koda, potrebna za zagon tega vzorca prenosnika, je na voljo na GitHubu v amazon-sagemaker-primeri repozitorij. V tem vzorcu prenosnika je vsak korak delovnega toka cevovoda ustvarjen neodvisno in nato povezan skupaj, da se ustvari cevovod. Ustvarjamo naslednje korake:
- Korak obdelave (inženiring funkcij)
- Korak usposabljanja (usposabljanje modela)
- Korak obdelave (vrednotenje modela)
- Korak pogoja (natančnost modela)
- Ustvari korak modela (model)
- Korak transformacije (paketno transformiranje)
- Registrirajte korak modela (paket modela)
- Neuspešen korak (izvajanje ni uspelo)
Naslednji diagram ponazarja naš cevovod.
Predpogoji
Če želite slediti tej objavi, potrebujete naslednje:
Ko so ti predpogoji izpolnjeni, lahko zaženete vzorčni zvezek, kot je opisano v naslednjih razdelkih.
Zgradite svoj plinovod
V tem vzorcu zvezka uporabljamo Skriptni način SageMaker za večino procesov ML, kar pomeni, da zagotovimo dejansko kodo Python (skripte) za izvajanje dejavnosti in posredujemo referenco na to kodo. Skriptni način zagotavlja veliko prilagodljivost za nadzor vedenja znotraj obdelave SageMaker, tako da vam omogoča, da prilagodite svojo kodo, medtem ko še vedno izkoriščate vnaprej zgrajene vsebnike SageMaker, kot sta XGBoost ali Scikit-Learn. Koda po meri je zapisana v skriptno datoteko Python z uporabo celic, ki se začnejo s čarobnim ukazom %%writefile
, kot je naslednje:
%%writefile code/evaluation.py
Primarni omogočevalec lokalnega načina je LocalPipelineSession
objekt, ki je instanciran iz Python SDK. Naslednji segmenti kode prikazujejo, kako ustvariti cevovod SageMaker v lokalnem načinu. Čeprav lahko konfigurirate lokalno podatkovno pot za številne lokalne korake cevovoda, je Amazon S3 privzeta lokacija za shranjevanje izhodnih podatkov s transformacijo. Novi LocalPipelineSession
se posreduje SDK-ju za Python v številnih klicih API-ja poteka dela SageMaker, opisanih v tej objavi. Upoštevajte, da lahko uporabite local_pipeline_session
spremenljivka za pridobitev sklicev na privzeto vedro S3 in trenutno ime regije.
Preden ustvarimo posamezne korake cevovoda, nastavimo nekaj parametrov, ki jih uporablja cevovod. Nekateri od teh parametrov so nizovni literali, medtem ko so drugi ustvarjeni kot posebni oštevilčeni tipi, ki jih zagotavlja SDK. Oštevilčeno tipkanje zagotavlja, da so cevovodu posredovane veljavne nastavitve, kot je ta, ki se posreduje ConditionLessThanOrEqualTo
korak nižje:
mse_threshold = ParameterFloat(name="MseThreshold", default_value=7.0)
Za ustvarjanje koraka obdelave podatkov, ki se tukaj uporablja za izvajanje inženiringa funkcij, uporabljamo SKLearnProcessor
za nalaganje in preoblikovanje nabora podatkov. Mimo local_pipeline_session
spremenljivko za konstruktor razreda, ki koraku delovnega toka ukaže, naj se izvaja v lokalnem načinu:
Nato ustvarimo naš prvi dejanski korak cevovoda, a ProcessingStep
objekt, kot je uvožen iz SDK-ja SageMaker. Argumenti procesorja so vrnjeni iz klica v SKLearnProcessor
metoda run(). Ta korak delovnega toka je združen z drugimi koraki proti koncu zvezka, da nakaže vrstni red delovanja v cevovodu.
Nato zagotovimo kodo za vzpostavitev koraka usposabljanja tako, da najprej instanciramo standardni ocenjevalec s SDK SageMaker. Mimo enako local_pipeline_session
spremenljivko za ocenjevalnik, imenovano xgb_train, kot sagemaker_session
prepir. Ker želimo usposobiti model XGBoost, moramo ustvariti veljaven URI slike z navedbo naslednjih parametrov, vključno z okvirjem in več parametri različice:
Po želji lahko na primer pokličemo dodatne metode ocenjevalca set_hyperparameters()
, da zagotovite nastavitve hiperparametrov za opravilo usposabljanja. Zdaj, ko imamo konfiguriran ocenjevalec, smo pripravljeni ustvariti dejanski korak usposabljanja. Še enkrat, uvažamo TrainingStep
razred iz knjižnice SDK SageMaker:
Nato zgradimo še en korak obdelave za izvedbo ocene modela. To se naredi z ustvarjanjem a ScriptProcessor
primer in prehajanje local_pipeline_session
objekt kot parameter:
Če želite omogočiti uvedbo usposobljenega modela, bodisi na a Končna točka SageMaker v realnem času ali za paketno pretvorbo, moramo ustvariti a Model
objekta s posredovanjem artefaktov modela, ustreznega URI-ja slike in po želji naše kode sklepanja po meri. Nato prenesemo to Model
nasprotovati a ModelStep
, ki je dodan lokalnemu cevovodu. Oglejte si naslednjo kodo:
Nato ustvarimo korak paketnega preoblikovanja, kjer predložimo niz značilnih vektorjev in izvedemo sklepanje. Najprej moramo ustvariti a Transformer
ugovarjati in podati local_pipeline_session
parameter zanj. Nato ustvarimo a TransformStep
, posredovanje zahtevanih argumentov, in dodajte to v definicijo cevovoda:
Nazadnje želimo dodati pogoj razvejanja v potek dela, tako da bomo zagnali samo paketno pretvorbo, če rezultati vrednotenja modela ustrezajo našim merilom. Ta pogojnik lahko označimo tako, da dodamo a ConditionStep
z določeno vrsto stanja, npr ConditionLessThanOrEqualTo
. Nato naštejemo korake za obe veji, s čimer v bistvu definiramo veje if/else ali true/false cevovoda. Koraki if_steps, navedeni v ConditionStep
(step_create_model, step_transform) izvajajo vsakič, ko je pogoj ocenjen na True
.
Naslednji diagram prikazuje to pogojno vejo in povezane korake if/else. Zažene se samo ena veja na podlagi rezultata koraka vrednotenja modela v primerjavi s korakom stanja.
Zdaj, ko imamo definirane vse naše korake in ustvarjene osnovne instance razreda, jih lahko združimo v cevovod. Zagotavljamo nekaj parametrov in bistveno definiramo vrstni red delovanja tako, da preprosto navedemo korake v želenem vrstnem redu. Upoštevajte, da je TransformStep
tukaj ni prikazan, ker je cilj pogojnega koraka in je bil naveden kot argument koraka za ConditionalStep
prej.
Če želite zagnati cevovod, morate poklicati dve metodi: pipeline.upsert()
, ki naloži cevovod v osnovno storitev, in pipeline.start()
, ki začne izvajati plinovod. Uporabite lahko različne druge metode za preverjanje statusa izvajanja, seznam korakov cevovoda in drugo. Ker smo uporabili sejo cevovoda lokalnega načina, se vsi ti koraki izvajajo lokalno na vašem procesorju. Izhod celice pod začetno metodo prikazuje izhod iz cevovoda:
Na dnu izpisa celice bi morali videti sporočilo, podobno naslednjemu:
Pipeline execution d8c3e172-089e-4e7a-ad6d-6d76caf987b7 SUCCEEDED
Vrnitev na upravljane vire
Ko potrdimo, da cevovod deluje brez napak in smo zadovoljni s tokom in obliko cevovoda, ga lahko ponovno ustvarimo, vendar z viri, ki jih upravlja SageMaker, in ga znova zaženemo. Edina zahtevana sprememba je uporaba PipelineSession
objekt namesto LocalPipelineSession
:
iz sagemaker.workflow.pipeline_context import LocalPipelineSessionfrom sagemaker.workflow.pipeline_context import PipelineSession
local_pipeline_session = LocalPipelineSession()pipeline_session = PipelineSession()
To obvesti storitev, da izvaja vsak korak, ki se sklicuje na ta objekt seje v virih, ki jih upravlja SageMaker. Glede na majhno spremembo ponazarjamo samo zahtevane spremembe kode v naslednji celici kode, vendar bi bilo treba isto spremembo izvesti v vsaki celici z uporabo local_pipeline_session
predmet. Spremembe pa so v vseh celicah enake, ker zamenjamo le local_pipeline_session
predmet z pipeline_session
predmet.
Ko je objekt lokalne seje povsod zamenjan, znova ustvarimo cevovod in ga zaženemo z viri, ki jih upravlja SageMaker:
Čiščenje
Če želite ohranjati okolje Studio urejeno, lahko uporabite naslednje metode za brisanje cevovoda SageMaker in modela. Celotno kodo najdete v vzorcu prenosnik.
zaključek
Do nedavnega ste lahko uporabljali funkcijo lokalnega načina SageMaker Processing in SageMaker Training za lokalno ponavljanje vaših skriptov za obdelavo in usposabljanje, preden jih zaženete na vseh podatkih z viri, ki jih upravlja SageMaker. Z novo funkcijo lokalnega načina SageMaker Pipelines lahko strokovnjaki ML zdaj uporabijo isto metodo pri ponavljanju svojih cevovodov ML in združijo različne poteke dela ML. Ko je cevovod pripravljen za proizvodnjo, je za njegovo izvajanje z upravljanimi sredstvi SageMaker potrebno le nekaj vrstic sprememb kode. To skrajša čas cevovoda med razvojem, kar vodi do hitrejšega cevovodnega razvoja s hitrejšimi razvojnimi cikli, hkrati pa zmanjša stroške virov, ki jih upravlja SageMaker.
Če želite izvedeti več, obiščite Amazonski cevovodi SageMaker or Uporabite SageMaker Pipelines za lokalno izvajanje vaših opravil.
O avtorjih
Paul Hargis se je osredotočil na strojno učenje v več podjetjih, vključno z AWS, Amazon in Hortonworks. Uživa v gradnji tehnoloških rešitev in poučevanju ljudi, kako jih kar najbolje izkoristiti. Pred svojo vlogo pri AWS je bil vodilni arhitekt za Amazon Exports and Expansions, s čimer je amazon.com pomagal izboljšati izkušnjo za mednarodne kupce. Paul rad pomaga strankam razširiti njihove pobude za strojno učenje za reševanje problemov v resničnem svetu.
Niklas Palm je arhitekt rešitev pri AWS v Stockholmu na Švedskem, kjer strankam po Nordiji pomaga uspeti v oblaku. Še posebej ga navdušujejo brezstrežniške tehnologije, internet stvari in strojno učenje. Zunaj službe je Niklas navdušen tekač na smučeh in deskanje na snegu ter mojster kuhanja jajc.
Kirit Thadaka je arhitekt rešitev ML, ki dela v ekipi SageMaker Service SA. Preden se je pridružil AWS, je Kirit delal v zagonskih podjetjih AI, čemur je sledilo nekaj časa svetovanja v različnih vlogah pri raziskavah AI, MLOps in tehničnem vodenju.
- Napredno (300)
- AI
- ai art
- ai art generator
- imajo robota
- AIML
- Amazon SageMaker
- Amazonski SageMaker avtopilot
- Umetna inteligenca
- certificiranje umetne inteligence
- umetna inteligenca v bančništvu
- robot z umetno inteligenco
- roboti z umetno inteligenco
- programska oprema za umetno inteligenco
- Strojno učenje AWS
- blockchain
- blockchain konferenca ai
- coingenius
- pogovorna umetna inteligenca
- kripto konferenca ai
- dall's
- globoko učenje
- strojno učenje
- platon
- platon ai
- Platonova podatkovna inteligenca
- Igra Platon
- PlatoData
- platogaming
- lestvica ai
- sintaksa
- Tehnična navodila
- zefirnet