选择一个可视化数据准备工具。
→专注于机器学习,与SageMaker Studio集成 + 流 → Processing job → Pipeline → Notebook导出 → SageMaker Data Wrangler。具有可重用配方、数据分析、无SageMaker依赖的通用数据清洗 → AWS Glue DataBrew。50 TB以上数据使用自定义Spark代码 → Amazon EMR。
原因: Data Wrangler是SageMaker原生选项(300多个转换,日期时间提取,导出到Pipeline/Processing)。DataBrew基于配方且与源无关。EMR处理规模和任意Spark任务。
参考↗
对S3、RDS、DynamoDB中的数据进行编目,以便分析师和SageMaker能够发现数据集。
→AWS Glue Crawlers使用Schema + 元数据填充AWS Glue Data Catalog。Athena、Redshift Spectrum和SageMaker都可以使用它。
参考↗
需要对数据湖进行列级和行级访问控制,并带审计日志。
→AWS Lake Formation。IAM和S3桶策略不提供结构化数据的列级粒度。
原因: Lake Formation集中管理Glue Data Catalog的治理,并与CloudTrail集成进行审计。
参考↗
在S3数据上运行即席SQL,无需预置任何资源。
→Amazon Athena。无服务器,按TB扫描量付费。分区数据并使用Parquet来降低成本和时间。
参考↗
使用现有PySpark代码进行50 TB特征工程,必须在4小时内完成。
→带有Spark的Amazon EMR。可调集群大小,支持Spot实例,可运行现有代码而无需修改。
原因: Glue ETL也运行Spark,但EMR对集群形态提供更多控制;SageMaker Processing适用于较小规模的单容器作业。
参考↗
在训练前运行自定义scikit-learn / pandas预处理脚本。瞬时计算,无闲置成本。
→使用SKLearn(或PySpark)容器的SageMaker Processing job。进行资源配置、运行并终止。
原因: 优于在Notebook上运行(持续运行,产生费用)或Lambda(15分钟限制,内存上限)。
参考↗
经济高效地标注100,000张图片——希望结合人工和自动化标注。
→启用自动数据标注的Amazon SageMaker Ground Truth。在初始人工标注子集后,Ground Truth训练一个模型并自动标注高置信度样本。
原因: 主动学习通常可将标注成本降低高达70%。A2I用于人工审查模型预测,而非批量标注。
参考↗
多个标注者意见不一致;需要高级审阅员验证部分标签。
→Ground Truth标签验证(审计)工作流。一部分标签被路由到审查人员进行批准、拒绝或调整。结合标注整合实现多工作者多数投票。
参考↗
训练(批处理)和推理(亚10毫秒)都需要相同的工程特征。
→Amazon SageMaker Feature Store,在特征组上同时启用在线(online)和离线(offline)存储。在线存储支持实时GetRecord;离线存储(S3中的Parquet)支持训练。
原因: 无需自定义DynamoDB ↔ S3同步,即可消除训练/服务偏差。
参考↗
定义特征组——哪些是强制性的。
→记录标识符名称(每条记录的唯一键)和事件时间特征名称(用于时间点查询的时间戳)。
参考↗
连接两个特征组进行训练,同时避免未来特征值泄露。
→使用事件时间列,对离线存储进行时间点(Point-in-time)连接。每个训练行只看到在其事件时间戳存在的特征值。
原因: 直接对最新值进行JOIN会导致数据泄露,因为它会将事件后特征漂移暴露给模型。
参考↗
为500 GB数据集选择一个SageMaker训练数据输入模式。
→文件模式(File mode)→ 整个数据集首先下载(启动慢,EBS成本高)。管道模式(Pipe mode)→ 从S3流式传输,启动快,存储成本低。快速文件模式(FastFile mode)→ 懒惰的文件级流式传输。对于大型数据集,请使用管道模式(或快速文件模式)以避免下载。
参考↗
数百万个小文件(每个约50 KB)——管道模式吞吐量差。
→打包成Amazon RecordIO (protobuf)并通过管道模式进行流式传输。顺序记录消除了每个文件的S3 GET开销。
参考↗
为S3上的机器学习数据湖选择存储格式和布局,并考虑频繁的列子集读取 + 分区过滤。
→Parquet(列式、压缩)按最常过滤的列(例如日期或区域)进行分区。在Athena和SageMaker中驱动列剪枝 + 分区剪枝。
参考↗
Glue ETL每次运行都会重新处理已处理过的文件。
→启用Glue job bookmarks。使用PAUSE选项,以便失败的运行不会推进bookmark;仅在需要时重置。
参考↗
在Glue ETL管道中验证Schema、类型、值范围和空值约束。
→使用DQDL规则的AWS Glue Data Quality。当检查失败时,暂停管道。
参考↗
编码分类特征。有些是有序的(例如Basic/Standard/Premium),有些是无序的(例如美国州份)。
→有序 → 序数编码(保留等级)。无序 → 独热编码(避免虚假序数关系)。避免对无序特征使用标签编码。目标编码需要仔细的交叉验证以避免数据泄露。
数值列存在缺失值,且这些缺失值与另一个特征(例如收入缺失取决于就业类型)相关。
→基于组的中位数插补(按就业类型计算中位数)。保留关系;均值对异常值敏感;丢弃会丢失数据;零值会引入偏差。
正类占比为0.3%的二元分类。
→仅在训练折叠上(拆分后)进行SMOTE过采样。结合PR曲线/F1评估,而不是准确率。
原因: 在拆分后应用过采样以避免数据泄露。准确率在不平衡数据上具有误导性。
右偏的数值特征(例如收入)损害线性模型性能。
→对数变换。压缩右侧尾部并产生更对称的分布。标准化/Min-Max变换改变尺度,但不改变形状。
50个高度相关的特征;希望降低维度同时保留方差。
→PCA。将相关特征转换为按方差排序的非相关主成分。
选择训练/验证/测试数据集划分策略。
→不平衡分类 → 分层划分(保留类别比例)。时间序列 → 按时间顺序划分(在早期数据上训练,在最新数据上测试);绝不要随机打乱。IID表格数据 → 随机划分。