You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现AWS SageMaker机器学习流水线每周自动运行?

AWS SageMaker 自动化机器学习流水线构建指南(含每周调度)

核心步骤拆解

  • S3数据读取:可通过SageMaker内置的S3DataSource自动挂载S3数据到训练实例,或在自定义脚本中用boto3直接拉取。需确保SageMaker执行角色拥有S3读写权限。
  • 自定义模型训练:用SageMaker Estimator封装你的训练脚本,指定实例类型、计算资源,训练输出直接指向目标S3路径。支持官方Python镜像或自定义Docker镜像。
  • 模型部署到S3:训练完成后,SageMaker会自动将模型 artifacts 同步到你指定的output_path;若需额外存储,可在训练脚本末尾用boto3上传模型文件到其他S3位置。
  • 每周自动调度:通过Amazon EventBridge创建定时规则,触发SageMaker Pipeline自动执行。

关键操作要点

1. SageMaker Pipeline 编排

推荐用Python SDK定义流水线,每个步骤对应Pipeline的Step组件:

  • 数据读取:用TrainingInput关联S3数据路径
  • 训练:用TrainingStep封装Estimator
  • 可扩展添加ProcessingStep做数据预处理(若需要)

2. IAM角色配置

确保角色包含以下权限(建议最小化权限而非全量授权):

  • AmazonSageMakerFullAccess:流水线执行、训练任务管理
  • S3权限:允许读写目标数据桶和模型存储桶
  • AmazonEventBridgeFullAccess:允许EventBridge触发流水线

3. 自定义训练脚本规范

脚本需兼容SageMaker环境变量,核心示例逻辑:

  • 从SM_CHANNEL_TRAINING读取训练数据
  • 训练完成后将模型写入SM_MODEL_DIR,SageMaker自动同步到S3

调度配置步骤

  1. 进入EventBridge控制台,创建规则,选择「计划」类型
  2. 设置cron表达式,比如0 0 ? * SUN *表示每周日凌晨执行
  3. 选择目标为「SageMaker Pipeline」,指定流水线ARN,配置可选执行参数
  4. 启用规则,验证触发权限

代码示例片段

流水线定义代码

import sagemaker
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import TrainingStep
from sagemaker.estimator import Estimator

# 初始化会话与角色
sess = sagemaker.Session()
role = sagemaker.get_execution_role()

# 定义自定义训练Estimator
estimator = Estimator(
    entry_point="train.py",
    source_dir="./training-scripts",
    role=role,
    instance_count=1,
    instance_type="ml.m5.xlarge",
    output_path="s3://your-bucket/model-artifacts/",
)

# 创建训练步骤
training_step = TrainingStep(
    name="CustomModelTrainingStep",
    estimator=estimator,
    inputs={"training": sagemaker.inputs.TrainingInput(s3_data="s3://your-bucket/training-data/")},
)

# 组装并提交流水线
pipeline = Pipeline(
    name="WeeklyAutoMLPipeline",
    steps=[training_step],
    role=role,
)
pipeline.upsert(role_arn=role)

训练脚本train.py示例

import os
import boto3
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import joblib

# 读取S3挂载的训练数据
data_dir = os.environ["SM_CHANNEL_TRAINING"]
train_df = pd.read_csv(os.path.join(data_dir, "train_data.csv"))

# 数据预处理与训练
X = train_df.drop("target", axis=1)
y = train_df["target"]
model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)

# 保存模型到SageMaker指定目录(自动同步到S3)
model_dir = os.environ["SM_MODEL_DIR"]
joblib.dump(model, os.path.join(model_dir, "trained_model.joblib"))

# 可选:额外上传到自定义S3路径
s3_client = boto3.client("s3")
s3_client.upload_file(
    os.path.join(model_dir, "trained_model.joblib"),
    "your-bucket",
    "backup-models/weekly-model.joblib"
)

内容的提问来源于stack exchange,提问作者Meghana S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:53:00