Modo local offline do SageMaker — pipeline com XGBoost

Um pipeline SageMaker com um único TrainingStep executado localmente contra o moto através de sagemaker-local. As etapas rodam de forma síncrona em contêineres locais.

Conjunto de dados: wine (classificação multiclasse), carregado dentro do recipiente de scikit-learn.

Cell 02Code
import os
from dataclasses import replace

from sagemaker.estimator import Estimator
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import TrainingStep
from sagemaker_local.config import config_from_env
from sagemaker_local.session import make_local_pipeline_session

cfg = replace(
    config_from_env(),
    bucket="sagemaker-xgboost",
    image_tag="sagemaker-xgboost:train",
)
boto_session, pipeline_session = make_local_pipeline_session(cfg)

Defina o pipeline

A chamada fit() do estimador é capturada como uma requisição TrainingStep; nada é executado até que o pipeline seja iniciado.

Cell 04Code
est = Estimator(
    entry_point="train.py",
    source_dir=os.path.join(
        os.environ.get("SAGEMAKER_LOCAL_REPO_PATH", "/workspace"),
        "projects",
        "sagemaker_xgboost",
        "src",
        "sagemaker_xgboost",
    ),
    image_uri=cfg.image_tag,
    role=cfg.role_arn,
    instance_type="local",
    instance_count=1,
    sagemaker_session=pipeline_session,
    output_path=f"s3://{cfg.bucket}/models",
    hyperparameters={"dataset": "wine"},
)
train_step = TrainingStep(name="train-wine", estimator=est)
pipeline = Pipeline(
    name="xgboost-local-pipeline",
    steps=[train_step],
    sagemaker_session=pipeline_session,
)

Inicie o pipeline

create() registra o pipeline com o cliente local; start() executa cada passo de forma sincronizada em contêineres locais.

Cell 06Code
pipeline.create(role_arn=cfg.role_arn)
execution = pipeline.start()
print("pipeline started under name", pipeline.name)