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.
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.
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.
pipeline.create(role_arn=cfg.role_arn)
execution = pipeline.start()
print("pipeline started under name", pipeline.name)