type
status
date
slug
summary
tags
category
icon
password
本文写作于 2025 年 8 月,截止到写作时间点为止,AWS 考试体系中涉及机器学习的有 AIF、MLA、MLS 三部分。
本文内容不牵扯统计机器学习与深度学习算法,目光基本只聚焦于 AWS Infra 方面,因为如果要写算法领域的东西,实在是篇幅和精力有限,而且现在已经有很多优秀的材料可以参考了,严格来说那也不属于 AWS 的范畴,我没有必要再整理一遍。
本文知识不代表 MLA/MLS 考试所需的所有考点,很多时候只是罗列了一些我认为比较重要的内容。
本文内容的正确性与非过时性都经过了 GPT-5 核查,但我无力随时更新这个总结,随着 AWS 技术本身的演进,其中的一些说法难免会和事实出现偏差,阅读时请注意这一点。
1. AWS 托管的高级 ML 服务
- Comprehend
- NLP 服务,识别语言,识别敏感信息,理解语气
- 名词提取,事件提取(比如 IPO 和破产)
- 可以将 S3 上的数据批量交给 Comprehend 做判断
- 可以进行骚扰及仇恨言论的毒性检测并标红
- Polly
- 文本转语音服务,可以定义词汇表,如看到 W3C 则读成其他读法
- Transcribe
- 语音转文本服务
- 可以识别语言,自动剔除敏感信息,可以自定义词汇表,如【AWS】用于特定领域演讲
- 适合客服语音转录,自动生成 CC 字幕等场景
- Translate
- 机器翻译服务,支持传入自定义词汇表文件
- Comprehend Medical,Transcribe Medical
- 医疗文本分析服务,医疗语音转文本服务
- Rekognition
- 从图片中识别内容
- 图片语义识别,图片文本提取,人脸识别
- 图片内容审核,图片生成时的辅助审核
- Textract
- 文本识别工具,比如提取卡片上的文字,读取财务发票,提取 PDF 文本等
- Contact Lens
- 帮助呼叫中心转录语音,进行 NLP 分析
- Kendra
- 企业内部的知识搜索服务,可以链接 SharePoint 和 S3 等
- Amazon Q Business
- 基于公司知识库的大语言模型,回答公司内部问题,类似于 RAG
- 建立在 Bedrock 之上,无法选择基础模型(今后可能会支持),可以限制敏感话题
- 它拥有插件,可以和外部服务沟通,比如 Slack
- 这个软件有泄露公司秘密的风险,所以用 IAM Identity Center 单点登录
- Monitron
- 端到端的传感器服务,收集振动之类的数据
- Panorama
- 端到端边缘计算机视觉服务,即给摄像头添加 AI 功能,可以结合 CloudWatch 报警
- Lookout
- 用于检测超出范围的异常值的服务,可以和各种数据存储服务集成使用,下游集成 SNS
- Fraud Detector
- 欺诈检测服务,能与 S3 集成
- Forecast
- 时间序列分析模型,支持 DeepAR+,Prophet,NPTS,ARIMA,ETS 等算法
- Personalize
- 托管的个性化物物推荐服务,需要导入 S3 上的数据,可以进行推荐或智能排序
- 能进行用户细分,也能设置剔除已经买过的东西,或注入推广内容
- 模型默认支持实时更新推荐结果
- Lex
- 聊天机器人工具
- 机器人会根据语义比如 “我想订披萨” 调用对应的 Lambda 函数完成业务逻辑
- Amazon Q Apps
- 基于提示词快速创建 APP 的工具,可以用来构建解析文件的程序等
- Amazon Q Developer
- 针对 AWS 内部资源的 QA 服务,也可以写代码,可以和 IDE 集成
- Mechanical Turk
- 众包市场,可以外包图片标注等任何事情
- Augmented AI
- 用于构建 AI + 人工审核的众包市场,如果其他 AI 工具的结果不可靠,对 AI 模型信心不足,可以发给众包公司人工审核其中的内容,比如色情内容
2. 数据标注 ——GroundTruth
- 标注者
- Amazon Mechanical Turk(AMT)(公开众包)
- Private Workforce(私有劳动力)
- Vetted Vendors(Amazon 预选供应商)
- Ground Truth 支持 “自动标注 (auto-labeling)” 模式,先人工标注一小部分数据,然后用该数据训练模型,再用模型推测剩余数据(主动学习)
- 标注流程
- 传图或文本到 S3
- 使用 GroundTruth 生成一个不带结果标签的清单 jsonl 文件
- 发送工单,执行手工标注后,会在 S3 里生成 jsonl 文件,里面有标签
3. 特征处理
- Data Wrangler
- 这个工具加速了数据探索和准备的过程,让 ETL 变得简单
- 它无需代码,数据源也可以选择 S3 或 Redshift、Athena、Snowflake 等
- 它提供了 300 多种数据转化服务,比如缩放、独热编码或处理缺失值,并且可以编辑成管道
- 可以把 ETL 代码导出到笔记本中,相比之下,DataBrew 为数据分析师而生,无法导出为兼容 Pandas 或 Spark 的代码
- 坑:Data Wrangler 不适合直接做海量数据上的特征工程,毕竟它底层还是 pandas
- 通常建议抽取不超过 5G 的数据做特征工程
- 之后导出脚本 jupyter notebook 或 Glue Job 进行大规模处理
- 注意点:Spark 里可以通过 SageMaker SDK 调用 SageMaker 做 ETL,比如添加聚类特征等
- 但反过来 SageMaker 通过 PySpark 调用 MLLib 是非主流的用法,ETL 过程的事情不应该在训练阶段做
- Feature Store
- 相当基于原先的数据集生成一张新表保存特征
- 可以把特征保存在 S3 里做训练
- 它不是实时计算平台,做预测时不会动态计算新数据的特征,而是一个预处理结果的存储库
- 需要对新数据重新做预处理
- 特征工程
- 处理缺失值
- 对于数字类列,可以使用列的平均数或中位数替换,后者可以防止离群值干扰
- 对于非数字列,可以删除行(如果行数不多)但这种方法可能带来偏差,也可以用 K 临近插值但需要评估合理性
- 处理不平衡数据
- 欠采样:少抽取多数例子,试图让正反例子均衡,但这可能打乱数据分布
- smote:用 knn 插值插入一些和少数样本相似的样本
- 结合预测需求调整判断阈值,防止假阴性或假阳性
- 处理离群值
- AWS 有自己的算法 —— 随机砍伐森林算法 (RCF)
- 特征工程其他技术
- Binning:数值范围转分类
- Transforming:将数值转化为平方、平方根、对数等形式
- Encoding:独热编码,多分类列转 0000100 型态的多列
- Scaling、Normalization:将特征压缩到较小的数值范围内让模型容易收敛
- Shuffling:让训练数据随机进入模型训练
4. 模型训练
- SageMaker
- SageMaker 工具细节
- SageMaker 目前提供了和 sklearn 不同的 20 多种算法,适合大数据分布式学习,以及与 AWS 其他服务的集成(快速部署,AB 测试等),SageMaker 底层使用的是分布式格式,数据输入格式是 RecordIO、Parquet、CSV 等
- 每次运行 estimator.fit () 时,SageMaker 都会根据用户需求启动 EC2 上的容器,并把结果写回 S3 里
- 使用 SageMaker 需要导入 sagemaker_session,并指定 S3 存储桶、子文件夹和执行 role
- 在模型训练完成后,可以部署成为一个 API,对小数据进行实时计算
- 部署后,模型会出现在 AWS 网站控制台的 Endpoint 里(本质还是 EC2),它可以开放给外部使用
- 用户在 SageMaker 中做的所有操作,包括训练的结果,都会被记录到 CloudWatch Logs 中
- SageMaker 笔记本可以接受 KMS 加密,可以加密训练节点间的通信,但是会带来时间开销
- Warm Pool 指的是一种训练作业实例复用机制,让你在多次训练之间保留已经启动好的计算资源,从而减少每次启动的等待时间,不要每次 fit 都去启动容器
- 可以选择使用 Spot 实例减少开销
- Spot 虽然省钱但是可能会被回收,这就意味着省钱的代价可能是更花时间,需要增加检查点
- 利用 Checkpointing 在训练中插入检查点,处理任务的中断和自动重启
- SageMaker 的内置机器学习算法支持分布式训练,类似 MR 的方式分布式了梯度计算
- 关于深度学习
- 深度学习算法受益于 GPU 类型的实例,比如 P3 或 G4,推理类的可以用更便宜的 C5 或 M5
- 在一个实例里使用多 GPU 训练,效果比在多实例里分别使用一个 GPU 开销小,但是事无绝对
- SageMaker Training Compiler 是编译器层面的训练优化,专门用来优化深度学习算法,号称能提高 50% 训练速度,但是和 SageMaker 内置 ML 算法不兼容
- SageMaker 提供了强化学习服务,基于 tensorflow 和 MXNet 实现,训练可以被分发到集群
- EFA 是一个连接到 EC2 上的网络接口,用于 HPC 领域,能提供很强的网络带宽优化机器学习速度
- MiCS(最小化通信规模)是减少不同节点间通信规模的技术
- 网络配置
- 笔记本默认跑在公网,也可以使用私有 VPC 训练,但是需要 S3 终结点保证数据通信
- 通常关联一个 EFS 文件系统,用于存储 Studio 用户的 notebooks 和文件数据
- 一个 SageMaker Domain 配置时必须指定一个 VPC 及其子网,通过子网来控制 Internet 和 EFS 的访问权限
- 可以是两个 VPC,一个子网配置有 NAT 网关以支持 Internet 访问,另一个子网用于访问 EFS 文件系统。Studio 用户可以被分配到不同子网,以实现隔离或网络访问控制。
- 角色配置
- SageMaker Role Manager 是一个用来建立机器学习角色和职责的工具,以可视化的方式分离用于写代码的角色、用于训练的角色、用于部署的角色等
- Debugger
- 定期保存模型状态,返回查看训练期间的中间参数,以及系统资源,也可以自动发现过拟合、类别不平衡、梯度消失等问题
- 可以和 CloudWatch 联动,还提供了 Insight 仪表盘可视化监控
- Training Job
- 是在托管环境中执行一次完整的模型训练任务,免去手动配置计算资源和训练环境的步骤,支持内置算法或自定义脚本,但是依然要手动做特征工程和调参等
- 选择训练数据测试数据和 output 的 S3 路径,并且选择一个算法,配置一些简单的参数即可执行训练任务,无需编写代码,输出一个模型压缩包
- 可以在 CloudWatch 里看到对模型评价的各种参数
- 可以克隆任务用来修改超参数重新执行
- 可以把模型部署到 Endpoint 上
- JumpStart
- 是 SageMaker Studio 的一部分,是一个提供了市面上数百个预训练好的模型的仓库
- 可以选择现成的模型,上传数据,即可直接通过界面训练,以及部署 Endpoint,无需写代码
- 它的本质是对 Training Job 的包装,但是更适合粗粒度快速部署使用 ML 模型
- AutoGluon
- 只是一个单纯的 AutoML python 库,可以脱离 SageMaker 单独使用
- 它能用少量代码训练多种模型,甚至自动做特征工程,并给出在各种评价指标下每个模型的表现
- Autopilot
- 只要告诉平台数据和输出路径,选择任务类型,配置一些简单的参数,就能自动使用多个模型训练,它会自动做特征工程、超参数调优等 AutoML 工作
- Autopilot Explainability 功能用于提供自动 ML 结果的可解释性报告
5. 模型调整
- 超参数调整的方法有网格搜索,随机搜索和贝叶斯优化,还有其他优化器
- 贝叶斯优化是对优化过程的建模,基于历史智能选点,精准、训练次数少,但是实现复杂,对高维不友好,适合于成本高、不宜多次尝试的场景
- 更好的方法叫 Hyperband,它比贝叶斯优化快 5-30 倍,更适合调优代价高的深度学习。这两个一个像智能决策者,一个像高效筛选者
- 注意点
- 不要一次调整太多的超参数,优先调整对模型影响最大的超参数
- 如果超参数调优没能达到预期效果,可以设置提前停止,也可以从中断处热启动
- 偏差是模型太 “傻”,方差是模型太 “神经”,两者都会导致模型泛化能力差
- 偏差是模型预测值与真实值之间的系统性误差,起因是模型太简单假设太强,导致训练误差和测试误差都偏高
- 方差是模型在不同训练集之间预测结果的变化程度,起因是模型太复杂过度拟合训练数据,导致训练误差很低但测试误差很高
- 控制方法
- 使用更复杂的模型(深层网络等),降低偏差,提高方差,提升拟合能力,但更容易过拟合
- 强力的正则化(L1/L2、Dropout 等),可能会提高偏差,但可以降低方差,防止模型对训练数据过拟合
- 增加训练数据,不影响偏差,降低方差,提升模型对数据分布的理解
- 交叉验证,评估并减少方差,稳定模型在不同数据集上的表现
6. 模型部署
- 基本上 SageMaker 的自己训练的每个模型和部署都需要托管在一个 ECR 注册的容器中
- 也可以自己写一个特定格式的容器交给 AWS
- Model Registry 是对模型进行版本管理的工具
- 是对已注册到 SageMaker Model Registry 的模型版本进行集中管理,用于在不同应用中共享模型,也可以用在 CICD 中
- 模型可以通过 Endpoint 部署,接口分几种类型
- 实时接口:背后是 EC2
- Serverless 接口:需要配置内存,有冷启动慢问题,底层是自动扩缩的容器
- 异步接口:如果要处理的数据很大最大 1G,可以先放入 S3,然后告知异步接口,在 SQS 排队消化 job 后放入结果 S3
- 批处理转换:前面三个用来处理单个数据,这个用来处理数据集,也是走 S3 的构造
- SageMaker Inference Recommender 能提议使用哪一种实例更好,用来满足 SLA
- 在推理过程中可以配合 CloudWatch 进行节点的 AutoScaling,也可以通过跨 AZ 实现高可用
- 部署护栏可以部署到异步或实时推理终结点,它可以把流量切换到另一个模型上,用来做蓝绿部署,它分为一次性、金丝雀、线性三种方式
- 影子测试会复制流量到两个模型上同时运行预测,并监控结果,与现行环境做比较
- Warm Pool
- 训练完的实例可以放入 Warm Pool,这将保留 Instance,来减少冷启动时间
- SageMaker Neo
- 是一种将模型部署到边缘位置的服务,它负责把模型编译成适合特定硬件架构的格式,可以和 IoT Greengrass 一起使用
- SageMaker ML Lineage Tracker(机器学习谱系)自动记录和追踪整个机器学习生命周期中资源之间的关系和依赖,实现模型可追溯、可复现、审计等需求,非常适合规范化 MLOps 流程
- SageMaker Pipeline 是做 MLOps 流水线的工具,支持用 python 代码定义 DAG 形成机器学习流水线,使用 EventBridge 可以触发 Pipeline
- MLFlow 是管理整个 ML 生命周期的开源工具,与 SageMaker 集成
7. 模型解释和监控
- Clarify 用于解释模型为什么做出了某种判断,用于审计
- 可以分析训练数据中是否存在标签不平衡和特征类别分布不均的问题
- 能解释各个特征在预测中的重要性
- 能衡量数据在不同维度上的分布差异
- 可解释每个要素占比如何,或者检测某个要素的整体判定倾向如何,比如女性就如何如何
- SageMaker 模型卡片和 Dashboard 用来让人审计模型
- Model Dashboard 是模型上线后的整体监控面板
- Model Monitor 在模型上线后可以添加报警,能检测到数据漂移,错误率增长等指标
- 当模型出现数据异常或者预测异常,会发出 CloudWatch 警报
- Model Monitor Data Capture 可以把从 Endpoint 新进来的预测数据和输出结果保存到 S3 供后续使用