ML 和 AI 的数据准备
Data Preparation for ML and AI
学习目标
- 能够从 S3、EFS、FSx、RDS、DynamoDB 等数据源,以及 Kinesis、Flink、Kafka 的流式数据中,以符合目的的格式(Parquet、ORC、CSV、JSON)导入数据
- 能够用 Glue、DataBrew、EMR 上的 Spark、Data Wrangler、Feature Store 进行转换和创建特征,并区分使用缩放、分箱、对数变换和编码
- 能够通过嵌入、分块和元数据提取准备 RAG 的文档,并选择 OpenSearch、pgvector、S3 Vectors 等向量存储
- 能够用 Glue Data Quality 和 DataBrew 验证质量,用 Ground Truth 添加标签,并用 Clarify 的偏差指标和重采样应对类别不平衡
要点
- 格式:分析时只读取部分列,用列式的 Parquet 或 ORC(压缩效果好,读取量少)。按行追加和日志用 JSON 或 CSV。SageMaker AI 的部分内置算法使用 RecordIO-protobuf 的 Pipe 模式读取更快。
- 存储:训练数据基本放在 S3。需要高速读取大量小文件的训练用 FSx for Lustre(与 S3 联动),多个实例共享用 EFS。从远地大量上传用 S3 Transfer Acceleration。
- 流式处理:用 Kinesis Data Streams 导入,用 Managed Service for Apache Flink 或 Lambda 转换,用 Data Firehose 投递到 S3 等。已有的 Kafka 资产用 MSK。
- 转换工具:无需写代码进行可视化和转换用 Data Wrangler 或 DataBrew,大规模 ETL 用 Glue(Spark)或 EMR。创建的特征用 Feature Store(在线和离线)以相同定义同时用于训练和推理。
- 特征工程:标准化(均值 0、方差 1)和归一化(0~1)、对偏态分布做对数变换、对数值分区间(分箱)、类别的独热编码(无序类别)和标签编码(有序类别)。补全缺失值、处理离群值、去除重复。
- 生成式 AI 的数据:用嵌入模型把文本和图像转换为向量。RAG 文档的分块(固定长度、分层、语义)和元数据会改变检索精度。微调、持续预训练和蒸馏的训练数据也要统一格式和质量后准备。
- 个人信息:用于训练或 RAG 之前要进行屏蔽、编辑或匿名化。用 Macie 发现 S3 中的敏感数据,满足 PII、PHI 和数据驻留的要求。
- 质量与偏差:用 Glue Data Quality 或 DataBrew 的规则验证缺失、范围和唯一性。用 Ground Truth 添加标签(人工与自动标注并用)。用 Clarify 的训练前指标(类别不平衡 CI、标签比例差异 DPL 等)测量偏差,并通过过采样、欠采样、合成数据(如 SMOTE)和分层划分应对。
工作中的应用场景
- 销售用 Glue 把 CRM 的商谈数据与网站访问日志关联,在 Feature Store 中登记“最近 30 天访问次数”等特征。在成交预测的训练和销售界面的实时推理中使用相同的特征。
- 总务把公司规章的 PDF 按标题分块,附加部门和修订日期作为元数据保存到向量存储中,使旧版规章不会出现在检索结果中。
- 财务在费用欺诈检测中,欺诈示例只占全部的 0.5%。用 Clarify 确认类别不平衡,只对训练数据进行过采样,评估则用保持原始比例的测试数据。
考试评估项目(来自考试指南)
- 1.1 データを収集して保存する。
- 1.2 データ変換、特徴量エンジニアリング、前処理を実行する。
- 1.3 データ品質を検証し、バイアスを管理する。