Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.

Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelinesiga

Masinõppemudeli (ML) loomise protsess on iteratiivne, kuni leiate kandidaatmudeli, mis töötab hästi ja on kasutuselevõtuks valmis. Kuna andmeteadlased seda protsessi kordavad, vajavad nad usaldusväärset meetodit katsete hõlpsaks jälgimiseks, et mõista, kuidas iga mudeli versioon loodi ja kuidas see toimis.

Amazon SageMaker võimaldab meeskondadel kasutada laia valikut funktsioone ML-mudelite kiireks ettevalmistamiseks, ehitamiseks, koolitamiseks, juurutamiseks ja jälgimiseks. Amazon SageMakeri torujuhtmed pakub korratavat protsessi mudeli koostamise tegevuste kaudu itereerimiseks ja on integreeritud Amazon SageMakeri katsed. Vaikimisi on iga SageMakeri torujuhe seotud katsega ja selle konveieri iga käitamist jälgitakse selles katses prooviversioonina. Seejärel jälgitakse teie iteratsioone automaatselt ilma täiendavate sammudeta.

Selles postituses vaatleme lähemalt motivatsiooni, mille taga on automaatne protsess katsete ja torujuhtmetesse sisseehitatud võimaluste katsete jälgimiseks.

Miks on oluline oma katseid organiseeritult hoida?

Astume korraks tagasi ja proovime mõista, miks on oluline korraldada masinõppe jaoks katseid. Kui andmeteadlased lähenevad uuele ML-probleemile, peavad nad vastama paljudele erinevatele küsimustele, alates andmete kättesaadavusest kuni mudeli jõudluse mõõtmiseni.

Alguses on protsess täis ebakindlust ja on väga korduv. Selle tulemusel võib see katseetapp toota mitu mudelit, millest igaüks on loodud oma sisenditest (andmekogumid, treeningskriptid ja hüperparameetrid) ja toodab oma väljundeid (mudeli artefaktid ja hindamismõõdikud). Väljakutse on siis jälgida kõiki neid iga iteratsiooni sisendeid ja väljundeid.

Andmeteadlased koolitavad tavaliselt palju erinevaid mudeliversioone, kuni leiavad andmete teisendamise, algoritmi ja hüperparameetrite kombinatsiooni, mille tulemuseks on mudeli kõige paremini toimiv versioon. Kõik need ainulaadsed kombinatsioonid on üks katse. Selles katses kasutatud sisendite, algoritmide ja hüperparameetrite jälgitava kirjega on andmeteaduse meeskonnal lihtne oma samme reprodutseerida.

Automaatne protsess katsete jälgimiseks parandab võimet reprodutseerida ja juurutada konkreetseid hästi toimivaid mudeliversioone. Pipelinesi natiivne integreerimine katsetega muudab katsete automaatse jälgimise ja haldamise torujuhtme käitamise ajal lihtsaks.

SageMakeri katsete eelised

SageMaker Experiments võimaldab andmeteadlastel korraldada, jälgida, võrrelda ja hinnata oma koolituste iteratsioone.

Alustame kõigepealt ülevaatega sellest, mida saate katsetega teha.

  • Eksperimentide korraldamine - Eksperimendid struktureerivad katsetamist tipptasemel olemiga, mida nimetatakse an eksperiment mis sisaldab komplekti uuringutes. Iga prooviversioon sisaldab sammude komplekti, mida nimetatakse proovikomponendid. Iga proovikomponent on andmekogumite, algoritmide ja parameetrite kombinatsioon. Saate kujutada katseid hüpoteeside korraldamise ülataseme kaustana, katseid iga rühmatesti alamkaustadena ja proovikomponente oma failidena iga katsetamise eksemplari jaoks.
  • Jälgi katseid – Katsed võimaldavad andmeteadlastel katseid jälgida. See pakub võimalust määrata SageMakeri töid automaatselt prooviversioonile lihtsate konfiguratsioonide ja jälgimis-SDK-de kaudu.
  • Võrrelge ja hinnake katseid - Katsete integreerimine rakendusega Amazon SageMaker Studio muudab andmete visualiseerimise ja erinevate katsete võrdlemise lihtsaks. Prooviandmetele pääsete juurde ka Pythoni SDK kaudu, et luua oma visualiseering, kasutades eelistatud graafikuteeke.

Eksperimentide API-de ja SDK-de kohta lisateabe saamiseks soovitame tutvuda järgmiste dokumentidega. Looge eksperiment ja Amazon SageMaker Experiments Python SDK.

Kui soovite sukelduda sügavamale, soovitame uurida amazon-sagemaker-examples/sagemaker-experiments GitHubi hoidla edasiste näidete jaoks.

Torujuhtmete ja katsete vaheline integreerimine

Pipelinesi osaks olevad mudelite koostamise torujuhtmed on spetsiaalselt loodud ML-i jaoks ja võimaldavad teil oma mudeli koostamise ülesandeid korraldada, kasutades torujuhtme tööriista, mis sisaldab natiivseid integratsioone teiste SageMakeri funktsioonidega, samuti paindlikkust oma torujuhtme laiendamiseks väljaspool SageMakeri käitatavate sammudega. . Iga samm määratleb toimingu, mille torujuhe teeb. Sammudevahelised sõltuvused on määratletud otse atsüklilise graafikuga (DAG), mis on koostatud Pipelines Python SDK abil. Saate luua SageMakeri konveieri programmiliselt sama SDK kaudu. Pärast konveieri juurutamist saate selle töövoogu Studios valikuliselt visualiseerida.

Torujuhtmed integreeruvad automaatselt katsetega, luues iga käitamise jaoks automaatselt katse ja prooviversiooni. Konveierid loovad enne sammude käivitamist automaatselt katse ja prooviversiooni iga konveieri käitamise jaoks, välja arvatud juhul, kui üks või mõlemad neist sisenditest on määratud. Konveieri SageMakeri töö käitamise ajal seostab konveier prooviversiooni katsega ja seob prooviversiooniga kõik tööga loodud proovikomponendid. Enda katse või prooviversiooni programmiline määramine võimaldab teil katsete korraldamist täpsustada.

Selles näites esitatud töövoog koosneb mitmest etapist: eeltöötlusetapp meie sisendandmestiku jagamiseks rongi-, testi- ja valideerimisandmekomplektideks; häälestamise samm meie hüperparameetrite häälestamiseks ja koolitustööde alustamiseks, et treenida mudelit kasutades XGBoost sisseehitatud algoritm; ja lõpuks mudelisamm, et luua SageMakeri mudel kõige paremini koolitatud mudeliartefaktist. Pipelines pakub ka mitmeid algselt toetatud sammude tüübid väljaspool selles postituses käsitletut. Samuti illustreerime, kuidas saate jälgida oma konveieri töövoogu ning luua mõõdikuid ja võrdlustabeleid. Lisaks näitame, kuidas seostada loodud uus prooviversioon olemasoleva katsega, mis võidi luua enne konveieri määratlemist.

SageMakeri torujuhtmete kood

Saate sülearvuti üle vaadata ja alla laadida saidilt GitHubi hoidla selle postitusega seotud. Selle paremaks mõistmiseks vaatame torujuhtmete spetsiifilist koodi.

Torujuhtmed võimaldavad teil parameetreid käitamisajal edastada. Siin määratleme töötlemise ja treenimise eksemplari tüübid ja loendused käitusajal eelseadistatud vaikeväärtustega:

base_job_prefix = "pipeline-experiment-sample"
model_package_group_name = "pipeline-experiment-model-package"

processing_instance_count = ParameterInteger(
  name="ProcessingInstanceCount", default_value=1
)

training_instance_count = ParameterInteger(
  name="TrainingInstanceCount", default_value=1
)

processing_instance_type = ParameterString(
  name="ProcessingInstanceType", default_value="ml.m5.xlarge"
)
training_instance_type = ParameterString(
  name="TrainingInstanceType", default_value="ml.m5.xlarge"
)

Järgmisena seadistame töötlemisskripti, mis laadib alla ja jagab sisendandmestiku rongi-, testi- ja valideerimisosadeks. Me kasutame SKLearnProcessor selle eeltöötlusetapi käitamiseks. Selleks määratleme protsessoriobjekti, mille eksemplari tüüp ja arv on vajalik töötlemistöö käitamiseks.

Torujuhtmed võimaldavad meil saavutada andmete versioonimist programmilisel viisil, kasutades täitmisespetsiifilisi muutujaid, nagu ExecutionVariables.PIPELINE_EXECUTION_ID, mis on konveieri käitamise kordumatu ID. Näiteks saame luua unikaalse võtme väljundandmete kogumite salvestamiseks Amazoni lihtne salvestusteenus (Amazon S3), mis seob need konkreetse torujuhtmega. Muutujate täieliku loendi leiate aadressilt Täitmise muutujad.

framework_version = "0.23-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-ca-housing",
    role=role,
)

process_step = ProcessingStep(
    name="ca-housing-preprocessing",
    processor=sklearn_processor,
    outputs=[
        ProcessingOutput(
            output_name="train",
            source="/opt/ml/processing/train",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "train",
                ],
            ),
        ),
        ProcessingOutput(
            output_name="validation",
            source="/opt/ml/processing/validation",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "validation",
                ],
            )
        ),
        ProcessingOutput(
            output_name="test",
            source="/opt/ml/processing/test",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "test",
                ],
            )
        ),
    ],
    code="california-housing-preprocessing.py",
)

Seejärel jätkame XGBoosti mudeli treenimiseks hindajaobjekti loomisega. Seadsime mõned staatilised hüperparameetrid, mida tavaliselt XGBoostiga kasutatakse:

model_path = f"s3://{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"

image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.2-2",
    py_version="py3",
    instance_type=training_instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    instance_type=training_instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    base_job_name=f"{base_job_prefix}/ca-housing-train",
    sagemaker_session=sagemaker_session,
    role=role,
)

xgb_train.set_hyperparameters(
    eval_metric="rmse",
    objective="reg:squarederror",  # Define the object metric for the training job
    num_round=50,
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.7
)

Teeme loodud mudelite hüperparameetrite häälestamise, kasutades a ContinuousParameter vahemik lambda. Objektiivseks mõõdikuks ühe mõõdiku valimine annab tuunerile (eksemplarile, mis käivitab hüperparameetrite häälestustöid), et hindate koolitustööd selle konkreetse mõõdiku alusel. Tuner tagastab selle objektiivse mõõdiku parima väärtuse alusel parima kombinatsiooni, mis tähendab parimat kombinatsiooni, mis minimeerib parima ruutkeskmise vea (RMSE).

objective_metric_name = "validation:rmse"

hyperparameter_ranges = {
    "lambda": ContinuousParameter(0.01, 10, scaling_type="Logarithmic")
}

tuner = HyperparameterTuner(estimator,
                            objective_metric_name,
                            hyperparameter_ranges,
                            objective_type=objective_type,
                            strategy="Bayesian",
                            max_jobs=10,
                            max_parallel_jobs=3)

tune_step = TuningStep(
    name="HPTuning",
    tuner=tuner_log,
    inputs={
        "train": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "validation": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    } 
)

Häälestamisetapis käitatakse mitu katset eesmärgiga määrata testitud parameetrivahemike seast parim mudel. Meetodiga get_top_model_s3_urireastame mudeli artefakti S50 URI 3 parimat toimivat versiooni ja eraldame ainult kõige paremini toimiva versiooni (määrame k=0 parima jaoks), et luua SageMakeri mudel.

model_bucket_key = f"{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"
model_candidate = Model(
    image_uri=image_uri,
    model_data=tune_step.get_top_model_s3_uri(top_k=0, s3_bucket=model_bucket_key),
    sagemaker_session=sagemaker_session,
    role=role,
    predictor_cls=XGBoostPredictor,
)

create_model_step = CreateModelStep(
    name="CreateTopModel",
    model=model_candidate,
    inputs=sagemaker.inputs.CreateModelInput(instance_type="ml.m4.large"),
)

Kui konveier töötab, loob see proovikomponendid iga hüperparameetri häälestustöö ja iga konveieri sammudega loodud SageMakeri töö jaoks.

Saate täiendavalt konfigureerida torujuhtmete integreerimist katsetega, luues a PipelineExperimentConfig objekt ja edastage see torujuhtme objektile. Need kaks parameetrit määravad loodava katse nime ja prooviversiooni, mis viitab kogu konveieri käigule.

Kui soovite siduda konveieri käitamise olemasoleva katsega, saate edastada selle nime ja Pipelines seob sellega uue prooviversiooni. Saate takistada katse ja prooviversiooni loomist konveieri käitatava sätte abil pipeline_experiment_config et None.

#Pipeline experiment config
ca_housing_experiment_config = PipelineExperimentConfig(
    experiment_name,
    Join(
        on="-",
        values=[
            "pipeline-execution",
            ExecutionVariables.PIPELINE_EXECUTION_ID
        ],
    )
)

Edastame eksemplari tüübid ja loendid parameetritena ning aheldame eelnevad sammud järgmiselt. Konveieri töövoog on kaudselt määratletud sammu väljunditega, mis on teise etapi sisendid.

pipeline_name = f"CAHousingExperimentsPipeline"

pipeline = Pipeline(
    name=pipeline_name,
    pipeline_experiment_config=ca_housing_experiment_config,
    parameters=[
        processing_instance_count,
        processing_instance_type,
        training_instance_count,
        training_instance_type
    ],
    steps=[process_step,tune_step,create_model_step],
)

Täisväärtuslik torujuhe on nüüd loodud ja kasutusvalmis. Lisame konveierile täitmisrolli ja käivitame selle. Siit saame minna SageMaker Studio Pipelinesi konsooli ja jälgida iga sammu visuaalselt. Konsoolist pääsete juurde ka lingitud logidele, et konveieri siluda.

pipeline.upsert(role_arn=sagemaker.get_execution_role())
execution = pipeline.start()

Eelnev ekraanipilt näitab roheliselt edukalt käivitatud torujuhet. Saame ühe prooviversiooni mõõdikud järgmise koodiga konveieri käitamisest:

# SM Pipeline injects the Execution ID into trial component names
execution_id = execution.describe()['PipelineExecutionArn'].split('/')[-1]
source_arn_filter = Filter(
    name="TrialComponentName", operator=Operator.CONTAINS, value=execution_id
)

source_type_filter = Filter(
    name="Source.SourceType", operator=Operator.EQUALS, value="SageMakerTrainingJob"
)

search_expression = SearchExpression(
    filters=[source_arn_filter, source_type_filter]
)

trial_component_analytics = ExperimentAnalytics(
    sagemaker_session=sagemaker_session,
    experiment_name=experiment_name,
    search_expression=search_expression.to_boto()
)

analytic_table = trial_component_analytics.dataframe()
analytic_table.head()

Võrrelge iga proovikomponendi mõõdikuid

Hüperparameetrite häälestamise tulemusi saate joonistada Studios või muude Pythoni graafikuteekide kaudu. Näitame mõlemat viisi selle tegemiseks.

Tutvuge Studio koolitus- ja hindamismõõdikutega

Studio pakub interaktiivset kasutajaliidest, kus saate luua interaktiivseid graafikuid. Toimingud on järgmised.

  1. Vali Katsed ja katsed alates SageMakeri ressursid ikooni vasakul külgribal.
  2. Valige katse avamiseks.
  3. Valige (paremklõpsake) huvipakkuv prooviversioon.
  4. Vali Ava proovikomponentide loendis.
  5. press nihe koolitustöid esindavate proovikomponentide valimiseks.
  6. Vali Lisa diagramm.
  7. Vali Uus diagramm ja kohandage seda kogutud mõõdikute joonistamiseks, mida soovite analüüsida. Meie kasutusjuhuks valige järgmine:
    1. eest Andmetüüp¸ vali Kokkuvõtlik statistika.
    2. eest Diagrammi tüüp¸ vali Hajuvusdiagramm.
    3. eest X-telg, vali lambda.
    4. eest Y-telg, vali validation:rmse_last.

Uus diagramm kuvatakse akna allservas, tähisega "8".

Vajutades saate lisada rohkem või vähem koolitustöid nihe ja interaktiivsema kogemuse saamiseks silmaikooni valimine.

Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.

Analüütika SageMakeri katsetega

Kui konveieri käitamine on lõppenud, saame kiiresti visualiseerida, kuidas mudeli erinevad variatsioonid koolituse käigus kogutud mõõdikute osas võrreldavad. Varem eksportisime kõik proovimõõdikud a Pandad DataFrame kasutamine ExperimentAnalytics. Studios saadud süžeed saame reprodutseerida Matplotlibi teegi abil.

analytic_table.plot.scatter("lambda", "validation:rmse - Last", grid=True)

Järeldus

SageMaker Pipelinesi ja SageMaker Experimentsi vaheline integratsioon võimaldab andmeteadlastel mudelite arendamise tegevuste ajal katseid automaatselt korraldada, jälgida ja visualiseerida. Saate luua katseid, et korraldada kogu oma mudeliarendustööd, näiteks järgmist.

  • Ärikasutuse juhtum, mida käsitlete, näiteks katse loomine klientide vähenemise ennustamiseks
  • Andmeteaduse meeskonnale kuuluv eksperiment näiteks turundusanalüütika kohta
  • Konkreetne andmeteaduse ja ML projekt

Selles postituses uurime Pipelines'i, et näidata, kuidas saate seda kasutada koos katsetega, et korraldada täielikult automatiseeritud otsast lõpuni töövoogu.

Järgmise sammuna saate oma järgmise ML-projekti jaoks kasutada neid kolme SageMakeri funktsiooni – Studio, Experiments ja Pipelines.

Soovitatud näidud


Autoritest

Paolo Di FrancescoPaolo Di Francesco on AWS-i lahenduste arhitekt. Tal on kogemus telekommunikatsiooni ja tarkvaratehnika alal. Ta on kirglik masinõppe vastu ja keskendub praegu oma kogemuste kasutamisele, et aidata klientidel AWS-is oma eesmärke saavutada, eriti MLOps-i teemalistes aruteludes. Väljaspool tööd naudib ta jalgpalli mängimist ja lugemist.

Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.Mario Bourgoin on AWS-i vanempartnerilahenduste arhitekt, AI/ML-spetsialist ja MLOps-i ülemaailmne tehniline juht. Ta teeb koostööd ettevõtete klientide ja partneritega, kes juurutavad AI-lahendusi pilves. Tal on rohkem kui 30-aastane kogemus masinõppe ja tehisintellektiga idufirmades ja ettevõtetes, alustades ühe esimese kommertsliku masinõppesüsteemi loomisest suurandmete jaoks. Mario veedab oma vaba aja oma kolme Belgia Tervureniga mängides, perele õhtusööki valmistades ning matemaatikat ja kosmoloogiat õppides.

Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.Ganapathi Krishnamoorthi on AWS-i ML-lahenduste vanemarhitekt. Ganapathi pakub alustavatele ja äriklientidele ettekirjutavaid juhiseid, aidates neil pilverakendusi ulatuslikult kavandada ja juurutada. Ta on spetsialiseerunud masinõppele ja keskendub sellele, et aidata klientidel AI/ML-i oma äritulemuste saavutamiseks kasutada. Kui ta ei tööta, meeldib talle õues uudistada ja muusikat kuulata.

Korraldage oma masinõppe teekond Amazon SageMaker Experimentsi ja Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.Valerie Sunthakith on AWS-i lahenduste arhitekt, kes töötab mängutööstuses ja koos partneritega, kes juurutavad AI-lahendusi. Ta soovib ehitada oma karjääri Computer Visioni ümber. Vabal ajal veedab Valerie selle reisimiseks, uute toidukohtade avastamiseks ja maja interjööri muutmiseks.

Ajatempel:

Veel alates AWS-i masinõpe