Sledite svojim eksperimentom ML od začetka do konca s Data Version Control in Amazon SageMaker Experiments PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Sledite svojim poskusom ML od konca do konca z nadzorom različic podatkov in poskusi Amazon SageMaker

Podatkovni znanstveniki si pogosto prizadevajo razumeti učinke različnih strategij predobdelave podatkov in inženiringa funkcij v kombinaciji z različnimi arhitekturami modelov in hiperparametri. To zahteva, da iterativno pokrivate velike prostore parametrov, zato je lahko izjemno težko slediti predhodno izvedenim konfiguracijam in rezultatom, hkrati pa ohranjati ponovljivost poskusov.

Ta objava vas vodi skozi primer, kako sledite svojim poskusom prek kode, podatkov, artefaktov in meritev z uporabo Eksperimenti Amazon SageMaker v povezavi z Nadzor različic podatkov (DVC). Pokažemo, kako lahko uporabljate DVC vzporedno z Amazon SageMaker predelava in usposabljanje. Usposabljamo različne modele CatBoost na kalifornijskem nizu podatkov o stanovanjih iz Repozitorij StatLibin spremenite strategije zadrževanja, medtem ko spremljate različico podatkov z DVC. V vsakem posameznem poskusu sledimo vhodnim in izhodnim artefaktom, kodi in metrikam z uporabo SageMaker Experiments.

Poskusi SageMaker

SageMaker Experiments je storitev AWS za sledenje poskusom strojnega učenja (ML). The SageMaker Experiments Python SDK je vmesnik na visoki ravni za to storitev, ki vam pomaga slediti eksperimentalnim informacijam z uporabo Pythona.

Cilj SageMaker Experiments je čim bolj poenostaviti ustvarjanje poskusov, jih zapolniti s poskusi, dodati informacije o sledenju in rodu ter izvajati analitiko med poskusi in eksperimenti.

Ko razpravljamo o poskusih SageMaker, se sklicujemo na naslednje koncepte:

  • Preizkusna – Zbirka povezanih poskusov. Eksperimentu dodate poskuse, ki jih želite skupaj primerjati.
  • Trial – Opis večstopenjskega poteka dela ML. Vsak korak v delovnem procesu je opisan s preizkusno komponento.
  • Preskusna komponenta – Opis posameznega koraka v delovnem toku ML, kot je čiščenje podatkov, ekstrakcija funkcij, usposabljanje modela ali vrednotenje modela.
  • Tracker – Upravljalnik konteksta Python za beleženje informacij o posamezni preskusni komponenti (na primer parametri, meritve ali artefakti).

Nadzor različic podatkov

Data Version Control (DVC) je nova vrsta programske opreme za upravljanje različic podatkov, poteka dela in eksperimentov, ki temelji na git (čeprav lahko deluje samostojno). DVC zmanjšuje vrzel med uveljavljenimi nabori inženirskih orodij in potrebami podatkovne znanosti, kar vam omogoča, da izkoristite nove lastnosti ob ponovni uporabi obstoječih veščin in intuicije.

Skupna raba eksperimentov v znanosti o podatkih in sodelovanje je mogoče izvesti prek običajnega toka Git (zaveza, razvejanje, označevanje, zahteve za vlečenje) na enak način, kot to deluje za programske inženirje. Z Git in DVC lahko ekipe za podatkovno znanost in strojno učenje verzirajo eksperimente, upravljajo velike nabore podatkov in naredijo projekte ponovljive.

DVC ima naslednje lastnosti:

  • DVC je a brezplačno, odprtokodno ukazni vrstici orodje.
  • DVC deluje na vrhu repozitorijev Git in ima podoben vmesnik in potek ukazne vrstice kot Git. DVC lahko deluje tudi samostojno, vendar brez različic zmogljivosti.
  • Različice podatkov so omogočene z zamenjavo velikih datotek, imenikov naborov podatkov, modelov ML in tako naprej z majhnimi metadatoteke (lahek za uporabo z Gitom). Ti nadomestni znaki kažejo na izvirne podatke, ki so ločeni od upravljanja izvorne kode.
  • Za shranjevanje podatkov projekta ločeno od baze kode lahko uporabite lokalno shrambo ali shrambo v oblaku. Tako lahko podatkovni znanstveniki prenašajo velike nabore podatkov ali z drugimi delijo model, usposobljen z GPU.
  • DVC omogoča ponovljive projekte podatkovne znanosti z ustvarjanjem lahkih cevovodov z uporabo implicitnih grafov odvisnosti in s kodificiranjem vključenih podatkov in artefaktov.
  • DVC je neodvisen od platforme. Deluje v vseh glavnih operacijskih sistemih (Linux, macOS in Windows) in deluje neodvisno od programskih jezikov (Python, R, Julia, lupinski skripti itd.) ali knjižnic ML (Keras, TensorFlow, PyTorch, Scipy in več), uporabljenih v projektu.
  • DVC je hiter namestitev in ne zahteva posebne infrastrukture, niti ni odvisen od API-jev ali zunanjih storitev. Je samostojno orodje CLI.

Eksperimenti SageMaker in vzorec DVC

Naslednja GitHub vzorec prikazuje, kako uporabljati DVC v okolju SageMaker. Zlasti si ogledamo, kako zgraditi sliko po meri s privzeto nameščenimi knjižnicami DVC, da zagotovimo dosledno razvojno okolje vašim podatkovnim znanstvenikom v Amazon SageMaker Studioin kako zagnati DVC poleg upravljane infrastrukture SageMaker za obdelavo in usposabljanje. Poleg tega pokažemo, kako obogatiti informacije o sledenju SageMaker z informacijami o različicah podatkov iz DVC in jih vizualizirati v konzoli Studio.

Naslednji diagram ponazarja arhitekturo rešitve in potek dela.

Zgradite sliko Studio po meri z že nameščenim DVC

V tem primeru GitHub repozitorij, pojasnjujemo, kako ustvariti sliko po meri za Studio, ki ima že nameščen DVC. Prednost ustvarjanja slike in njene dostopnosti vsem uporabnikom Studia je v tem, da ustvari konsistentno okolje za uporabnike Studia, ki ga lahko izvajajo tudi lokalno. Čeprav vzorec temelji na AWS Cloud9, lahko vsebnik sestavite tudi na vašem lokalnem računalniku, če imate nameščen in zagnan Docker. Ta vzorec temelji na naslednjem Dockerfile in okolje.yml. Nastala slika Dockerja je shranjena v Registar elastičnih zabojnikov Amazon (Amazon EMR) v vašem računu AWS. Oglejte si naslednjo kodo:

# 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}

Zdaj lahko ustvarite novo domeno Studio or posodobite obstoječo domeno Studio ki ima dostop do novo ustvarjene slike Docker.

Mi uporabljamo Komplet za razvoj oblaka AWS (AWS CDK), da ustvarite naslednje vire prek Oblikovanje oblaka AWS:

  • Izvršilna vloga SageMaker s pravimi dovoljenji za vašo novo ali obstoječo domeno Studio
  • Slika SageMaker in različica slike SageMaker iz slike Docker conda-env-dvc-kernel ki smo jih prej ustvarili
  • An AppImageConfig ki določa, kako naj bo konfiguriran prehod jedra
  • Uporabnik Studia (data-scientist-dvc) s pravilno izvajalsko vlogo SageMaker in sliko Studio po meri, ki ji je na voljo

Za podrobna navodila glejte Povežite sliko po meri s SageMaker Studio.

Vodi laboratorij

Za zagon laboratorija izvedite naslednje korake:

  1. V domeni Studio zaženite Studio za data-scientist-dvc uporabnik.
  2. Izberite ikono Git in nato izberite Klonirajte repozitorij.
    Klonirajte repozitorij
  3. Vnesite URL repozitorija (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) in izberite Clone.Gumb za kloniranje repoja
  4. V brskalniku datotek izberite amazon-sagemaker-experiments-dvc-demo skladišče.
  5. odprite dvc_sagemaker_script_mode.ipynb zvezek.
  6. za Slika po meri, izberite sliko conda-env-dvc-kernel.
  7. Izberite Izberite.
    conda-env-dvc-kernel

Konfigurirajte DVC za različico podatkov

Ustvarimo podimenik, kjer pripravimo podatke: sagemaker-dvc-sample. Znotraj tega podimenika inicializiramo nov repozitorij Git in nastavimo oddaljeni repozitorij, ki ga ustvarimo v AWS CodeCommit. Cilj je imeti konfiguracije DVC in datoteke za sledenje podatkov v tem repozitoriju. Vendar pa Git ponuja izvorne zmogljivosti za upravljanje podprojektov prek, na primer, podmodulov git in poddreves git, ta vzorec pa lahko razširite tako, da uporabite katero koli od zgoraj omenjenih orodij, ki najbolje ustrezajo vašemu delovnemu toku.

Glavna prednost uporabe CodeCommit s SageMakerjem v našem primeru je njegova integracija s AWS upravljanje identitete in dostopa (IAM) za preverjanje pristnosti in avtorizacijo, kar pomeni, da lahko uporabljamo vloge IAM za potiskanje in vlečenje podatkov brez potrebe po pridobivanju poverilnic (ali ključev SSH). Nastavitev ustreznih dovoljenj za vlogo izvajanja SageMaker prav tako omogoča varno interakcijo prenosnika Studio in opravila za usposabljanje in obdelavo SageMaker s CodeCommit.

Čeprav lahko CodeCommit zamenjate s katero koli drugo storitvijo za nadzor vira, kot je GitHub, Gitlab ali Bitbucket, morate razmisliti, kako ravnati s poverilnicami za svoj sistem. Ena od možnosti je, da te poverilnice shranite na Upravitelj skrivnosti AWS in jih prenesite med izvajanjem iz prenosnega računalnika Studio ter iz opravil obdelave in usposabljanja SageMaker.

Zaženi DVC

Obdelajte in učite z DVC in SageMaker

V tem razdelku raziskujemo dva različna pristopa za reševanje naše težave in kako lahko sledimo obema preizkusoma z uporabo eksperimentov SageMaker v skladu s konceptualno arhitekturo na visoki ravni, ki smo vam jo pokazali prej.

Nastavite poskus SageMaker

Za sledenje temu testu v SageMakerju moramo ustvariti poskus. Opredeliti moramo tudi poskus znotraj eksperimenta. Zaradi poenostavitve upoštevamo le en preizkus za poskus, vendar lahko imate poljubno število poskusov v poskusu, če želite na primer preizkusiti različne algoritme.

Ustvarimo poskus z imenom DEMO-sagemaker-experiments-dvc z dvema poskusoma, dvc-trial-single-file in dvc-trial-multi-files, pri čemer vsak predstavlja drugo različico nabora podatkov.

Ustvarimo DEMO-sagemaker-experiments-dvc poskus:

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

Preizkus 1: Ustvari posamezne datoteke za usposabljanje in validacijo

V tem razdelku ustvarimo skript za obdelavo, ki pridobiva neobdelane podatke neposredno iz Preprosta storitev shranjevanja Amazon (Amazon S3) kot vhod; obdeluje, da ustvari nabore podatkov za usposabljanje, validacijo in testiranje; in shrani rezultate nazaj v Amazon S3 z uporabo DVC. Poleg tega pokažemo, kako lahko sledite izhodnim artefaktom, ki jih ustvari DVC s SageMakerjem, ko izvajate opravila obdelave in usposabljanja ter prek eksperimentov SageMaker.

Najprej ustvarimo dvc-trial-single-file preizkus in ga dodajte v DEMO-sagemaker-experiments-dvc poskus. S tem ohranjamo vse komponente preskusa, povezane s tem testom, organizirane na smiseln način.

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

Uporabite DVC v opravilu obdelave SageMaker, da ustvarite različico ene datoteke

V tem razdelku ustvarimo skript za obdelavo, ki dobi neobdelane podatke neposredno iz Amazona S3 kot vhod z uporabo zmožnosti upravljanega nalaganja podatkov SageMakerja; obdeluje, da ustvari nabore podatkov za usposabljanje, validacijo in testiranje; in shrani rezultate nazaj v Amazon S3 z uporabo DVC. Zelo pomembno je razumeti, da pri uporabi DVC za shranjevanje podatkov v Amazon S3 (ali črpanje podatkov iz Amazona S3) izgubljamo zmožnosti nalaganja podatkov, ki jih upravlja SageMaker, kar lahko potencialno vpliva na zmogljivost in stroške naših opravil obdelave in usposabljanja. , zlasti pri delu z zelo velikimi zbirkami podatkov. Za več informacij o različnih zmožnostih izvornega načina vnosa SageMaker glejte Dostop do podatkov o usposabljanju.

Nazadnje združujemo zmožnosti sledenja DVC z zmogljivostmi sledenja SageMaker pri izvajanju opravil obdelave prek SageMaker Experiments.

Skript za obdelavo pričakuje naslov repozitorija Git in veje, ki jo želimo ustvariti za shranjevanje metapodatkov DVC, posredovanih prek spremenljivk okolja. Podatkovne nize v Amazon S3 shrani DVC. Čeprav se spremenljivke okolja samodejno spremljajo v SageMaker Experiments in so vidne v parametrih preskusne komponente, bomo morda želeli obogatiti preskusne komponente z dodatnimi informacijami, ki bodo nato na voljo za vizualizacijo v uporabniškem vmesniku Studio z uporabo sledilnega objekta. V našem primeru parametri preskusnih komponent vključujejo naslednje:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

Skript za predprocesiranje klonira repozitorij Git; generira nize podatkov o usposabljanju, validaciji in testiranju; in ga sinhronizira z uporabo DVC. Kot smo že omenili, pri uporabi DVC ne moremo izkoristiti domačih zmožnosti nalaganja podatkov SageMaker. Poleg zmanjšanja zmogljivosti, ki bi ga lahko utrpeli pri velikih naborih podatkov, izgubimo tudi zmožnosti samodejnega sledenja za izhodne artefakte. Vendar pa lahko zahvaljujoč sledilniku in API-ju DVC Python nadomestimo te pomanjkljivosti, pridobimo take informacije med izvajanjem in jih shranimo v preizkusno komponento z malo truda. Dodana vrednost s tem je imeti v enem samem pogledu vhodne in izhodne artefakte, ki pripadajo temu posebnemu opravilu obdelave.

Celoten skript Python za predprocesiranje je na voljo v 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 nam daje možnost izvajanja našega skripta za obdelavo na slikah vsebnikov, ki jih upravlja AWS, ki so optimizirane za delovanje v infrastrukturi AWS. Če naš skript zahteva dodatne odvisnosti, lahko zagotovimo a requirements.txt mapa. Ko začnemo obdelavo, SageMaker uporabi pip-install da namestimo vse knjižnice, ki jih potrebujemo (na primer knjižnice, povezane z DVC). Če morate imeti strožji nadzor nad vsemi knjižnicami, nameščenimi na vsebnikih, lahko v SageMaker prinesete svoj vsebnik, na primer za obravnavati in usposabljanje.

Zdaj imamo vse sestavine za izvajanje našega dela obdelave SageMaker:

  • Skript za obdelavo, ki lahko obdela več argumentov (--train-test-split-ratio) in dve okoljski spremenljivki (DVC_REPO_URL in DVC_BRANCH)
  • A requiremets.txt datoteka
  • Repozitorij Git (v CodeCommit)
  • Eksperiment in preizkus SageMaker
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
}

Nato zaženemo obdelavo z preprocessing-experiment.py skripta, experiment_config, dvc_repo_urlin dvc_branch smo definirali prej.

%%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"]
)

Posel obdelave traja približno 5 minut. Zdaj si lahko ogledate podrobnosti preskusa za eno datoteko.

Naslednji posnetek zaslona prikazuje, kje lahko najdete shranjene informacije v Studiu. Upoštevajte vrednosti za dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URLin data_commit_hash o parametri tab.

Zavihek s parametri SageMaker Experiments

Upoštevajte tudi vhodne in izhodne podrobnosti na Artefakte tab.

Zavihek artefaktov SageMaker Experiments

Ustvarite ocenjevalec in prilagodite model z različico podatkov ene datoteke

Za uporabo integracije DVC znotraj izobraževalnega opravila SageMaker posredujemo a dvc_repo_url in dvc_branch kot spremenljivke okolja, ko ustvarite objekt Estimator.

Treniramo na dvc-trial-single-file najprej veja.

Pri pridobivanju podatkov z DVC uporabljamo naslednjo strukturo nabora podatkov:

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

Zdaj ustvarimo Scikit-learn Estimator z uporabo SDK SageMaker Python. To nam omogoča, da določimo naslednje:

  • Pot do izvorne datoteke Python, ki jo je treba zagnati kot vstopno točko za usposabljanje.
  • Vloga IAM, ki nadzoruje dovoljenja za dostop do podatkov Amazon S3 in CodeCommit ter izvajanje funkcij SageMaker.
  • Seznam slovarjev, ki opredeljujejo metrike, ki se uporabljajo za ocenjevanje delovnih mest za usposabljanje.
  • Število in vrsta primerkov usposabljanja. Uporabljamo en ml.m5.velik primerek.
  • Hiperparametri, ki se uporabljajo za usposabljanje.
  • Spremenljivke okolja za uporabo med usposabljanjem. Uporabljamo DVC_REPO_URL, DVC_BRANCHin 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
}

Za začetek usposabljanja pokličemo metodo prileganja ocenjevalca z eksperimentalno konfiguracijo, ki smo jo definirali prej.

%%time
estimator.fit(experiment_config=experiment_config)

Delo usposabljanja traja približno 5 minut. Dnevniki prikazujejo te vrstice, ki označujejo datoteke, ki jih je pridobil DVC:

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']

Preizkus 2: Ustvarite več datotek za usposabljanje in validacijo

Ustvarjamo novo dvc-trial-multi-files preizkus in ga dodajte trenutnemu DEMO-sagemaker-experiments-dvc poskus.

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

Za razliko od prvega skripta za obdelavo zdaj iz izvirnega nabora podatkov ustvarimo več datotek za usposabljanje in validacijo ter shranimo metapodatke DVC v drugo vejo.

Drugi skript Python za predprocesiranje lahko raziščete na 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"]
)

Posel obdelave traja približno 5 minut. Zdaj si lahko ogledate podrobnosti preskusa za nabor podatkov z več datotekami.

Naslednji posnetki zaslona prikazujejo, kje lahko najdete shranjene informacije znotraj SageMaker Experiments v Preskusne komponente v uporabniškem vmesniku Studio. Upoštevajte vrednosti za dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URLin data_commit_hash o parametri tab.

Zavihek s parametri poskusov več datotek SageMaker

Podrobnosti o vhodu in izhodu lahko pregledate tudi na Artefakte tab.

Zavihek poskusov z več datotekami SageMaker artefakti

Zdaj treniramo na dvc-trial-multi-files podružnica. Pri pridobivanju podatkov z DVC uporabljamo naslednjo strukturo nabora podatkov:

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

Podobno kot prej, ustvarimo nov Scikit-learn Estimator s poskusnim imenom dvc-trial-multi-files in začnite z usposabljanjem.

%%time

estimator.fit(experiment_config=experiment_config)

Delo usposabljanja traja približno 5 minut. V dnevnikih opravil usposabljanja, izpisanih v prenosni računalnik, lahko vidite te vrstice, ki označujejo datoteke, ki jih je pridobil DVC:

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']

Gostite svoj model v SageMakerju

Ko usposobite svoj model ML, ga lahko uvedete s SageMakerjem. Za uvedbo obstojne končne točke v realnem času, ki naredi eno napoved naenkrat, uporabljamo Storitve gostovanja v realnem času SageMaker.

from sagemaker.serializers import CSVSerializer

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

Najprej dobimo najnovejši preskusni nabor podatkov lokalno v razvojnem zvezku v Studiu. V ta namen lahko uporabimo dvc.api.read() za nalaganje neobdelanih podatkov, ki jih je opravilo obdelave SageMaker shranilo v Amazon S3.

import io
import dvc.api

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

Nato pripravimo podatke s pomočjo Pande, naložimo testno datoteko CSV in pokličemo predictor.predict da prikličete prej ustvarjeno končno točko SageMaker s podatki in pridobite napovedi.

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]}")

Izbrišite končno točko

Končne točke bi morali izbrisati, ko niso več v uporabi, ker se zaračunajo ob času uvedbe (za več informacij glejte Cene Amazon SageMaker). Ne pozabite izbrisati končne točke, da se izognete nepričakovanim stroškom.

predictor.delete_endpoint()

Čiščenje

Preden odstranite vse vire, ki ste jih ustvarili, se prepričajte, da so vse aplikacije izbrisane iz data-scientist-dvc uporabnik, vključno z vsemi aplikacijami KernelGateway, kot tudi privzeto aplikacijo JupiterServer.

Nato lahko uničite sklad AWS CDK tako, da zaženete naslednji ukaz:

cdk destroy

Če ste uporabili obstoječo domeno, zaženite tudi naslednje ukaze:

# 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

zaključek

V tej objavi ste predstavili primer, kako slediti svojim poskusom prek kode, podatkov, artefaktov in metrik z uporabo SageMaker Experiments ter opravil obdelave in usposabljanja SageMaker v povezavi z DVC. Ustvarili smo sliko Docker, ki vsebuje DVC, ki je bila potrebna za Studio kot razvojni prenosni računalnik, in pokazali, kako lahko z DVC uporabljate opravila obdelave in usposabljanja. Pripravili smo dve različici podatkov in uporabili DVC za upravljanje z Gitom. Nato ste uporabili SageMaker Experiments za sledenje obdelavi in ​​usposabljanju z dvema različicama podatkov, da bi imeli enoten pogled parametrov, artefaktov in meritev v enem steklenem podoknu. Nazadnje ste razmestili model na končno točko SageMaker in uporabili preskusni nabor podatkov iz druge različice nabora podatkov, da prikličete končno točko SageMaker in pridobite napovedi.

Kot naslednji korak lahko razširite obstoječi prenosni računalnik in uvedete lastno strategijo inženiringa funkcij ter uporabite DVC in SageMaker za izvajanje svojih poskusov. Gremo graditi!

Za nadaljnje branje si oglejte naslednje vire:


O avtorjih

Paolo Di FrancescoPaolo Di Francesco je arhitekt rešitev pri AWS. Ima izkušnje na področju telekomunikacij in programskega inženiringa. Navdušen je nad strojnim učenjem in se trenutno osredotoča na uporabo svojih izkušenj za pomoč strankam pri doseganju njihovih ciljev na AWS, zlasti v razpravah o MLOps. Izven službe rad igra nogomet in bere.

Eitan SelaEitan Sela je specialist za strojno učenje, arhitekt rešitev pri Amazon Web Services. Sodeluje s strankami AWS, da bi zagotovil smernice in tehnično pomoč ter jim pomagal zgraditi in upravljati rešitve strojnega učenja na AWS. V prostem času Eitan rad teče in bere najnovejše članke o strojnem učenju.

Časovni žig:

Več od Strojno učenje AWS