1. AWS机器学习数据平台集成全景
在真实企业环境中,机器学习项目失败的原因往往不在算法本身,而在于数据平台与机器学习系统之间的集成断裂:训练数据散落在 S3、RDS、Kinesis 与本地数据仓库中,特征口径不一致,训练与推理使用不同的数据路径,模型上线后无法稳定获取实时特征。本课程要解决的核心问题,就是如何以 AWS 原生服务为骨架,把"数据产生—数据存储—数据处理—特征管理—模型训练—模型部署—监控回流"串成一条可运维、可复现、可扩展的链路。
一、核心概念:数据平台与机器学习平台的边界
先明确两个平台的分工。数据平台负责数据的采集、存储、清洗、编目与治理,典型服务包括 Amazon S3(数据湖底座)、AWS Glue(ETL 与数据目录)、Amazon Athena(交互式查询)、Amazon Kinesis(流式接入)、Amazon Redshift(数仓)、AWS Lake Formation(权限治理)。机器学习平台负责特征工程、训练、调优、部署与监控,典型服务包括 Amazon SageMaker 的 Processing、Training、Tuning、Endpoints、Model Monitor、Feature Store,以及 Amazon Bedrock(基础模型调用)。
集成的本质是让两个平台共享同一份"数据契约":同一份数据在离线训练与在线推理中具有一致的定义、一致的时间语义、一致的权限边界。这里有两个关键概念需要先建立:
- 特征一致性(Training-Serving Skew):训练时用批处理 SQL 计算的特征,与线上用实时流计算的特征,如果逻辑不同,模型效果会显著下降。SageMaker Feature Store 的离线存储(Offline Store,落在 S3)与在线存储(Online Store,低延迟键值查询)正是为解决这一问题而设计。
- 数据血缘与版本:一次训练必须能追溯到具体的数据快照、特征版本与代码版本。S3 版本控制、Glue Data Catalog 表版本、SageMaker 模型注册表共同构成可追溯链条。
二、集成挑战:四个最容易出问题的环节
挑战一:数据接入的批流割裂。业务库通过 DMS 或 Glue 批量入湖,日志通过 Kinesis Firehose 流式入湖,两条路径的 Schema 演化节奏不同,容易在数据湖中形成"同一实体多份定义"。
挑战二:权限与网络边界。S3 桶策略、Lake Formation 表级权限、SageMaker 执行角色、VPC 终端节点四者需要协同。常见故障是 SageMaker 训练任务位于私有子网,却未配置 S3 Gateway Endpoint,导致任务卡在下载数据阶段。
挑战三:特征存储的双写一致性。向 Feature Store 写入时,需要同时更新在线存储与离线存储。若只写在线存储,后续无法用历史数据重训;若只写离线存储,线上推理拿不到特征。
挑战四:成本与性能的权衡。Athena 按扫描量计费,Parquet + 分区裁剪可把一次查询从数百 GB 降到几 GB;SageMaker 训练实例按秒计费,Spot 训练可降本但需处理中断检查点。
三、典型架构:一条可落地的端到端链路
把上面的分层落到具体服务,一条典型的推荐系统链路可以这样组织:
- 接入:用户行为事件经 Kinesis Data Streams 进入,Firehose 以 60 秒缓冲写入
s3://ml-datalake/raw/events/dt=YYYY-MM-DD/hour=HH/;业务库通过 AWS DMS 持续复制到 S3 的raw/orders/前缀。 - 加工:Glue 作业每日 02:00 触发,读取 raw 层,做去重、类型转换、会话切分,写出 Parquet 到
curated/层,并更新 Glue Data Catalog 表curated_user_behavior。 - 特征:Glue 作业同时计算用户近 7 日点击率、商品热度等特征,写入 SageMaker Feature Store 的 Feature Group
user_click_features,在线存储供推理实时读取,离线存储供训练回溯。 - 训练:SageMaker Training Job 从 Feature Store 离线存储拉取训练集,使用
ml.m5.4xlarge单机训练,产出模型注册到 Model Registry,版本号v1.3。 - 部署与监控:Endpoint 上线后,Model Monitor 每小时采样推理请求,与训练基线对比,当特征分布 PSI 超过 0.2 时触发 CloudWatch 告警,并启动重训流水线。
四、课程实战项目:电商用户行为预测平台
本课程贯穿一个完整项目:为一家电商构建"用户次日复购预测"平台。项目数据规模设定为约 2000 万条行为事件、50 万用户、5 万商品,全部使用示例数据,便于在个人 AWS 账户中复现。项目分五个阶段推进:
| 阶段 | 目标 | 关键产出 |
|---|---|---|
| 阶段一 数据入湖 | 打通批流两条接入路径 | S3 分区数据湖 + Glue Catalog 表 |
| 阶段二 特征工程 | 建立可复用特征 | Feature Group 定义 + 离线/在线双写 |
| 阶段三 模型训练 | 训练并调优 XGBoost 模型 | Model Registry 中的候选模型 |
| 阶段四 部署推理 | 上线实时 Endpoint | 可调用的推理接口 + 自动扩缩容策略 |
| 阶段五 监控回流 | 建立漂移检测与重训闭环 | Model Monitor 基线 + 告警规则 |
项目验收标准不是"模型准确率多高",而是链路是否可复现:给定同一份原始数据与同一份代码,能否在 24 小时内重新产出同样的特征、同样的模型版本、同样的推理结果。这一标准会贯穿后续每一章的实践环节。
ml-datalake-<你的账号ID>),开启版本控制与默认加密,并记录下区域(建议 us-east-1 或 ap-northeast-1)。后续所有实验都会复用这个桶,提前建好可以避免每章重复配置。
MaxWaitTimeInSeconds。建议为实验账户设置 AWS Budgets 告警,阈值设为 20 美元。