Razširite linijo modela, da vključite funkcije ML z uporabo Amazon SageMaker Feature Store

Izvorno vozlišče: 1274480

Inženiring funkcij je drag in dolgotrajen, kar vas lahko pripelje do tega, da sprejmete shrambo funkcij za upravljanje funkcij v skupinah in modelih. Na žalost se morajo rešitve za linije strojnega učenja (ML) še prilagoditi temu novemu konceptu upravljanja funkcij. Če želite izkoristiti vse prednosti shrambe funkcij z omogočanjem ponovne uporabe funkcij, morate biti sposobni odgovoriti na temeljna vprašanja o funkcijah. Na primer, kako so bile te funkcije zgrajene? Kateri modeli uporabljajo te funkcije? Od katerih lastnosti je odvisen moj model? Katere funkcije so zgrajene s tem virom podatkov?

Amazon SageMaker ponuja dva pomembna gradnika, ki omogočata odgovarjanje na ključna vprašanja o liniji značilnosti:

  • Sledenje rodu SageMaker ML vam omogoča ustvarjanje in shranjevanje informacij o korakih delovnega toka ML, od priprave podatkov do uvajanja modela. Z informacijami o sledenju poreklu lahko reproducirate korake poteka dela, sledite poreklu modela in nabora podatkov ter vzpostavite standarde upravljanja in revizije modela.
  • Trgovina s funkcijami SageMaker je namensko izdelana rešitev za upravljanje funkcij ML. Pomaga ekipam za podatkovno znanost ponovno uporabiti funkcije ML v skupinah in modelih, služi funkcijam za napovedi modelov v velikem obsegu z nizko zakasnitvijo ter hitreje in učinkoviteje usposabljati in uvajati nove modele.

V tem prispevku razložimo, kako razširiti linijo ML, da bo vključevala funkcije ML in obdelavo funkcij, kar lahko ekipam za podatkovno znanost pomaga pri prehodu na proaktivno upravljanje funkcij. Nudimo popolno vzorec zvezka ki prikazuje, kako preprosto dodati sledenje rodu svojemu delovnemu toku. Nato uporabite to linijo, da odgovorite na ključna vprašanja o tem, kako so zgrajeni modeli in funkcije ter kateri modeli in končne točke jih uporabljajo.

Zakaj je značilna linija pomembna?

Linija funkcij igra pomembno vlogo pri pomoči organizacijam, da razširijo svojo prakso strojnega upravljanja prek prvih nekaj uspešnih modelov, da pokrijejo potrebe, ki se pojavijo, ko imajo več ekip za podatkovno znanost, ki gradijo in uvajajo na stotine ali tisoče modelov. Razmislite o naslednjem diagramu, ki prikazuje poenostavljen pogled ključnih artefaktov in povezav za majhen nabor modelov.

Predstavljajte si, da poskušate ročno spremljati vse to za veliko ekipo, več ekip ali celo več poslovnih enot. Sledenje poreklu in poizvedovanje pomagata narediti to bolj obvladljivo in pomagata organizacijam pri prehodu na ML v velikem obsegu. Sledijo štirje primeri, kako linija funkcij pomaga povečati proces ML:

  • Zgradite zaupanje za ponovno uporabo obstoječih funkcij – Podatkovni znanstvenik lahko išče obstoječe funkcije, vendar jih ne bo uporabil, če ne more zlahka prepoznati virov neobdelanih podatkov, transformacij, ki so bile izvedene, in kdo drug že uporablja funkcije v drugih modelih.
  • Izogibajte se ponovnemu odkrivanju funkcij, ki temeljijo na istih neobdelanih podatkih kot obstoječe funkcije – Recimo, da podatkovni znanstvenik načrtuje izgradnjo novih funkcij na podlagi določenega vira podatkov. Linija funkcij jim lahko pomaga zlahka najti vse funkcije, ki so že odvisne od istega vira podatkov in jih uporabljajo produkcijski modeli. Namesto da bi gradili in vzdrževali še eno funkcijo, lahko najdejo funkcije za takojšnjo ponovno uporabo.
  • Odpravljanje težav in revizija modelov ter napovedi modelov – V proizvodnji se lahko pojavijo napačne ali pristranske napovedi in ekipe potrebujejo odgovore o tem, kako se je to zgodilo. Do tega odpravljanja težav lahko pride tudi, če regulator išče dokaze o tem, kako so bili modeli izdelani, vključno z vsemi funkcijami, ki vodijo napovedi.
  • Upravljajte funkcije proaktivno – Ker je vedno več funkcij za večkratno uporabo na voljo v centraliziranih trgovinah s funkcijami, morajo lastniki posebnih funkcij načrtovati razvoj skupin funkcij in sčasoma celo opustiti stare funkcije. Ti lastniki funkcij morajo razumeti, kateri modeli uporabljajo njihove funkcije, da bi razumeli vpliv in s kom morajo sodelovati.

Katere odnose je pomembno spremljati?

Naslednji diagram prikazuje vzorčni niz korakov življenjskega cikla ML, artefaktov in povezav, ki so običajno potrebni za rod modela pri uporabi shrambe funkcij.

Te komponente vključujejo naslednje:

  • Vir podatkov – Funkcije ML so odvisne od virov neobdelanih podatkov, kot je shramba operativnih podatkov ali nabor datotek CSV Preprosta storitev shranjevanja Amazon (Amazon S3).
  • Cevovod funkcij – Funkcije, vredne produkcije, so običajno zgrajene z uporabo cevovoda funkcij, ki vzame nabor neobdelanih podatkovnih virov, izvede transformacije funkcij in zaužije nastale funkcije v shrambo funkcij. Sledenje rodu lahko pomaga s povezovanjem teh cevovodov z njihovimi podatkovnimi viri in ciljnimi skupinami funkcij.
  • Kompleti funkcij – Ko so funkcije v shrambi funkcij, podatkovni znanstveniki poizvedujejo po njej, da pridobijo podatke za usposabljanje in validacijo modela. S sledenjem rodu lahko povežete poizvedbo shrambe funkcij z izdelanim naborom podatkov. To zagotavlja natančne podrobnosti o tem, katere funkcije so bile uporabljene in katera zgodovina funkcij je bila izbrana v več skupinah funkcij.
  • Usposabljanje – Ko življenjski cikel ML dozoreva za uporabo shrambe funkcij, lahko linija modela poveže usposabljanje s posebnimi funkcijami in skupinami funkcij.
  • Model – Poleg tega, da modele povežete s končnimi točkami gostovanja, jih lahko povežete z njihovim ustreznim delovnim mestom za usposabljanje in posredno s skupinami funkcij.
  • Končna točka – Nazadnje, za spletne modele lahko povežete določene končne točke z modeli, ki jih gostijo, in s tem zaključite verigo od konca do konca od virov podatkov do končnih točk, ki zagotavljajo napovedi.

Ni pristopa "ena velikost za vse" k celotnemu cevovodu modela. To je samo primer, ki ga lahko prilagodite tako, da bo pokrival, kako delujejo vaše ekipe, da bodo izpolnjevale vaše specifične zahteve glede linije. Osnovni API-ji so dovolj prilagodljivi, da pokrivajo širok spekter pristopov.

Ustvarite sledenje rodu

Oglejmo si, kako instrumentirati svojo kodo za enostavno zajemanje teh povezav. Naš primer uporablja a knjižnica ovoja po meri zgradili smo okoli SageMaker ML Lineage Tracking. Ta knjižnica je ovoj okoli SDK SageMaker za podporo enostavnosti sledenja rodu v celotnem življenjskem ciklu ML. Artefakti linije vključujejo podatke, kodo, skupine funkcij, funkcije v skupini funkcij, poizvedbe po skupinah funkcij, opravila usposabljanja in modele.

Najprej uvozimo knjižnico:

from ml_lineage_helper import *

Nato bi bilo najbolje, da bi vaša linija celo sledila kodi, s katero ste obdelali svoje podatke Obdelava žajblja opravila ali kodo, uporabljeno za usposabljanje vašega modela v SageMakerju. Če je ta koda nadzorovana različica (kar zelo priporočamo!), lahko rekonstruiramo, kakšne bi bile te URL povezave v vaši izbrani platformi za upravljanje git, kot je GitHub ali GitLab:

processing_code_repo_url = get_repo_link(os.getcwd(), 'processing.py')
training_code_repo_url = get_repo_link(os.getcwd(), 'pytorch-model/train_deploy.py', processing_code=False)
repo_links = [processing_code_repo_url, training_code_repo_url]

Na koncu ustvarimo rod. Veliko vnosov je neobveznih, vendar v tem primeru predpostavljamo naslednje:

  1. Začeli ste z neobdelanim virom podatkov
  2. Za obdelavo neobdelanih podatkov in vnos v dve različni skupini funkcij ste uporabili SageMaker Processing
  3. Poizvedovali ste v Trgovini funkcij za ustvarjanje naborov podatkov za usposabljanje in testiranje
  4. Usposobili ste model v SageMakerju na svojih naborih podatkov za usposabljanje in preizkus
ml_lineage = MLLineageHelper()
lineage = ml_lineage.create_ml_lineage(estimator, model_name=model_name, query=query, sagemaker_processing_job_description=preprocessing_job_description, feature_group_names=['customers', 'claims'], repo_links=repo_links)
lineage

Naslednji posnetek zaslona prikazuje naše rezultate.

Klic vrne podatkovni okvir pandas, ki predstavlja graf rodov artefaktov, ki so bili ustvarjeni in povezani v vašem imenu. Ponuja imena, asociacije (kot npr Produced or ContributedTo), In ARN ki edinstveno identificirajo vire.

Zdaj, ko je linija vzpostavljena, jo lahko uporabite za odgovore na ključna vprašanja o vaših funkcijah in modelih. Upoštevajte, da se polna prednost tega sledenja rodu pojavi, ko to prakso sprejmejo številni podatkovni znanstveniki, ki delajo z velikim številom funkcij in modelov.

Uporabite poreklo, da odgovorite na ključna vprašanja in pridobite vpogled

Oglejmo si nekaj primerov, kaj lahko storite s podatki o poreklu, zdaj ko je vzpostavljeno sledenje poreklu.

Kot podatkovni znanstvenik morda nameravate uporabiti določen vir podatkov. Da bi se izognili ponovnemu odkrivanju funkcij, ki temeljijo na istih neobdelanih podatkih kot obstoječe funkcije, si oglejte vse funkcije, ki so že izdelane in so v izdelavi z uporabo istega vira podatkov. Preprost klic vam lahko prinese ta vpogled:

from ml_lineage_helper.query_lineage import QueryLineage query_lineage = QueryLineage()
query_lineage.get_feature_groups_from_data_source(artifact_arn_or_s3_uri)

Naslednji posnetek zaslona prikazuje naše rezultate.

Morda pa razmišljate o uporabi določene skupine funkcij in želite vedeti, kateri viri podatkov so povezani z njo:

query_lineage.get_data_sources_from_feature_group(artifact_or_fg_arn, max_depth=3)

Dobimo naslednje rezultate.

Morda boste morali tudi revidirati model ali niz napovedi modela. Če so se med produkcijo pojavile napačne ali pristranske napovedi, potrebuje vaša ekipa odgovore o tem, kako se je to zgodilo. Glede na model lahko poizvedujete po liniji, da vidite vse korake, uporabljene v življenjskem ciklu ML za ustvarjanje modela:

ml_lineage = MLLineageHelper(sagemaker_model_name_or_model_s3_uri='my-sagemaker-model-name')
ml_lineage.df

Dobimo naslednje rezultate.

Ker je vedno več funkcij na voljo v centralizirani trgovini s funkcijami, morajo lastniki določenih funkcij načrtovati razvoj skupin funkcij in sčasoma celo opustiti stare funkcije. Ti lastniki funkcij morajo razumeti, kateri modeli uporabljajo njihove funkcije, da razumejo vpliv in s kom morajo sodelovati. To lahko storite z naslednjo kodo:

query_lineage.get_models_from_feature_group(artifact_or_fg_arn)

Naslednji posnetek zaslona prikazuje naše rezultate.

Vprašanje lahko tudi obrnete in ugotovite, katere skupine funkcij so povezane z danim modelom:

query_lineage.get_feature_groups_from_model(artifact_arn_or_model_name)

zaključek

V tej objavi smo razpravljali o pomembnosti sledenja liniji ML, vidikih življenjskega cikla ML, ki bi jim morali slediti in jih dodati v linijo, ter o tem, kako uporabiti SageMaker za zagotavljanje linije ML od konca do konca. Opisali smo tudi, kako vključiti Feature Store, ko se premikate k funkcijam za večkratno uporabo v skupinah in modelih, in končno, kako uporabljati knjižnica pomočnikov za dosego sledenja rodu ML od konca do konca. Če želite preizkusiti življenski cikel trgovine s funkcijami od konca do konca, vključno z modulom o rodu, lahko raziščete to Delavnica trgovine s funkcijami in zvezke za vse module na GitHub. Ta pristop lahko razširite tudi tako, da pokrije vaše posebne zahteve. Obiščite pomočnika ML Lineage Knjižnica smo zgradili in preizkusite primer zvezek.


O avtorjih

Bobby Lindsey je strokovnjak za strojno učenje pri Amazon Web Services. V tehnologiji je že več kot desetletje, zajema različne tehnologije in več vlog. Trenutno je osredotočen na združevanje svojega znanja na področju programskega inženiringa, DevOps in strojnega učenja, da bi strankam pomagal pri izvajanju delovnih tokov strojnega učenja v velikem obsegu. V prostem času uživa v branju, raziskovanju, pohodništvu, kolesarjenju in teku.

Mark Roy je glavni arhitekt strojnega učenja za AWS, ki strankam pomaga pri oblikovanju in izdelavi rešitev AI / ML. Markovo delo zajema široko paleto primerov uporabe ML, predvsem pa računalniški vid, poglobljeno učenje in razširjanje ML v celotnem podjetju. Pomagal je podjetjem v številnih panogah, vključno z zavarovalništvom, finančnimi storitvami, mediji in zabavo, zdravstvom, komunalnimi storitvami in proizvodnjo. Mark ima šest certifikatov AWS, vključno s certifikatom ML Specialty. Preden se je Mark pridružil AWS, je bil več kot 25 let arhitekt, razvijalec in vodja tehnologije, vključno z 19 leti v finančnih storitvah.

Mohan Pasappulatti je višji arhitekt rešitev pri AWS s sedežem v San Franciscu v ZDA. Mohan pomaga visokoprofilnim prelomnim zagonskim podjetjem in strateškim strankam pri arhitekturi in uvajanju porazdeljenih aplikacij, vključno z delovnimi obremenitvami strojnega učenja v proizvodnji na AWS. Ima več kot 20 let delovnih izkušenj v več vlogah, kot so vodja inženiringa, glavni arhitekt in glavni inženir. V prostem času Mohan rad navija za svojo univerzitetno nogometno ekipo (LSU Tigers!), igra poker, smuča, opazuje finančne trge, igra odbojko in preživlja čas na prostem.

Vir: https://aws.amazon.com/blogs/machine-learning/extend-model-lineage-to-include-ml-features-using-amazon-sagemaker-feature-store/

Časovni žig:

Več od Blog za strojno učenje AWS