AWS SageMaker到底是什么?
Source: Dev.to
SageMaker 为什么会出现?
这里是完整的故事。
在 2015‑2017 年左右,各公司开始真正尝试在生产环境中使用机器学习——不仅仅是科研论文,而是实际产品。
他们碰到了壁垒。
- 数据科学家在笔记本电脑上构建模型。效果很好!
- 然后他们尝试将模型投入生产,却陷入混乱。
- 基础设施团队根本不知道“训练作业”是什么。
- 模型需要特定的 GPU 实例。
- 训练好的模型要存放在哪里?
- 如何对模型进行版本管理?
- 如何在大规模下提供预测服务?
每家公司都在从头重新搭建相同的基础设施。
AWS 看到了这种痛点,于 2017 年推出了 SageMaker。其宣传语很简单:我们来处理所有基础设施的事宜,你只需专注于真正的机器学习部分。
那么 SageMaker 实际上是什么?
把它想象成一个 用于整个机器学习工作流的托管平台——不仅仅是单一功能,而是一套协同工作的工具。
- 用于实验的托管 Jupyter 笔记本。
- 当需要时即可启动的可扩展训练基础设施。
- 用于提供预测的模型托管。
- 监控、版本管理、流水线——完整的解决方案。
它的感觉就像使用 EKS 而不是自己管理 Kubernetes 集群一样,只是针对机器学习工作流。
什么时候真的会用到它?
当你在大规模进行机器学习时,基础设施本身就会成为问题,这时就会使用 SageMaker。
如果你的数据科学家每月只在笔记本电脑上训练一次模型,可能还不需要它。
但当你:
- 在内存无法容纳的数据集上训练模型。
- 需要 GPU,但又不想自己管理 GPU 实例。
- 想在新数据到达时自动重新训练模型。
- 需要向成千上万的用户提供预测服务。
- 有多个人在进行机器学习并共享资源。
……这时 SageMaker 才开始有意义。
很多团队之所以一开始就使用它,是因为他们的数据科学家已经熟悉它,或者因为他们已经深度使用 AWS,想把所有东西集中在同一个平台。
您实际会接触的主要组件
| 组件 | 功能 |
|---|---|
| 训练作业 | 数据科学家编写训练代码;SageMaker 启动实例,运行训练,保存模型,并关闭所有资源。您只为计算时间付费。 |
| 端点 | 在生产环境中提供预测的方式。部署已训练的模型,获取 HTTPS 端点,您的应用即可调用。包括自动伸缩。 |
| 笔记本 | 托管的 Jupyter 环境。数据科学家可以在无需您为其配置实例的情况下进行实验。 |
| 流水线 | 自动化整个工作流:新数据到达 → 触发训练 → 评估 → 若足够好则部署。标准的 DevOps 工作,但用于机器学习。 |
实际效果
假设你的团队训练了一个预测客户流失的模型。
训练
from sagemaker.sklearn import SKLearn
estimator = SKLearn(
entry_point='train.py',
role=role,
instance_type='ml.m5.xlarge',
framework_version='1.0-1'
)
estimator.fit({'training': 's3://bucket/data'})
你将作业指向 S3 中的数据,指定实例类型/数量,SageMaker 负责其余工作。训练好的模型工件会保存回 S3。
部署
predictor = estimator.deploy(
initial_instance_count=1,
instance_type='ml.t2.medium'
)
现在你的 API 可以调用此端点获取预测。SageMaker 负责扩展、健康检查以及所有基础设施相关的工作。
可能让你困惑的部分
- Docker 约定 – SageMaker 期望训练代码遵循其特定结构,这与“标准”容器化应用不同。
- 计费 – 你需要为笔记本实例的运行时间付费,训练按秒计费,端点按小时计费。它不像 Lambda 那样按请求计费。
- IAM 角色 – SageMaker 需要访问 S3、写入日志、使用 ECR 等权限。首次设置可能比较繁琐。
- 并非所有情况都需要 SageMaker – 如果你只是调用 OpenAI 的 API 或使用预训练模型,就不需要这些。SageMaker 在你自行训练 并 部署模型时才真正发挥优势。
其他所有功能呢?
SageMaker 已经发展很多:
- Studio – 用于整个机器学习生命周期的 IDE。
- Feature Store – 机器学习特征的集中存储。
- Model Monitor – 用于已部署模型的漂移检测。
- Clarify – 偏差检测与可解释性。
- …以及更多功能。
你不必了解所有功能。大多数团队从 notebooks → training jobs → endpoints——核心循环 开始。只有在遇到特定问题时才添加额外功能(例如,模型漂移 → Model Monitor,共享特征工程 → Feature Store)。
当你可能 不想 使用 SageMaker
- 你的团队已经深耕 GCP —— Vertex AI 提供了可比的托管服务。
- 你想要完全控制并且能够自行管理基础设施 —— 你可以在 EKS + Kubeflow 上运行所有内容。
- 你的机器学习工作负载非常简单 —— 一个使用预训练模型进行预测的 Flask 应用可能就足够了。
SageMaker 在你需要扩展机器学习工作负载并希望 AWS 处理基础设施复杂性时表现出色。如果你的情况还不是这样,使用它可能显得大材小用。
真正的价值主张
SageMaker 让您 专注于构建和改进模型,而 AWS 负责繁重的工作:提供计算资源、处理 GPU、管理存储、扩展端点,并提供内置的监控和治理工具。当基础设施开始主导您的机器学习项目时,SageMaker 成为让您更快交付更好模型的捷径。
机器学习基础设施很难
机器学习基础设施确实非常困难。管理 GPU 实例、编排分布式训练、在大规模下提供模型服务、监控漂移以及对所有内容进行版本管理,这些工作很快就会让人不堪重负。
你可以自己构建所有这些——很多公司已经这么做了。
但这是一大堆没有差异化的繁重工作。
为什么使用托管服务?
Amazon SageMaker 让你可以跳过底层的繁琐工作,专注于真正的机器学习问题。
- 对于 DevOps 人员: 可以把它看作是将“托管服务”理念应用到机器学习工作流上。
- 权衡:
- 控制/灵活性降低 – 需要放弃一些细粒度的调优。
- 启动速度大幅提升 – 平台负责运维,让你能够快速迭代。
入门指南
- 启动 Notebook – 创建 SageMaker Notebook 实例。
- 运行教程 – 按照内置示例了解训练作业的工作方式。
- 应用到真实问题 – 当你在解决具体问题时,概念会更快变得清晰。
你已经在提出正确的问题。这是最重要的部分。