Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines segítségével

A gépi tanulási (ML) modell felépítésének folyamata mindaddig iteratív, amíg meg nem találja a jól teljesítő és üzembe helyezésre kész jelölt modellt. Miközben az adattudósok ismételgetik ezt a folyamatot, megbízható módszerre van szükségük a kísérletek egyszerű nyomon követéséhez, hogy megértsék, hogyan készültek az egyes modellváltozatok és hogyan teljesítettek.

Amazon SageMaker lehetővé teszi a csapatok számára, hogy kihasználják a funkciók széles skáláját az ML-modellek gyors előkészítésére, építésére, betanítására, üzembe helyezésére és figyelésére. Amazon SageMaker csővezetékek megismételhető folyamatot biztosít a modellépítési tevékenységeken keresztüli iterációhoz, és integrálva van vele Amazon SageMaker kísérletek. Alapértelmezés szerint minden SageMaker-folyamat egy kísérlethez van társítva, és a folyamat minden egyes futtatása próbaként nyomon követhető a kísérletben. Ezután a rendszer automatikusan követi az iterációkat további lépések nélkül.

Ebben a bejegyzésben közelebbről megvizsgáljuk azt a motivációt, amely mögött egy automatizált folyamat követi nyomon a kísérleteket a kísérletekkel és a Pipelines-be épített natív képességekkel.

Miért fontos a kísérletek rendszerezése?

Tegyünk egy lépést hátra, és próbáljuk megérteni, miért fontos a gépi tanuláshoz szervezett kísérletek. Amikor az adattudósok egy új ML-problémához közelednek, sok különböző kérdésre kell válaszolniuk, az adatok elérhetőségétől kezdve egészen a modell teljesítményének méréséig.

Kezdetben a folyamat tele van bizonytalansággal és erősen iteratív. Ennek eredményeként ez a kísérleti szakasz több modellt is létrehozhat, amelyek mindegyike saját bemeneteiből (adatkészletek, betanító szkriptek és hiperparaméterek) jön létre, és saját kimenetet (modellműtermékeket és értékelési mérőszámokat) állít elő. A kihívás tehát az, hogy nyomon kövessük az egyes iterációk összes be- és kimenetét.

Az adattudósok általában sok különböző modellváltozatot képeznek ki, amíg meg nem találják az adatátalakítás, az algoritmus és a hiperparaméterek kombinációját, amely a modell legjobb teljesítményű verzióját eredményezi. Ezen egyedi kombinációk mindegyike egyetlen kísérlet. A kísérlet során használt bemenetek, algoritmusok és hiperparaméterek nyomon követhető nyilvántartásával az adattudományi csapat könnyen reprodukálhatja lépéseit.

A kísérletek nyomon követésére szolgáló automatizált folyamat javítja a jól teljesítő modellváltozatok reprodukálásának és üzembe helyezésének képességét. A Pipelines natív integrációja a kísérletekkel megkönnyíti a kísérletek automatikus nyomon követését és kezelését a folyamat során.

A SageMaker kísérletek előnyei

A SageMaker Experiments lehetővé teszi az adattudósok számára a képzési iterációk megszervezését, nyomon követését, összehasonlítását és értékelését.

Kezdjük először egy áttekintéssel arról, hogy mit tehet a kísérletekkel:

  • Kísérletek szervezése – A kísérletek egy legfelső szintű entitással strukturálják a kísérletezést kísérlet amely egy halmazt tartalmaz vizsgálatok. Minden próba egy sor lépést tartalmaz próba komponensek. Minden próbakomponens adatkészletek, algoritmusok és paraméterek kombinációja. A kísérleteket a hipotézisek rendszerezésére szolgáló legfelső szintű mappaként, a kísérleteket az egyes csoportos tesztfutások almappáiként, a próbaösszetevőket pedig fájlként a tesztfutás minden egyes példányához.
  • Kísérletek nyomon követése – A kísérletek lehetővé teszik az adattudósok számára a kísérletek nyomon követését. Lehetővé teszi a SageMaker-feladatok automatikus hozzárendelését egy próbaverzióhoz egyszerű konfigurációkon és a nyomkövető SDK-kon keresztül.
  • Hasonlítsa össze és értékelje a kísérleteket - A Kísérletek integrációja Amazon SageMaker Studio megkönnyíti az adatvizualizációk készítését és a különböző kísérletek összehasonlítását. A próbaadatokat a Python SDK-n keresztül is elérheti, hogy saját vizualizációt állítson elő a preferált ábrázolási könyvtárak használatával.

Ha többet szeretne megtudni a Experiments API-król és SDK-król, javasoljuk a következő dokumentációt: CreateExperiment és a Amazon SageMaker Experiments Python SDK.

Ha mélyebbre szeretne merülni, javasoljuk, hogy tekintse meg a amazon-sagemaker-examples/sagemaker-experiments GitHub adattár további példákért.

Integráció a csővezetékek és a kísérletek között

A Pipelines részét képező modellépítési folyamatok kifejezetten az ML számára készültek, és lehetővé teszik a modellépítési feladatok összehangolását egy olyan folyamateszköz segítségével, amely magában foglalja a natív integrációkat más SageMaker-szolgáltatásokkal, valamint a folyamatot a SageMakeren kívül futó lépésekkel bővíthető rugalmassággal. . Minden lépés meghatároz egy műveletet, amelyet a folyamat végrehajt. A lépések közötti függőségeket egy közvetlen aciklikus gráf (DAG) határozza meg, amely a Pipelines Python SDK használatával készült. A SageMaker folyamatot programozottan is létrehozhatja ugyanazon az SDK-n keresztül. Egy folyamat üzembe helyezése után opcionálisan megjelenítheti a munkafolyamatát a Studióban.

A folyamatok automatikusan integrálódnak a kísérletekkel azáltal, hogy minden futtatáshoz automatikusan létrehoznak egy kísérletet és próbaverziót. A folyamatok automatikusan létrehoznak egy kísérletet és egy próbaverziót a folyamat minden futtatásához a lépések futtatása előtt, kivéve, ha az egyik vagy mindkét bemenet meg van adva. A folyamat SageMaker-feladatának futtatása közben a folyamat társítja a próbaverziót a kísérlettel, és társítja a próbaverzióhoz a job által létrehozott összes próbaösszetevőt. Saját kísérletének vagy próbaverziójának programozott megadása lehetővé teszi a kísérletek rendszerezésének finomhangolását.

Az ebben a példában bemutatott munkafolyamat lépések sorozatából áll: egy előfeldolgozási lépés a bemeneti adatkészletünk felosztására vonat-, teszt- és érvényesítési adatkészletekre; egy hangolási lépést a hiperparamétereink hangolásához, és elindítjuk a betanítási feladatokat egy modell betanításához a XGBoost beépített algoritmus; és végül egy modelllépés a SageMaker modell létrehozásához a legjobban képzett modelltermékből. A Pipelines számos natív támogatást is kínál lépéstípusok az ebben a bejegyzésben tárgyaltakon kívül. Azt is bemutatjuk, hogyan követheti nyomon a folyamatot, és hogyan hozhat létre mutatókat és összehasonlító diagramokat. Továbbá bemutatjuk, hogyan lehet társítani a létrehozott új próbaverziót egy olyan meglévő kísérlethez, amely a folyamat meghatározása előtt jöhetett létre.

SageMaker Pipelines kód

A notebook áttekinthető és letölthető a GitHub tárház ehhez a bejegyzéshez kapcsolódik. Megnézzük a Pipelines-specifikus kódot, hogy jobban megértsük.

A csővezetékek lehetővé teszik a paraméterek futási időben történő átadását. Itt határozzuk meg a feldolgozási és betanítási példánytípusokat, valamint a futásidőben történő számlálást előre beállított alapértékekkel:

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

Ezután beállítunk egy feldolgozó szkriptet, amely letölti és felosztja a bemeneti adatkészletet betanítási, tesztelési és érvényesítési részekre. Mi használjuk SKLearnProcessor ennek az előfeldolgozási lépésnek a futtatásához. Ehhez definiálunk egy processzorobjektumot a feldolgozási feladat futtatásához szükséges példánytípussal és számmal.

A csővezetékek lehetővé teszik számunkra, hogy programozott módon valósítsuk meg az adatok verziószámát végrehajtás-specifikus változók, például ExecutionVariables.PIPELINE_EXECUTION_ID, amely egy folyamatfutás egyedi azonosítója. Létrehozhatunk például egyedi kulcsot a kimeneti adatkészletek tárolására Amazon egyszerű tárolási szolgáltatás (Amazon S3), amely egy adott csővezetékhez köti őket. A változók teljes listáját lásd: Végrehajtási változók.

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",
)

Ezután továbblépünk egy becslési objektum létrehozásához, amely egy XGBoost modellt tanít. Beállítunk néhány statikus hiperparamétert, amelyeket gyakran használnak az XGBoostnál:

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
)

Az általunk készített modellek hiperparaméteres hangolását a segítségével végezzük ContinuousParameter tartomány lambda. Ha egy metrikát választ ki objektív mérőszámként, akkor a tuner (a hiperparaméter-hangolási feladatokat futtató példány) megmondja, hogy a betanítási feladatot ezen a metrikán alapulóan értékeli. A tuner a legjobb kombinációt adja vissza ennek az objektív metrikának a legjobb értéke alapján, vagyis a legjobb kombinációt, amely minimalizálja a legjobb négyzetes középhibát (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",
        ),
    } 
)

A hangolási lépés több próbát futtat le azzal a céllal, hogy meghatározza a legjobb modellt a tesztelt paramétertartományok közül. A módszerrel get_top_model_s3_uri, rangsoroljuk az S50 műtermék URI modell 3 legjobban teljesítő verzióját, és csak a legjobban teljesítő verziót bontjuk ki (meghatározzuk k=0 a legjobb) egy SageMaker modell létrehozásához.

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"),
)

Amikor a folyamat fut, minden egyes hiperparaméter-hangolási feladathoz és a folyamatlépések által létrehozott SageMaker-feladathoz próbakomponenseket hoz létre.

Tovább konfigurálhatja a folyamatok integrációját a kísérletekkel, ha létrehoz egy a PipelineExperimentConfig objektumot, és adja át a csővezeték objektumnak. A két paraméter határozza meg a létrehozandó kísérlet nevét, és a próbafolyamatot, amely a folyamat teljes futtatására hivatkozik.

Ha egy folyamatot szeretne társítani egy meglévő kísérlethez, átadhatja a nevét, és a Pipelines hozzá fogja rendelni az új próbaverziót. Beállítással megakadályozhatja kísérlet és próba létrehozását egy folyamat futtatásához pipeline_experiment_config nak nek None.

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

A példánytípusokat és a számokat paraméterként adjuk át, és az előző lépéseket a következő sorrendben láncoljuk. A folyamat folyamatát implicit módon egy lépés kimenetei határozzák meg, amelyek egy másik lépés bemenetei.

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],
)

A teljes értékű csővezeték elkészült és használatra kész. Hozzáadunk egy végrehajtási szerepet a folyamathoz, és elindítjuk. Innen a SageMaker Studio Pipelines konzolra léphetünk, és vizuálisan követhetjük nyomon minden lépést. A csatolt naplókat a konzolról is elérheti a folyamat hibakereséséhez.

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

Az előző képernyőképen zöld színnel látható a sikeresen futtatott folyamat. Egy próba metrikáit a következő kóddal rendelkező folyamatból kapjuk meg:

# 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()

Hasonlítsa össze az egyes próbakomponensek mérőszámait

A hiperparaméter-hangolás eredményeit a Studio-ban vagy más Python-rajzkönyvtárak segítségével ábrázolhatja. Ennek mindkét módját bemutatjuk.

Fedezze fel a képzési és értékelési mutatókat a Studio-ban

A Studio interaktív felhasználói felületet biztosít, ahol interaktív terveket hozhat létre. A lépések a következők:

  1. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Kísérletek és próbák tól SageMaker források ikonra a bal oldalsávon.
  2. Válassza ki a kísérletet a megnyitásához.
  3. Válassza ki (jobb gombbal) a kívánt próbaverziót.
  4. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Megnyitás a próbaverziós összetevők listájában.
  5. nyomja meg műszak a képzési munkákat reprezentáló próbakomponensek kiválasztásához.
  6. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Diagram hozzáadása.
  7. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Új diagram és testreszabhatja az elemezni kívánt összegyűjtött mutatók ábrázolásához. Használati esetünkhöz válassza a következőket:
    1. A Adattípus¸ válassza ki Összefoglaló statisztika.
    2. A Diagram típusa¸ válassza ki Scatter Plot.
    3. A X-tengely, választ lambda.
    4. A Y tengely, választ validation:rmse_last.

Az új diagram az ablak alján jelenik meg, '8' címkével.

A megnyomásával több vagy kevesebb képzési feladatot is felvehet műszak és válassza ki a szem ikont az interaktívabb élmény érdekében.

Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Analitika SageMaker-kísérletekkel

Amikor a folyamat befejeződött, gyorsan láthatóvá tudjuk tenni, hogy a modell különböző változatai hogyan hasonlítanak össze a képzés során gyűjtött mérőszámok tekintetében. Korábban az összes próba metrikát exportáltuk a pandák DataFrame segítségével ExperimentAnalytics. A Studio-ban kapott cselekményt a Matplotlib könyvtár segítségével reprodukálhatjuk.

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

Következtetés

A SageMaker Pipelines és a SageMaker Experiments közötti natív integráció lehetővé teszi az adattudósok számára, hogy a modellfejlesztési tevékenységek során automatikusan szervezzék, nyomon kövessék és vizualizálják a kísérleteket. Kísérleteket hozhat létre az összes modellfejlesztési munkája megszervezéséhez, például a következők:

  • Olyan üzleti felhasználási eset, amellyel foglalkozik, például kísérlet létrehozása az ügyfelek lemorzsolódásának előrejelzésére
  • Az adattudományi csapat tulajdonában lévő kísérlet például a marketingelemzéssel kapcsolatban
  • Egy konkrét adattudományi és ML projekt

Ebben a bejegyzésben belevágtunk a folyamatokba, hogy megmutassuk, hogyan használhatod a kísérletekkel párhuzamosan egy teljesen automatizált, teljes körű munkafolyamatot.

Következő lépésként használhatja ezt a három SageMaker funkciót – a Studio, a Experiments és a Pipelines – következő ML projektjéhez.

Javasolt olvasmányok


A szerzőkről

Paolo Di FrancescoPaolo Di Francesco megoldások tervezője az AWS-nél. Telekommunikációs és szoftvermérnöki tapasztalattal rendelkezik. Szenvedélyesen rajong a gépi tanulásért, és jelenleg arra összpontosít, hogy tapasztalatait felhasználva segítse ügyfeleit az AWS-ben kitűzött céljaik elérésében, különösen az MLOp-okkal kapcsolatos vitákban. Munkán kívül szeret focizni és olvasni.

Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Mario Bourgoin az AWS vezető partner megoldási építésze, AI/ML specialista és az MLOps globális technológiai vezetője. Vállalati ügyfelekkel és partnerekkel dolgozik, akik mesterséges intelligencia megoldásokat telepítenek a felhőben. Több mint 30 éves tapasztalattal rendelkezik a gépi tanulás és mesterséges intelligencia területén startupoknál és vállalatoknál, kezdve azzal, hogy megalkotta az egyik első kereskedelmi gépi tanulási rendszert a big data számára. Mario a szabadidejét a három belga Tervurennel játszik, vacsorát főz családjának, valamint matematikát és kozmológiát tanul.

Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Ganapathi Krishnamoorthi az AWS vezető ML Solutions építésze. A Ganapathi előírásos útmutatást nyújt az induló és nagyvállalati ügyfeleknek, segítve őket felhőalkalmazások tervezésében és telepítésében. A gépi tanulásra specializálódott, és arra törekszik, hogy segítse ügyfeleit az AI/ML kihasználásában üzleti eredményeik érdekében. Amikor nem dolgozik, szeret felfedezni a szabadban és zenét hallgatni.

Szervezze meg gépi tanulási útját az Amazon SageMaker Experiments és az Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Valerie Sonthakith az AWS megoldástervezője, a játékiparban dolgozik, és AI-megoldásokat telepítő partnereivel együtt. Karrierjét a Computer Vision köré kívánja építeni. Szabadidejében Valerie azzal tölti, hogy utazzon, új étkezési helyeket fedezzen fel, és megváltoztassa háza belső tereit.

Időbélyeg:

Még több AWS gépi tanulás