Modo local offline do SageMaker — pipeline com scikit-learn¶
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: breast_cancer (classificação binária), carregado dentro do recipiente de scikit-learn.
import os
from dataclasses import replace
from sagemaker.sklearn.estimator import SKLearn
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-scikit-learn",
image_tag="sagemaker-scikit-learn: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 = SKLearn(
entry_point="train.py",
source_dir=os.path.join(
os.environ.get("SAGEMAKER_LOCAL_REPO_PATH", "/workspace"),
"projects",
"sagemaker_scikit_learn",
"src",
"sagemaker_scikit_learn",
),
role=cfg.role_arn,
instance_type="local",
instance_count=1,
image_uri=cfg.image_tag,
sagemaker_session=pipeline_session,
output_path=f"s3://{cfg.bucket}/models",
hyperparameters={"dataset": "breast_cancer"},
)
train_step = TrainingStep(name="train-breast-cancer", estimator=est)
pipeline = Pipeline(
name="sklearn-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)