Ajoita Amazon SageMaker -muistikirjatöitä ja hallitse monivaiheisia muistikirjan työnkulkuja API:iden avulla | Amazon Web Services

Ajoita Amazon SageMaker -muistikirjatöitä ja hallitse monivaiheisia muistikirjan työnkulkuja API:iden avulla | Amazon Web Services

Lähdesolmu: 2985648

Amazon SageMaker Studio tarjoaa täysin hallitun ratkaisun datatieteilijöille koneoppimismallien (ML) interaktiiviseen rakentamiseen, kouluttamiseen ja käyttöönottoon. Amazon SageMaker muistikirjatyöt salli datatieteilijöiden käyttää muistikirjojaan pyynnöstä tai aikataulun mukaan muutamalla napsautuksella SageMaker Studiossa. Tämän julkaisun myötä voit ajaa muistikirjoja ohjelmallisesti töinä käyttämällä tarjoamia sovellusliittymiä Amazon SageMaker -putkistot, ML-työnkulun orkestrointiominaisuus Amazon Sage Maker. Lisäksi voit luoda monivaiheisen ML-työnkulun useilla riippuvaisilla muistikirjoilla näiden sovellusliittymien avulla.

SageMaker Pipelines on natiivi työnkulun organisointityökalu ML-putkien rakentamiseen, jotka hyödyntävät suoraa SageMaker-integraatiota. Jokainen SageMaker-putki koostuu vaiheet, jotka vastaavat yksittäisiä tehtäviä, kuten käsittelyä, koulutusta tai tietojenkäsittelyä käyttämällä Amazonin EMR. SageMaker-muistikirjatyöt ovat nyt saatavilla sisäänrakennettuna vaihetyyppinä SageMaker-putkistossa. Tämän muistikirjan työvaiheen avulla voit helposti ajaa muistikirjoja töinä vain muutaman koodirivin avulla Amazon SageMaker Python SDK. Lisäksi voit yhdistää useita riippuvaisia ​​muistikirjoja luodaksesi työnkulun ohjattujen asyklisten kuvaajien (DAG) muodossa. Voit sitten suorittaa näitä muistikirjatöitä tai DAG:ita ja hallita ja visualisoida niitä SageMaker Studion avulla.

Datatieteilijät käyttävät tällä hetkellä SageMaker Studiota Jupyter-muistikirjojensa vuorovaikutteiseen kehittämiseen ja käyttävät sitten SageMaker-muistikirjoja ajaakseen näitä muistikirjoja ajoitettuina töinä. Nämä työt voidaan suorittaa välittömästi tai toistuvan aikataulun mukaan ilman, että tietotyöntekijöiden tarvitsee muuttaa koodia Python-moduuleiksi. Joitakin yleisiä käyttötapauksia tämän tekemiseen ovat:

  • Pitkät juoksumuistikirjat taustalla
  • Säännöllisesti käynnissä oleva mallipäätelmä raporttien luomiseksi
  • Laajentuminen pienten näytetietojoukkojen valmistuksesta petatavun mittakaavan ison datan käsittelyyn
  • Mallien uudelleenkoulutus ja käyttöönotto tietyllä tahdilla
  • Töiden ajoitus mallin laadun tai tiedon ajautuman seurantaan
  • Parametritilan tutkiminen parempien mallien saamiseksi

Vaikka tämä toiminto tekee tietotyöntekijöiden helpoksi automatisoida itsenäisiä muistikirjoja, ML-työnkulut koostuvat usein useista muistikirjoista, joista jokainen suorittaa tietyn tehtävän monimutkaisilla riippuvuuksilla. Esimerkiksi muistikirjassa, joka valvoo mallitietojen ajautumista, tulisi olla esivaihe, joka mahdollistaa uusien tietojen poimimisen, muuntamisen ja lataamisen (ETL) ja käsittelyn sekä mallin päivityksen ja koulutuksen jälkeinen vaihe, jos huomattava ajautuminen havaitaan. . Lisäksi datatieteilijät saattavat haluta käynnistää koko työnkulun toistuvasti päivittääkseen mallin uusien tietojen perusteella. Jotta voit helposti automatisoida muistikirjasi ja luoda tällaisia ​​monimutkaisia ​​työnkulkuja, SageMaker-muistikirjatyöt ovat nyt saatavilla vaiheena SageMaker Pipelinesissä. Tässä viestissä näytämme, kuinka voit ratkaista seuraavat käyttötapaukset muutamalla koodirivillä:

  • Käytä itsenäistä muistikirjaa ohjelmallisesti välittömästi tai toistuvan aikataulun mukaan
  • Luo monivaiheisia kannettavien työnkulkuja DAG:ina jatkuvaa integrointia ja jatkuvaa toimitusta (CI/CD) varten, joita voidaan hallita SageMaker Studion käyttöliittymän kautta.

Ratkaisun yleiskatsaus

Seuraava kaavio havainnollistaa ratkaisumme arkkitehtuuria. Voit käyttää SageMaker Python SDK:ta yksittäisen muistikirjatyön tai työnkulun suorittamiseen. Tämä ominaisuus luo SageMaker-harjoitustyön kannettavan tietokoneen käyttöä varten.

Seuraavissa osioissa käymme läpi mallin ML-käyttötapauksen ja esittelemme vaiheet muistikirjatöiden työnkulun luomiseksi, parametrien siirtämiseksi eri muistikirjan vaiheiden välillä, työnkulun ajoittamiseen ja sen seurantaan SageMaker Studion kautta.

Tämän esimerkin ML-ongelmaamme varten rakennamme tunteiden analyysimallia, joka on eräänlainen tekstin luokittelutehtävä. Tunnelmaanalyysin yleisimpiä sovelluksia ovat sosiaalisen median seuranta, asiakastuen hallinta ja asiakaspalautteen analysointi. Tässä esimerkissä käytetty tietojoukko on Stanford Sentiment Treebank (SST2) -tietojoukko, joka koostuu elokuva-arvosteluista sekä kokonaisluvusta (0 tai 1), joka ilmaisee arvostelun positiivisen tai negatiivisen mielipiteen.

Seuraava on esimerkki a data.csv tiedosto, joka vastaa SST2-tietojoukkoa, ja näyttää arvot sen kahdessa ensimmäisessä sarakkeessa. Huomaa, että tiedostossa ei saa olla otsikkoa.

Sarake 1 Sarake 2
0 piilottaa uusia eritteitä vanhempien yksiköistä
0 ei sisällä nokkeluutta, vain työläitä
1 joka rakastaa hahmojaan ja viestii jotain melko kaunista ihmisluonnosta
0 on täysin tyytyväinen pysyäkseen samana koko ajan
0 pahimmilla nörttien koston kliseillä, joita elokuvantekijät voivat kaivaa
0 se on aivan liian traagista ansaitsemaan näin pinnallista kohtelua
1 osoittaa, että tällaisten hollywood-menestysfilmien, kuten patrioottipelien, ohjaaja voi silti tuottaa pienen, henkilökohtaisen elokuvan, jossa on tunnekuormitus.

Tässä ML-esimerkissä meidän on suoritettava useita tehtäviä:

  1. Suorita ominaisuussuunnittelu valmistellaksesi tämä tietojoukko mallimme ymmärtämässä muodossa.
  2. Suorita toimintojen suunnittelun jälkeen koulutusvaihe, joka käyttää Transformersia.
  3. Määritä eräpäätelmä hienosäädetyn mallin avulla, jotta voit ennustaa tulevien uusien arvostelujen tunteen.
  4. Määritä tietojen seurantavaihe, jotta voimme säännöllisesti tarkkailla uusia tietojamme mahdollisten laadun poikkeamien varalta, mikä saattaa edellyttää mallin painojen uudelleenkouluttamista.

Tämän kannettavan työpaikan käynnistämisen SageMaker-putkien vaiheena voimme järjestää tämän työnkulun, joka koostuu kolmesta erillisestä vaiheesta. Jokainen työnkulun vaihe kehitetään eri muistikirjassa, joka muunnetaan sitten itsenäisiksi muistikirjan työvaiheiksi ja yhdistetään liukuhihnaksi:

  • esikäsittely – Lataa julkinen SST2-tietojoukko osoitteesta Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ja luo CSV-tiedosto muistikirjaa varten vaiheessa 2. SST2-tietojoukko on tekstiluokittelutietojoukko, jossa on kaksi tunnistetta (0 ja 1) ja luokiteltava tekstisarake.
  • koulutus – Ota muotoiltu CSV-tiedosto ja suorita hienosäätö BERT:llä tekstin luokittelua varten käyttämällä Transformers-kirjastoja. Käytämme osana tätä vaihetta testitietojen valmistelumuistikirjaa, joka on riippuvuus hienosäätö- ja eräpäättelyvaiheesta. Kun hienosäätö on valmis, tätä muistikirjaa ajetaan run magicilla ja se valmistelee testitietojoukon näytepäätelmien tekemiseksi hienosäädetyn mallin kanssa.
  • Muuta ja valvo – Suorita eräpäättely ja määritä tietojen laatu mallin valvonnalla, jotta saat perustietojoukon ehdotuksen.

Käytä muistikirjoja

Tämän ratkaisun mallikoodi on saatavilla osoitteessa GitHub.

SageMaker-muistikirjan työvaiheen luominen on samanlainen kuin muiden SageMaker-putkilinjan vaiheiden luominen. Tässä muistikirjaesimerkissä käytämme SageMaker Python SDK:ta työnkulun järjestämiseen. Voit luoda muistikirjan vaiheen SageMaker Pipelinesissä määrittämällä seuraavat parametrit:

  • Syötä muistikirja – Sen muistikirjan nimi, jota tämä muistikirjan vaihe ohjaa. Täällä voit siirtyä paikalliseen polkuun syöttömuistikirjaan. Vaihtoehtoisesti, jos tällä muistikirjalla on muita käynnissä olevia muistikirjoja, voit siirtää ne eteenpäin AdditionalDependencies muistikirjan työvaiheen parametri.
  • Kuvan URI – Docker-kuva kannettavan tietokoneen työvaiheen takana. Tämä voi olla ennalta määritettyjä kuvia, jotka SageMaker jo tarjoaa, tai mukautettu kuva, jonka olet määrittänyt ja siirtänyt siihen Amazonin elastisten säiliörekisteri (Amazon ECR). Katso tuetut kuvat tämän viestin lopussa olevasta huomioista.
  • Ytimen nimi – SageMaker Studiossa käyttämäsi ytimen nimi. Tämä ytimen tiedot on rekisteröity antamaasi kuvatiedostoon.
  • Ilmentymän tyyppi (valinnainen) - Amazonin elastinen laskentapilvi (Amazon EC2) ilmentymätyyppi määrittämäsi ja ajettavan kannettavan työn takana.
  • Parametrit (valinnainen) – Parametrit, jotka voit antaa ja jotka ovat käytettävissä kannettavassasi. Nämä voidaan määritellä avainarvo-pareina. Lisäksi näitä parametreja voidaan muokata erilaisten muistikirjan työajojen tai liukuhihnaajojen välillä.

Esimerkissämme on yhteensä viisi muistikirjaa:

  • nb-job-pipeline.ipynb – Tämä on päämuistikirjamme, jossa määritämme prosessimme ja työnkulkumme.
  • preprocess.ipynb – Tämä muistikirja on ensimmäinen askel työnkulussamme ja sisältää koodin, joka vetää julkisen AWS-tietojoukon ja luo siitä CSV-tiedoston.
  • koulutus.ipynb – Tämä muistikirja on työnkulkumme toinen vaihe, ja se sisältää koodin edellisen vaiheen CSV:n ottamiseksi ja paikallisen koulutuksen ja hienosäädön suorittamiseksi. Tämä vaihe on myös riippuvainen prepare-test-set.ipynb muistikirja vetääksesi alas testitietojoukon näytepäätelmien tekemiseksi hienosäädetystä mallista.
  • ready-test-set.ipynb – Tämä muistikirja luo testitietojoukon, jota harjoitusmuistikirjamme käyttää toisessa liukuhihnavaiheessa ja käyttää näytepäätelmien tekemiseen hienosäädetyn mallin kanssa.
  • transform-monitor.ipynb – Tämä muistikirja on kolmas vaihe työnkulussamme, ja se käyttää BERT-perusmallia ja suorittaa SageMaker-erämuunnostyön sekä määrittää tietojen laadun mallinvalvonnan avulla.

Seuraavaksi käymme läpi päämuistikirjan nb-job-pipeline.ipynb, joka yhdistää kaikki alamuistikirjat liukuhihnaksi ja suorittaa työnkulun päästä päähän. Huomaa, että vaikka seuraava esimerkki suorittaa muistikirjan vain kerran, voit myös ajoittaa liukuhihnan suorittamaan muistikirjan toistuvasti. Viitata SageMaker-ohjeet yksityiskohtaisia ​​ohjeita.

Ensimmäisessä kannettavan tietokoneen työvaiheessa välitämme parametrin oletusarvoisen S3-alueen kanssa. Voimme käyttää tätä ämpäriä tyhjentämään mitä tahansa artefakteja, jotka haluamme saataville muita putkilinjan vaiheita varten. Ensimmäiselle muistikirjalle (preprocess.ipynb), vedämme AWS:n julkisen SST2-junatietojoukon alas ja luomme siitä koulutus-CSV-tiedoston, jonka siirrämme tähän S3-ämpäriin. Katso seuraava koodi:

# Parameters
print(default_s3_bucket)

!aws s3 cp s3://sagemaker-sample-files/datasets/text/SST2/sst2.train sst2.train

# will read just the first 500 lines for quicker execution
with open('sst2.train', 'r') as f:
    lines = f.readlines()[:500] 

data = []
for line in lines:
    label, text = line.strip().split(' ', 1)
    data.append((int(label), text))

df = pd.DataFrame(data, columns=['label', 'text'])
df.to_csv("train.csv", index=False) #create csv file with smaller dataset
!aws s3 cp "train.csv" {default_s3_bucket}

Voimme sitten muuntaa tämän muistikirjan a NotebookJobStep seuraavalla koodilla päämuistikirjassamme:

# provide S3 Bucket to dump artifacts in
nb_job_params = {"default_s3_bucket": notebook_artifacts}

preprocess_nb_step = NotebookJobStep(
name=preprocess_step_name,
description=preprocess_description,
notebook_job_name=preprocess_job_name,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
role=role,
input_notebook=preprocess_notebook,
instance_type="ml.m5.4xlarge",
parameters=nb_job_params,
)

Nyt kun meillä on malli-CSV-tiedosto, voimme aloittaa mallimme harjoittamisen harjoitusmuistikirjassamme. Harjoitusmuistikirjamme ottaa saman parametrin S3-ämpäriin ja vetää harjoitustietojoukon alas tästä paikasta. Sitten suoritamme hienosäädön käyttämällä Transformers trainer -objektia seuraavan koodinpätkän kanssa:

from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(output_dir="test_trainer", evaluation_strategy="epoch")

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)

trainer.train()

Hienosäädön jälkeen haluamme suorittaa eräpäätelmän nähdäksemme kuinka malli toimii. Tämä tehdään erillisellä muistikirjalla (prepare-test-set.ipynb) samassa paikallisessa polussa, joka luo testitietojoukon päättelemään koulutetun mallimme käyttöä. Voimme käyttää lisämuistikirjaa harjoitusmuistikirjassamme seuraavalla taikasolulla:

%run 'prepare-test-set.ipynb'

Määrittelemme tämän kannettavan tietokoneen ylimääräisen riippuvuuden kohdassa AdditionalDependencies parametri toisessa kannettavan työvaiheessamme:

train_nb_step = NotebookJobStep(
name=training_step_name,
description=training_description,
notebook_job_name=training_job_name,
input_notebook=training_notebook,
additional_dependencies=[test_data_prep_notebook],
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)

Meidän on myös määritettävä, että harjoitusmuistikirjan työvaihe (vaihe 2) riippuu muistikirjan esikäsittelytyövaiheesta (vaihe 1) käyttämällä add_depends_on API-kutsu seuraavasti:

train_nb_step.add_depends_on([preprocess_nb_step])

Viimeinen vaiheemme on, että BERT-malli suorittaa SageMaker Batch Transform -muunnoksen, samalla kun määrität tiedonkeruun ja laadun SageMaker Model Monitorin avulla. Huomaa, että tämä on eri asia kuin sisäänrakennetun laitteen käyttäminen Muuttaa or kaapata vaiheet putkilinjojen kautta. Tämän vaiheen muistikirjamme suorittaa samat API:t, mutta sitä seurataan muistikirjan työvaiheena. Tämä vaihe riippuu aiemmin määrittämästämme koulutustyövaiheesta, joten kuvaamme sen myös riippuvaisen_on-lipun avulla.

batch_monitor_step = NotebookJobStep(
name=batch_monitor_step_name,
description=batch_monitor_description,
notebook_job_name=batch_monitor_job_name,
input_notebook=batch_monitor_notebook,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)
batch_monitor_step.add_depends_on([train_nb_step])

Kun työnkulkumme eri vaiheet on määritetty, voimme luoda ja suorittaa päästä päähän -putken:

# create pipeline
pipeline = Pipeline(
name=pipeline_name,
steps=[preprocess_nb_step, train_nb_step, batch_monitor_step],
)

# execute pipeline
pipeline.create(session.get_execution_role())
execution = pipeline.start(parameters={})
execution.wait(delay=30, max_attempts=60)
execution_steps = execution.list_steps()
print(execution_steps)

Tarkkaile putkilinjan kulkua

Voit seurata ja valvoa muistikirjan vaiheita SageMaker Pipelines DAG:n kautta, kuten seuraavassa kuvakaappauksessa näkyy.

Voit myös halutessasi seurata yksittäisiä muistikirjan ajoja muistikirjan työn kojelaudassa ja vaihtaa SageMaker Studion käyttöliittymän kautta luotuja tulostiedostoja. Kun käytät tätä toimintoa SageMaker Studion ulkopuolella, voit määrittää käyttäjät, jotka voivat seurata ajon tilaa muistikirjan töiden hallintapaneelissa tunnisteiden avulla. Lisätietoja sisällytettävistä tunnisteista on kohdassa Tarkastele muistikirjatöitäsi ja lataa tulosteita Studion käyttöliittymän kojelaudassa.

Tässä esimerkissä tulostamme tuloksena saadut muistikirjatyöt hakemistoon nimeltä outputs paikallisella polullasi putkilinjan ajokoodin kanssa. Kuten seuraavassa kuvakaappauksessa näkyy, tässä näet syöttömuistikirjan tulosteen ja myös kaikki kyseiselle vaiheelle määrittämäsi parametrit.

Puhdistaa

Jos noudatit esimerkkiämme, muista poistaa luotu liukuhihna, muistikirjatyöt ja esimerkkimuistikirjojen lataamat s3-tiedot.

Huomioita

Seuraavassa on joitain tärkeitä huomioita tästä ominaisuudesta:

  • SDK-rajoitukset – Muistikirjan työvaihe voidaan luoda vain SageMaker Python SDK:n kautta.
  • Kuvan rajoitukset – Muistikirjan työvaihe tukee seuraavia kuvia:

Yhteenveto

Tämän julkaisun myötä datatyöntekijät voivat nyt ohjelmallisesti käyttää muistikirjojaan muutamalla koodirivillä käyttämällä SageMaker Python SDK. Lisäksi voit luoda monimutkaisia ​​monivaiheisia työnkulkuja kannettavien tietokoneiden avulla, mikä vähentää merkittävästi aikaa, joka kuluu siirtymiseen kannettavasta tietokoneesta CI/CD-putkiin. Liukuhihnan luomisen jälkeen voit käyttää SageMaker Studiota tarkastellaksesi ja suorittaaksesi DAG:ita putkistollesi sekä hallita ja vertailla ajoja. Olitpa ajoittamassa päästä päähän ML-työnkulkuja tai osaa niistä, suosittelemme kokeilemaan muistikirjapohjaisia ​​työnkulkuja.


Tietoja kirjoittajista

Anchit Gupta on vanhempi tuotepäällikkö Amazon SageMaker Studiossa. Hän keskittyy vuorovaikutteisten datatieteen ja tietotekniikan työnkulkujen mahdollistamiseen SageMaker Studio IDE:ssä. Vapaa-ajallaan hän nauttii ruoanlaitosta, lauta-/korttipelien pelaamisesta ja lukemisesta.

Ram Vegiraju on ML-arkkitehti SageMaker Service -tiimin kanssa. Hän keskittyy auttamaan asiakkaita rakentamaan ja optimoimaan AI/ML-ratkaisujaan Amazon SageMakerissa. Vapaa-ajallaan hän rakastaa matkustamista ja kirjoittamista.

Edward Sun on vanhempi SDE, joka työskentelee SageMaker Studiossa Amazon Web Services -palvelussa. Hän on keskittynyt rakentamaan interaktiivista ML-ratkaisua ja yksinkertaistamaan asiakaskokemusta integroidakseen SageMaker Studion suosittuihin tietotekniikan ja ML-ekosysteemin teknologioihin. Vapaa-ajallaan Edward on suuri retkeily-, vaellus- ja kalastusfani ja nauttii perheensä kanssa viettämisestä.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen