Seuraa ML-kokeilujasi päästä päähän Data Version Controlin ja Amazon SageMaker Experiments PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Seuraa ML-kokeilujasi päästä päähän Data Version Controlin ja Amazon SageMaker Experimentsin avulla

Datatieteilijät pyrkivät usein ymmärtämään erilaisten tietojen esikäsittelyn ja ominaisuussuunnittelustrategioiden vaikutuksia yhdessä eri malliarkkitehtuurien ja hyperparametrien kanssa. Tämä edellyttää suurten parametritilojen kattamista iteratiivisesti, ja voi olla ylivoimaista pitää kirjaa aiemmin suoritetuista kokoonpanoista ja tuloksista pitäen samalla kokeet toistettavissa.

Tämä viesti opastaa sinut läpi esimerkin siitä, kuinka voit seurata kokeilujasi koodin, datan, artefaktien ja mittareiden välillä käyttämällä Amazon SageMaker -kokeilut yhdessä Datan versionhallinta (DVC). Näytämme, kuinka voit käyttää DVC:tä rinnakkain Amazon Sage Maker käsittely- ja koulutustyöt. Koulutamme erilaisia ​​CatBoost-malleja Kalifornian asuntotietojoukosta StatLib-arkistoja muuttaa pidätysstrategioita samalla kun pidät kirjaa dataversiosta DVC:n avulla. Jokaisessa yksittäisessä kokeilussa seuraamme syötettyjä ja tulostettavia artefakteja, koodia ja mittareita SageMaker Experimentsin avulla.

SageMaker-kokeet

SageMaker Experiments on AWS-palvelu koneoppimiskokeiden (ML) seurantaan. The SageMaker Experiments Python SDK on korkean tason käyttöliittymä tähän palveluun, jonka avulla voit seurata kokeilutietoja Pythonilla.

SageMaker Experimentsin tavoitteena on tehdä kokeiden luomisesta mahdollisimman helppoa, täyttää ne kokeiluilla, lisätä seuranta- ja sukuperätietoja sekä suorittaa analytiikkaa kokeiden ja kokeiden välillä.

Kun keskustelemme SageMaker-kokeista, viittaamme seuraaviin käsitteisiin:

  • Kokeilu – Kokoelma asiaan liittyviä kokeita. Lisäät kokeita kokeiluun, joita haluat verrata keskenään.
  • Oikeudenkäynti – Kuvaus monivaiheisesta ML-työnkulusta. Jokainen työnkulun vaihe on kuvattu kokeilukomponentilla.
  • Kokeilukomponentti – Kuvaus ML-työnkulun yksittäisestä vaiheesta, kuten tietojen puhdistamisesta, ominaisuuksien poimimisesta, mallin harjoittelusta tai mallin arvioinnista.
  • Tracker – Python-kontekstinhallinta yksittäisen kokeilukomponentin tietojen (esimerkiksi parametrien, mittareiden tai artefaktien) kirjaamiseen.

Tietojen versionhallinta

Data Version Control (DVC) on uudenlainen tietojen versiointi-, työnkulku- ja kokeiluhallintaohjelmisto, joka perustuu mennä (vaikka se voi toimia itsenäisesti). DVC vähentää kuilua vakiintuneiden suunnittelutyökalusarjojen ja datatieteen tarpeiden välillä, jolloin voit hyödyntää uusia piirteet samalla kun käytetään olemassa olevia taitoja ja intuitiota.

Datatieteen kokeilujen jakaminen ja yhteistyö voidaan tehdä tavallisen Git-virran kautta (sitoumukset, haarautumiset, taggaukset, vetopyynnöt) samalla tavalla kuin ohjelmistosuunnittelijoille. Gitin ja DVC:n avulla datatieteen ja ML-tiimit voivat versioida kokeiluja, hallita suuria tietojoukkoja ja tehdä projekteista toistettavia.

DVC:ssä on seuraavat ominaisuudet:

  • DVC on a Ilmainen, avoin lähdekoodi komentoriviltä työkalu.
  • DVC toimii Git-varastojen päällä ja sillä on samanlainen komentorivikäyttöliittymä ja -kulku kuin Gitissä. DVC voi toimia myös itsenäisesti, mutta ilman versiointi valmiuksia.
  • Tietojen versiointi otetaan käyttöön korvaamalla suuret tiedostot, tietojoukkohakemistot, ML-mallit ja niin edelleen pienillä metatiedostoja (helppo käsitellä Gitillä). Nämä paikkamerkit osoittavat alkuperäiseen tietoon, joka on irrotettu lähdekoodin hallinnasta.
  • Voit käyttää paikallista tai pilvitallennustilaa tallentaaksesi projektin tiedot erillään sen koodikannasta. Näin datatieteilijät voivat siirtää suuria tietojoukkoja tai jakaa GPU-koulutetun mallin muiden kanssa.
  • DVC tekee datatieteen projekteista toistettavia luomalla kevyitä putkistojen käyttämällä implisiittisiä riippuvuuskaavioita ja koodaamalla siihen liittyvät tiedot ja artefaktit.
  • DVC on alustaagnostikko. Se toimii kaikissa yleisimmissä käyttöjärjestelmissä (Linux, macOS ja Windows) ja toimii riippumatta ohjelmointikielistä (Python, R, Julia, shell-skriptit ja niin edelleen) tai ML-kirjastoista (Keras, TensorFlow, PyTorch, Scipy ja niin edelleen) enemmän) käytetään hankkeessa.
  • DVC on nopea asentaa eikä se vaadi erityistä infrastruktuuria, eikä se ole riippuvainen sovellusliittymistä tai ulkoisista palveluista. Se on erillinen CLI-työkalu.

SageMaker Experiments ja DVC-näyte

Seuraavat GitHub-näyte näyttää kuinka DVC:tä käytetään SageMaker-ympäristössä. Tarkastelemme erityisesti, kuinka voit luoda mukautetun kuvan DVC-kirjastoilla, jotka on asennettu oletusarvoisesti, jotta voit tarjota johdonmukaisen kehitysympäristön tietotutkijoillesi. Amazon SageMaker Studioja kuinka käyttää DVC:tä yhdessä SageMakerin hallitun infrastruktuurin kanssa käsittelyä ja koulutusta varten. Lisäksi näytämme, kuinka SageMaker-seurantatietoja rikastetaan DVC:n dataversiointitiedoilla ja visualisoidaan ne Studio-konsolissa.

Seuraava kaavio havainnollistaa ratkaisun arkkitehtuuria ja työnkulkua.

Luo mukautettu Studio-kuva, jossa DVC on jo asennettu

Tässä GitHub-arkisto, selitämme kuinka luodaan mukautettu kuva Studiolle, johon on jo asennettu DVC. Kuvan luomisen ja kaikkien Studion käyttäjien saataville asettamisen etuna on, että se luo Studion käyttäjille yhtenäisen ympäristön, jota he voivat myös käyttää paikallisesti. Vaikka näyte perustuu AWS-pilvi9, voit myös rakentaa kontin paikalliselle koneellesi, kunhan Docker on asennettuna ja käynnissä. Tämä näyte perustuu seuraavaan Dockerfile ja ympäristö.yml. Tuloksena oleva Docker-kuva tallennetaan Amazonin elastisten säiliörekisteri (Amazon EMR) AWS-tililläsi. Katso seuraava koodi:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

Voit nyt luo uusi Studio-verkkotunnus or päivittää olemassa oleva Studio-verkkotunnus jolla on pääsy äskettäin luotuun Docker-kuvaan.

Käytämme AWS Cloud Development Kit (AWS CDK) luodaksesi seuraavat resurssit kautta AWS-pilven muodostuminen:

  • SageMaker-suoritusrooli, jolla on oikeat oikeudet uuteen tai olemassa olevaan Studio-verkkotunnukseesi
  • SageMaker-kuva ja SageMaker-kuvaversio Docker-kuvasta conda-env-dvc-kernel jonka loimme aiemmin
  • An AppImageConfig joka määrittää kuinka ytimen yhdyskäytävä tulee määrittää
  • Studion käyttäjä (data-scientist-dvc), jossa on oikea SageMaker-suoritusrooli ja sen käytettävissä oleva mukautettu Studio-kuva

Katso tarkemmat ohjeet osoitteesta Liitä mukautettu kuva SageMaker Studioon.

Suorita laboratorio

Suorita laboratorio suorittamalla seuraavat vaiheet:

  1. Käynnistä Studio-verkkotunnuksessa Studio for the data-scientist-dvc käyttäjälle.
  2. Valitse Git-kuvake ja valitse sitten Kloonaa arkisto.
    Kloonaa arkisto
  3. Anna arkiston URL-osoite (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) ja valitse klooni.Kloonaa repo-painike
  4. Valitse tiedostoselaimessa amazon-sagemaker-experiments-dvc-demo arkistoon.
  5. Avaa dvc_sagemaker_script_mode.ipynb muistikirja.
  6. varten Mukautettu kuva, valitse kuva conda-env-dvc-kernel.
  7. Valita valita.
    conda-env-dvc-kernel

Määritä DVC tietojen versiointia varten

Luomme alihakemiston, jossa valmistelemme tiedot: sagemaker-dvc-sample. Tässä alihakemistossa alustamme uuden Git-arkiston ja asetamme kaukosäätimen arkistoon, jonka luomme AWS CodeCommit. Tavoitteena on saada DVC-määritykset ja tiedostot tietojen seurantaa varten versioituiksi tähän arkistoon. Git tarjoaa kuitenkin alkuperäisiä ominaisuuksia aliprojektien hallintaan esimerkiksi git-alimoduulien ja git-alipuiden kautta, ja voit laajentaa tätä näytettä käyttämään mitä tahansa edellä mainituista työkaluista, jotka sopivat parhaiten työnkulkuusi.

Suurin etu CodeCommitin käyttämisestä SageMakerin kanssa meidän tapauksessamme on sen integrointi AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) todennusta ja valtuutusta varten, mikä tarkoittaa, että voimme käyttää IAM-rooleja tiedon työntämiseen ja hakemiseen ilman valtuustietojen (tai SSH-avaimien) hakemista. Asettamalla asianmukaiset oikeudet SageMaker-suoritusroolille mahdollistaa myös Studio-muistikirjan ja SageMaker-koulutus- ja käsittelytyön turvallisen vuorovaikutuksen CodeCommitin kanssa.

Vaikka voit korvata CodeCommitin millä tahansa muulla lähteen hallintapalvelulla, kuten GitHubilla, Gitlabilla tai Bitbucketilla, sinun on harkittava, kuinka voit käsitellä järjestelmäsi valtuustietoja. Yksi mahdollisuus on tallentaa nämä tunnistetiedot AWS -salaisuuksien hallinta ja noutaa ne ajon aikana Studio-muistikirjasta sekä SageMaker-käsittely- ja koulutustöistä.

Käynnistä DVC

Käsittele ja harjoittele DVC:llä ja SageMakerilla

Tässä osiossa tutkimme kahta erilaista lähestymistapaa ongelmamme ratkaisemiseksi ja sitä, kuinka voimme seurata kahta testiä käyttämällä SageMaker Experiments -kokeita korkean tason käsitteellisen arkkitehtuurin mukaisesti, jonka näytimme sinulle aiemmin.

Määritä SageMaker-kokeilu

Jotta voimme seurata tätä testiä SageMakerissa, meidän on luotava kokeilu. Meidän on myös määriteltävä kokeilu kokeessa. Yksinkertaisuuden vuoksi harkitsemme vain yhtä kokeilua kokeilua varten, mutta kokeilussa voi olla mikä tahansa määrä kokeita, esimerkiksi jos haluat testata erilaisia ​​algoritmeja.

Luomme kokeilun nimeltä DEMO-sagemaker-experiments-dvc kahdella kokeella, dvc-trial-single-file ja dvc-trial-multi-files, joista jokainen edustaa tietojoukon eri versiota.

Luodaan DEMO-sagemaker-experiments-dvc koe:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Testi 1: Luo yksittäisiä tiedostoja koulutusta ja validointia varten

Tässä osiossa luomme käsittelyskriptin, joka hakee raakatiedot suoraan Amazonin yksinkertainen tallennuspalvelu (Amazon S3) tulona; käsittelee sen luodakseen junan, validoinnin ja testauksen tietojoukot; ja tallentaa tulokset takaisin Amazon S3:lle DVC:n avulla. Lisäksi näytämme, kuinka voit seurata DVC:n tuottamia artefakteja SageMakerilla suoritettaessa prosessointi- ja koulutustöitä sekä SageMaker-kokeilujen kautta.

Ensin luomme dvc-trial-single-file kokeiluversio ja lisää se DEMO-sagemaker-experiments-dvc koe. Näin toimimalla pidämme kaikki tähän testiin liittyvät kokeilukomponentit mielekkäällä tavalla järjestettyinä.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Käytä DVC:tä SageMaker-käsittelytyössä yksittäisen tiedoston version luomiseen

Tässä osiossa luomme käsittelykomentosarjan, joka saa raakadatan suoraan Amazon S3:sta syötteenä käyttämällä SageMakerin hallittua tiedonlatausominaisuutta; käsittelee sen luodakseen junan, validoinnin ja testauksen tietojoukot; ja tallentaa tulokset takaisin Amazon S3:lle DVC:n avulla. On erittäin tärkeää ymmärtää, että kun käytämme DVC:tä tietojen tallentamiseen Amazon S3:een (tai tietojen hakemiseen Amazon S3:sta), menetämme SageMakerin hallitun datan latauskyvyn, mikä voi mahdollisesti vaikuttaa käsittely- ja koulutustöiden suorituskykyyn ja kustannuksiin. , varsinkin kun työskentelet erittäin suurten tietojoukkojen kanssa. Lisätietoja SageMakerin natiivitulotilan ominaisuuksista on kohdassa Käytä koulutustietoja.

Lopuksi yhdistämme DVC-seurantaominaisuudet SageMaker-seurantaominaisuuksiin, kun suoritamme käsittelytöitä SageMaker Experimentsin kautta.

Käsittelyskripti odottaa Git-tietovaraston osoitteen ja luotavan haaran tallentamaan ympäristömuuttujien kautta välitetyt DVC-metatiedot. Itse tietojoukot on tallennettu Amazon S3:een DVC:n toimesta. Vaikka ympäristömuuttujia seurataan automaattisesti SageMaker Experimentsissa ja ne näkyvät kokeilukomponenttiparametreissa, saatamme haluta rikastaa kokeilukomponentteja lisätiedoilla, jotka ovat sitten saatavilla visualisoitaviksi Studion käyttöliittymässä seurantaobjektin avulla. Meidän tapauksessamme kokeilukomponenttien parametrit sisältävät seuraavat:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

Esikäsittelykomentosarja kloonaa Git-arkiston; luo juna-, validointi- ja testitietojoukot; ja synkronoi sen DVC:n avulla. Kuten aiemmin mainittiin, DVC:tä käytettäessä emme voi hyödyntää SageMakerin alkuperäisiä tiedonlatausominaisuuksia. Sen lisäksi, että suurista tietojoukoista saatamme kärsiä suoritusrangaistuksia, menetämme myös tulosteartefaktien automaattiset seurantaominaisuudet. Seuraajan ja DVC Python API:n ansiosta voimme kuitenkin kompensoida nämä puutteet, hakea tällaiset tiedot ajon aikana ja tallentaa ne kokeilukomponenttiin pienellä vaivalla. Näin toimimalla saadaan lisäarvoa, että sinulla on yksi näkymä tähän tiettyyn käsittelytyöhön kuuluvista syöttö- ja tulostusartefakteista.

Täysi esikäsittely Python-skripti on saatavilla osoitteessa GitHub repo.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMaker antaa meille mahdollisuuden suorittaa käsittelyskriptimme AWS:n hallinnoimissa säilökuvissa, jotka on optimoitu toimimaan AWS-infrastruktuurissa. Jos komentosarjamme vaatii lisäriippuvuuksia, voimme toimittaa a requirements.txt tiedosto. Kun aloitamme käsittelytyön, SageMaker käyttää pip-install asentaaksesi kaikki tarvitsemamme kirjastot (esimerkiksi DVC:hen liittyvät kirjastot). Jos haluat hallita tiukemmin kaikkia kontteihin asennettuja kirjastoja, voit tuoda oman kontin SageMakeriin esim. käsittely ja koulutus.

Meillä on nyt kaikki ainekset SageMaker-käsittelytyömme suorittamiseen:

  • Käsittelyskripti, joka voi käsitellä useita argumentteja (--train-test-split-ratio) ja kaksi ympäristömuuttujaa (DVC_REPO_URL ja DVC_BRANCH)
  • A requiremets.txt tiedosto
  • Git-arkisto (CodeCommitissa)
  • SageMaker-kokeilu ja kokeilu
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Suoritamme sitten käsittelytyön kanssa preprocessing-experiment.py käsikirjoitus, experiment_config, dvc_repo_urlja dvc_branch määritimme aiemmin.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

Käsittelytehtävän suorittaminen kestää noin 5 minuuttia. Nyt voit tarkastella yksittäisen tiedoston tietojoukon kokeilun yksityiskohtia.

Seuraava kuvakaappaus näyttää, mistä löydät tallennetut tiedot Studiossa. Huomaa arvot kohteelle dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URLja data_commit_hash på den parametrit Tab.

SageMaker Experiments -parametrit-välilehti

Huomioi myös syöttö- ja lähtötiedot Esineet Tab.

SageMaker Experiments -artefaktit -välilehti

Luo estimaattori ja sovita malli yhden tiedoston dataversiolla

Käyttääksemme DVC-integraatiota SageMaker-harjoitustyön sisällä hyväksymme a dvc_repo_url ja dvc_branch ympäristömuuttujina, kun luot Estimator-objektin.

Harjoittelemme dvc-trial-single-file haara ensin.

Kun haemme tietoja DVC:llä, käytämme seuraavaa tietojoukkorakennetta:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

Nyt luomme Scikit-learn Estimatorin käyttämällä SageMaker Python SDK. Tämän avulla voimme määrittää seuraavat:

  • Polku Python-lähdetiedostoon, joka tulee suorittaa koulutuksen aloituspisteenä.
  • IAM-rooli, joka hallitsee Amazon S3- ja CodeCommit-tietojen käyttöoikeuksia ja SageMaker-toimintojen suorittamista.
  • Luettelo sanakirjoista, jotka määrittelevät koulutustöiden arvioinnissa käytetyt tiedot.
  • Koulutustapahtumien lukumäärä ja tyyppi. Käytämme yhtä ml.m5.suuria esiintymää.
  • Hyperparametrit, joita käytetään harjoitteluun.
  • Ympäristömuuttujat, joita käytetään koulutustyön aikana. Käytämme DVC_REPO_URL, DVC_BRANCHja USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Kutsumme estimaattorin sovitusmenetelmää aiemmin määrittämämme experiment_config avulla harjoituksen aloittamiseksi.

%%time
estimator.fit(experiment_config=experiment_config)

Koulutustehtävän suorittaminen kestää noin 5 minuuttia. Lokeissa näkyvät nämä rivit, jotka osoittavat DVC:n vetämät tiedostot:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

Testi 2: Luo useita tiedostoja koulutusta ja validointia varten

Luomme uuden dvc-trial-multi-files kokeiluversio ja lisää se nykyiseen DEMO-sagemaker-experiments-dvc koe.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Toisin kuin ensimmäisessä käsittelykomentosarjassa, luomme nyt alkuperäisestä tietojoukosta useita tiedostoja koulutusta ja validointia varten ja tallennamme DVC-metatiedot eri haaraan.

Voit tutustua toiseen esikäsittelyyn Python-skriptiin GitHub.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

Käsittelytehtävän suorittaminen kestää noin 5 minuuttia. Nyt voit tarkastella monitiedostoisen tietojoukon kokeilujakson tietoja.

Seuraavat kuvakaappaukset näyttävät, mistä löydät tallennetut tiedot SageMaker Experiments -sovelluksessa Koekomponentit -osio Studion käyttöliittymässä. Huomaa arvot kohteelle dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URLja data_commit_hash på den parametrit Tab.

SageMakerin useiden tiedostojen kokeilujen parametrien välilehti

Voit myös tarkastella tulo- ja tulostietoja Esineet Tab.

SageMakerin useiden tiedostojen kokeiden artefaktit-välilehti

Nyt harjoittelemme dvc-trial-multi-files haara. Kun haemme tietoja DVC:llä, käytämme seuraavaa tietojoukkorakennetta:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

Kuten aiemminkin, luomme uuden Scikit-learn Estimatorin kokeilun nimellä dvc-trial-multi-files ja aloittaa koulutustyön.

%%time

estimator.fit(experiment_config=experiment_config)

Koulutustehtävän suorittaminen kestää noin 5 minuuttia. Muistikirjaan tulostetuissa koulutustyölokeissa näet nämä rivit, jotka osoittavat DVC:n vetämät tiedostot:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

Isännöi mallisi SageMakerissa

Kun olet kouluttanut ML-mallisi, voit ottaa sen käyttöön SageMakerilla. Käytämme jatkuvaa, reaaliaikaista päätepistettä, joka tekee yhden ennusteen kerrallaan, käyttöön SageMakerin reaaliaikaiset isännöintipalvelut.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

Ensin saamme uusimman testitietojoukon paikallisesti Studion kehitysmuistikirjaan. Tätä tarkoitusta varten voimme käyttää dvc.api.read() ladataksesi raakadatan, jonka SageMaker-käsittelytyö on tallentanut Amazon S3:een.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

Sitten valmistelemme tiedot Pandasin avulla, lataamme testi-CSV-tiedoston ja soitamme predictor.predict kutsua aiemmin luotua SageMaker-päätepistettä tiedoilla ja saada ennusteita.

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

Poista päätepiste

Sinun tulee poistaa päätepisteet, kun ne eivät ole enää käytössä, koska ne laskutetaan käyttöönoton yhteydessä (lisätietoja on kohdassa Amazon SageMaker -hinnoittelu). Muista poistaa päätepiste odottamattomien kustannusten välttämiseksi.

predictor.delete_endpoint()

Puhdistaa

Ennen kuin poistat kaikki luomasi resurssit, varmista, että kaikki sovellukset on poistettu data-scientist-dvc käyttäjä, mukaan lukien kaikki KernelGateway-sovellukset, sekä oletusarvoinen JupiterServer-sovellus.

Sitten voit tuhota AWS CDK -pinon suorittamalla seuraavan komennon:

cdk destroy

Jos käytit olemassa olevaa verkkotunnusta, suorita myös seuraavat komennot:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

Yhteenveto

Tässä viestissä kävit läpi esimerkin siitä, kuinka voit seurata kokeilujasi koodin, datan, artefaktien ja mittareiden välillä käyttämällä SageMaker Experiments- ja SageMaker-käsittely- ja koulutustöitä yhdessä DVC:n kanssa. Loimme DVC:tä sisältävän Docker-kuvan, joka vaadittiin Studiolle kehitysmuistikirjana, ja osoitimme, kuinka voit käyttää käsittely- ja koulutustöitä DVC:n kanssa. Valmistelimme tiedoista kaksi versiota ja käytimme DVC:tä niiden hallintaan Gitin avulla. Sitten käytit SageMaker Experiments -ohjelmaa tietojen käsittelyn ja harjoittamisen seuraamiseen kahdella dataversiolla, jotta saat yhtenäisen näkymän parametreista, artefakteista ja mittareista yhdessä lasiruudussa. Lopuksi otit mallin käyttöön SageMaker-päätepisteessä ja käytit testaustietojoukkoa toisesta tietojoukkoversiosta kutsuaksesi SageMaker-päätepistettä ja saadaksesi ennusteita.

Seuraavana vaiheena voit laajentaa olemassa olevaa kannettavaa tietokonetta ja ottaa käyttöön oman ominaisuussuunnittelustrategiasi ja käyttää DVC:tä ja SageMakeria kokeilujen suorittamiseen. Lähdetään rakentamaan!

Lue lisää seuraavista lähteistä:


Tietoja Tekijät

Paolo di FrancescoPaolo di Francesco on ratkaisuarkkitehti AWS:ssä. Hänellä on kokemusta tietoliikenne- ja ohjelmistosuunnittelusta. Hän on intohimoinen koneoppimisesta ja keskittyy tällä hetkellä käyttämään kokemustaan ​​auttaakseen asiakkaita saavuttamaan tavoitteensa AWS:ssä, erityisesti MLOps-keskusteluissa. Työn ulkopuolella hän nauttii jalkapallon pelaamisesta ja lukemisesta.

Eitan SelaEitan Sela on koneoppimisen asiantuntijaratkaisujen arkkitehti Amazon Web Services -palvelussa. Hän työskentelee AWS-asiakkaiden kanssa tarjotakseen ohjausta ja teknistä tukea, mikä auttaa heitä rakentamaan ja käyttämään koneoppimisratkaisuja AWS:ssä. Vapaa-ajallaan Eitan nauttii lenkkeilystä ja uusimpien koneoppimisartikkelien lukemisesta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen