您是否正在寻求构建可扩展且高效的机器学习解决方案?AWS 提供全面的服务套件,旨在简化机器学习生命周期的每个步骤,从数据收集到模型监控。凭借专用工具,AWS 已成为该领域的领导者,帮助企业简化其机器学习流程。在本文中,我们将深入探讨七大 AWS 服务,这些服务可以加速您的机器学习项目,让您更轻松地创建、部署和管理机器学习模型。
什么是机器学习生命周期?
机器学习 (ML) 生命周期是一个连续的循环,始于识别业务问题,终于解决方案部署到生产环境中。与传统软件开发不同,机器学习采用经验主义、数据驱动的方法,需要独特的流程和工具。以下是主要阶段:
- 数据收集:从各种来源收集高质量数据以训练模型。
- 数据准备:清理、转换和格式化数据以进行模型训练。
- 探索性数据分析 (EDA):了解可能影响模型的数据关系和异常值。
- 模型构建/训练:开发和训练算法,并对其进行微调以获得最佳结果。
- 模型评估:根据业务目标和未知数据评估模型性能。
- 部署:将模型投入生产,用于实际预测。
- 监控和维护:持续评估和重新训练模型,以确保相关性和有效性。
自动化和可扩展性在机器学习生命周期中的重要性
随着机器学习项目复杂性的不断增加,我们发现手动流程逐渐失效。自动化的生命周期可以:
- 更快的迭代和实验
- 可重复的工作流程
- 高效的资源利用
- 一致的质量控制
- 降低运营开销
可扩展性至关重要,因为数据量会不断增长,同时模型也需要处理更多请求。此外,我们还发现,设计精良的优秀机器学习系统能够扩展到大型数据集,同时在不牺牲性能的情况下实现高吞吐量推理。
AWS服务(按机器学习生命周期阶段划分)
数据收集
数据收集流程的主要服务可以由 Amazon S3 提供。Amazon Simple Storage Service(简称 Amazon S3)是 AWS 中大多数机器学习工作流的基石。作为一个高度可扩展、持久且安全的对象存储系统,它完全能够存储机器学习模型构建所需的海量数据集。
Amazon S3的主要功能:
- 几乎无限的存储容量,EB 级容量
- 99.99% 的数据持久性保证
- 通过 IAM 策略和存储桶策略进行细粒度的访问控制
- 用于数据治理的版本控制和生命周期管理
- 与 AWS 分析服务集成,实现无缝处理
- 跨区域复制,实现地理冗余
- 数据更改时,事件通知会触发工作流
- 数据加密选项,确保合规性和安全性
Amazon S3的技术能力
- 支持高达 5TB 的对象大小
- 通过分段上传和并行处理实现性能优化
- S3 传输加速,实现远距离快速上传。
- 智能分层存储类别,可根据使用模式在访问层之间自动移动数据。
- S3 Select 用于服务器端过滤,以降低数据传输成本并提高性能。
Amazon S3的定价
Amazon S3 提供 12 个月的免费套餐,其中 S3 标准存储类别提供 5GB 空间,可支持 20,000 次 GET 请求以及 2,000 次 Put、Copy、Post 或 List 请求。
Source: Amazon S3
除了免费套餐外,它还提供其他具有更高级功能的数据存储套餐。您可以付费将对象存储在 S3 存储桶中,费用合理地取决于存储桶大小、对象存储时长以及存储类别。
Source: Amazon S3
- 借助生命周期策略,对象可以自动迁移到更便宜的存储层。
- 启用 S3 存储透视图可以识别任何潜在的成本节约途径。
- 正确配置保留策略,避免产生不必要的存储成本。
- S3 Inventory 用于跟踪整个存储过程中的对象及其元数据。
数据收集的替代服务
- AWS Data Exchange:当您查找第三方数据集时,Amazon Data Exchange 会提供一份目录,其中包含许多行业提供商提供的数据。此服务还包括搜索、订阅和使用外部数据集。
- Amazon Kinesis:在实时数据收集领域,Amazon Kinesis 允许您收集、处理和分析传入的流数据。它尤其适用于需要持续输入并从输入中学习的机器学习应用程序。
- Amazon Textract:如果在文档中,您的数据将由 Textract 提取,其中还包括来自扫描文档的手写内容,并将其提供给机器学习流程。
数据准备
数据准备是机器学习生命周期中最关键的流程之一,因为它决定了我们最终将获得什么样的机器学习模型。为了实现这一点,我们可以利用不可变的 AWS Glue,它提供方便进行分析和机器学习数据准备的 ETL 软件。
AWS Glue的主要功能
- 无服务器可根据工作负载需求自动扩展
- 可视化作业设计器,无需编码即可进行 ETL 数据转换
- 嵌入式数据目录,用于跨 AWS 管理元数据
- 支持使用用户定义库的 Python 和 Scala 脚本
- 方案推断和发现
- 批量和流式 ETL 工作流
- 数据验证和分析
- 内置作业调度和监控
- 与 AWS Lake Formation 集成,实现细粒度访问控制
AWS Glue的技术功能
- 支持多种数据源,例如 S3、RDS、DynamoDB 和 JDBC
- 针对 Apache Spark 处理优化的运行时环境
- 数据抽象为半结构化数据的动态框架
- PySpark 或 Scala 中的自定义转换脚本
- 内置机器学习转换,用于数据准备
- 支持通过 Git 集成进行协作开发
- 使用作业书签进行增量处理
AWS Glue的性能优化
- 有效地对数据进行分区以实现并行处理
- 充分利用Glue 的内部性能监控,用于定位瓶颈
- 根据工作负载设置工作器的类型和数量
- 设计与查询模式对应的数据分区策略
- 尽可能使用下推谓词,以减少扫描流程
AWS Glue的定价
Source: AWS Glue
AWS Glue 的成本非常合理,因为您只需为提取、转换和加载作业所花费的时间付费。费用将根据运行作业所使用的数据处理单元 (DPU) 数量按小时计费。
数据准备的替代服务
- Amazon SageMaker Data Wrangler:数据科学专业人士更喜欢可视化界面,而 Data Wrangler 内置了 300 多种数据转换和数据质量检查功能,无需任何代码。
- AWS Lake Formation:在为机器学习 (ML) 设计全尺寸数据湖时,我们发现 Lake Formation 通过自动化大量复杂的手动任务(包括数据发现、编目和访问控制)实现了流畅的工作流程。
- Amazon Athena:在 Athena 中,SQL 团队能够对 S3 数据执行自由格式查询,从而轻松生成洞察并准备用于训练的小型数据集。
探索性数据分析 (EDA)
SageMaker Data Wrangler 凭借其内置的可视化功能,擅长将 EDA 可视化,并提供 300 多种数据转换,助力用户进行全面的数据探索。
主要功能
- 无需编写代码,即可通过可视化方式获取即时数据洞察。
- 内置直方图、散点图和相关矩阵。
- 异常值识别和数据质量评估。
- 带有统计摘要的交互式数据分析
- 支持使用大规模样本进行高效探索。
- 根据数据特征提供数据转换建议。
- 导出多种格式,以进行深入分析。
- 与特征工程工作流集成
- 一键式数据转换并提供可视化反馈
- 支持多种数据源,包括 S3、Athena 和 Redshift。
技术能力
- 点击即可进行数据探索
- 自动创建数据质量报告并提供建议。
- 设计符合分析需求的自定义可视化功能。
- Jupyter Notebook 集成,用于高级分析
- 通过使用智能采样,能够处理大型数据集。
- 提供内置统计分析技术
- 用于转换工作流的数据沿袭分析
- 将转换后的数据导出到 S3 或 SageMaker 特征存储。
性能优化
- 重用转换工作流
- 使用包含常见分析模式的预构建模型。
- 使用自动报告的工具加快数据分析速度。
- 将分析结果导出给利益相关者。
- 将洞察与下游机器学习工作流集成
Amazon SageMaker Data Wrangler定价
Amazon SageMaker Data Wrangler 的定价主要基于交互式会话和处理作业期间分配的计算资源以及相应的存储空间。据悉,SageMaker Studio 中的交互式数据准备按小时收费,具体费用因实例类型而异。在处理过程中,将数据存储在 Amazon S3 和附加卷中也会产生相关费用。
Source: SageMaker Wrangler
例如,我们看到 ml.m5.4xlarge 实例的价格约为每小时 0.922 美元。此外,运行数据转换流的处理作业类型取决于实例类型和资源使用时长。同样的 ml.m5.4xlarge 实例执行 40 分钟的作业大约需要花费 0.615 美元。最好尽快关闭闲置实例,并根据您的工作负载使用合适的实例类型,以节省成本。
更多定价信息,您可以访问此链接。
EDA的替代服务
- Amazon SageMaker Studio:为您提供功能齐全的机器学习 IDE,包括 Jupyter Notebook、实时协作以及交互式数据可视化工具。
- Amazon Athena:当您希望使用 SQL 执行临时查询来探索数据时,Athena 是一项无服务器查询服务,可直接对存储在 S3 中的数据运行查询。
- Amazon QuickSight:在构建 BI 仪表板的 EDA 阶段,QuickSight 提供交互式可视化功能,帮助利益相关者洞察数据模式。
- Amazon Redshift:用于数据仓库的 Redshift 可快速访问和分析大规模结构化数据集。
模型构建和训练
AWS Deep Learning AMI 是预先构建的 EC2 实例,可提供最大的灵活性和对训练环境的控制力,并预先配置了机器学习工具。
主要特性
- 预装机器学习框架,针对 TensorFlow、PyTorch 等进行了优化
- 可根据兼容性需求提供多个框架版本
- 基于 GPU 的配置,带来卓越的训练性能
- Root 访问权限,可完全自定义环境
- 支持跨多个实例进行分布式训练
- 允许使用 Spot 实例进行训练,从而最大限度地降低成本
- 预配置 Jupyter Notebook 服务器,可立即使用
- Conda 环境,用于隔离的软件包管理
- 支持基于 CPU 和 GPU 的训练工作负载
- 定期更新至最新的框架版本
技术能力
- 完全掌控训练基础设施和环境
- 安装和配置自定义库
- 支持复杂的分布式训练设置
- 能够更改系统级配置
- 通过 SDK 和 CLI 集成 AWS 服务
- 支持自定义 Docker 容器和编排
- 访问 HPC 实例
- 灵活的存储选项,包括 EBS/实例存储
- 网络调优,提升多节点训练性能
性能优化
- 分析训练工作负载以发现瓶颈
- 优化数据加载和预处理流水线
- 合理设置批次大小,以提升内存效率
- 在支持混合精度训练的场景下进行训练
- 在足够大的批次训练中应用梯度累积
- 对于超大型模型,考虑模型并行化
- 优化网络配置以进行分布式训练
AWS Deep Learning AMI定价
AWS Deep Learning AMI 是预先构建的 Amazon 机器映像,已针对机器学习任务进行配置,并支持 TensorFlow、PyTorch 和 MXNet 等框架。但是,底层 EC2 实例类型和使用时间可能会产生费用。
Source: AWS Deep Learning AMIs
例如,inf2.8xlarge 实例每小时收费约为 2.24 美元,而 t3.micro 实例每小时收费 0.07 美元,并且也符合 AWS 免费套餐的条件。g4ad.4xlarge 实例每小时收费约为 1.12 美元,适用于深度和大规模机器学习应用程序。附带的 EBS 卷需支付额外的存储费用。
模型构建和训练的替代服务
- Amazon SageMaker:亚马逊的旗舰服务,用于大规模构建、训练和部署机器学习模型,具有针对性能优化的内置算法、自动模型调优功能以及通过 SageMaker Studio 提供的集成开发环境。
- Amazon Bedrock:对于生成式人工智能应用程序,Bedrock 通过简单的 API 接口充当来自领先提供商(Anthropic、AI21、Meta 等)的基础模型的访问层,无需处理任何基础设施。
- EC2 实例 (P3、P4):对于 IO 密集型深度学习工作负载,配备 GPU 优化实例,可提供最高性能以实现高效的模型训练。
模型评估
模型评估的主要服务是 Amazon CodeGuru。它执行程序分析和机器学习,以评估机器学习代码质量,同时查找性能瓶颈并提出改进建议。
主要功能
- 基于机器学习的洞察,自动进行代码质量评估
- 识别性能问题并分析瓶颈。
- 检测机器学习代码中的安全漏洞
- 提供降低计算资源成本的建议。
- 添加到流行的开发平台和 CI/CD 流程。
- 持续监控生产环境中的应用程序性能
- 自动提供代码改进建议
- 支持多种语言,包括 Python
- 基于性能的实时异常检测
- 性能历史趋势分析
Amazon CodeGuru的技术功能
- 代码审查,查找潜在问题。
- 运行时性能分析,以实现最佳性能
- 将我们的解决方案与 AWS 服务集成,实现全面监控。
- 自动生成包含关键洞察的报告。
- 自定义指标跟踪和警报
- API 集成,实现编程访问
- 支持容器化应用程序
- 集成 AWS Lambda 和基于 EC2 的应用程序。
性能优化
- 应使用离线和在线评估策略。
- 应使用交叉验证来确定模型稳定性。
- 测试模型时,应使用与训练数据不同的数据。
- 在评估过程中,除了技术指标外,我们还会关注业务 KPI。
- 性能评估中应包含可解释性指标。
- 对于大规模模型更新,我们可能会进行 A/B 测试。
- 模型将根据既定标准投入生产。
Amazon CodeGuru定价
Amazon CodeGuru Reviewer 提供基于可预测存储库大小的定价模型。在前 90 天,它提供免费套餐,覆盖范围在 100,000 loc 的阈值内,90 天后,每月价格设定为标准费率,前 100K 线路每 100K 线路 10 美元,接下来的每 100K 线路 30 美元(按每次凑整计算)。
Source: Amazon CodeGuru
每个存储库包含无限数量的增量审查,以及每月两次完整扫描。如果需要更多完整扫描,则需要额外支付每 10 万行 10 美元的费用。定价基于每个存储库的最大分支,不包括空行或带有代码注释的行。此模型提供了一种简单的成本估算机制,与之前的定价方法相比,可为您节省 90% 甚至更多的费用。
模型评估替代服务
- Amazon SageMaker Experiments:它提供跟踪、比较和管理模型和实验版本的功能,并在训练期间自动跟踪参数、指标和工件,并提供对多个实验的模型性能的可视化比较。
- Amazon SageMaker Debugger:在训练期间,Debugger 会实时监控和调试训练作业,按指定间隔捕获模型状态并自动检测异常。
机器学习模型部署
AWS Lambda 支持轻量级机器学习模型的无服务器部署,并继承了自动扩展和按使用付费的特性,使其能够应对不可预测的工作负载。
主要功能
- 无服务器架构,可根据负载自动扩展
- 按请求付费模式,可优化成本
- 内置高可用性和容错功能
- 支持多种运行时环境,包括 Python、Node.js 和 Java
- 跨多个执行环境自动负载均衡
- 与 API Gateway 配合使用,创建 RESTful 端点
- 接受来自各种 AWS 服务的事件驱动执行
- 通过 CloudWatch 内置监控和日志记录
- 通过容器镜像支持容器化函数
- VPC 集成,允许以安全的方式访问私有资源
技术能力
- 绝大多数运行时环境的冷启动时间小于一秒
- 并发执行扩展能力,支持数千次调用
- 内存分配从 128 MB 到 10 GB,从而满足各种工作负载的需求
- 每次调用的超时时间最长可达 15 分钟
- 支持自定义运行时
- 触发器和目标与 AWS 服务集成
- 支持配置环境变量
- 用于共享代码和库的层跨函数
- 预置并发以保证执行性能
性能优化
- 通过优化模型减少冷启动问题。
- 预置并发适用于工作可预测的情况。
- 高效加载和缓存模型
- 优化与模型约束相关的内存分配
- 外部服务可能受益于连接重用。
- 应该分析函数性能,从而识别瓶颈。
- 优化包大小。
Amazon SageMaker托管服务定价
Amazon SageMaker 托管服务采用按需付费模式,按秒计费,并额外收取存储和传输费用。例如,在 ml.m5.large 实例中托管一个模型的费用约为每小时 0.115 美元,而在 ml.g5.xlarge 实例中托管一个模型的费用约为每小时 1.212 美元。AWS 允许 SageMaker 用户通过承诺一定使用量(每小时 1 美元)一年或三年来节省费用。
部署备选服务:
- Amazon SageMaker 托管服务:这为您提供完全托管的解决方案,用于大规模部署机器学习模型,以实现实时推理,包括自动扩展功能、通过生产变体进行 A/B 测试以及多种实例类型。
- Amazon Elastic Kubernetes Service:当您需要对部署基础设施进行更深入的控制时,EKS 为您提供基于容器的模型部署的托管 Kubernetes 服务。
- Amazon Bedrock(API 部署):对于生成式 AI 应用程序,Bedrock 通过提供对基础模型的便捷 API 访问,消除了部署的复杂性,而无需担心基础设施的管理。
机器学习模型的监控与维护
机器学习模型的监控与维护过程可由 Amazon SageMaker 模型监控服务提供。该服务通过将模型的预测结果与训练数据进行比较,监测已部署模型概念中的任何变化,并在模型质量下降时发出警报。
Source: Amazon SageMaker
主要功能
- 自动化数据质量和概念漂移检测
- 针对不同类型的漂移设置独立的警报阈值
- 可自定义频率选项的计划监控作业
- 包含全面详细信息和业务用例的违规报告
- 与 CloudWatch 指标和警报良好集成
- 支持单次和批量两种监控形式
- 针对分布变化进行进程内变化分析
- 基于训练数据集创建基线
- 沿时间轴的漂移指标可视化
- 与 SageMaker 管道集成,实现自动再训练
技术能力
- 用于分布漂移检测的统计检验
- 支持自定义监控代码和指标
- 使用训练数据自动提供约束建议
- 与 Amazon SNS 集成,实现警报
- 数据质量指标可视化
- 针对特征重要性漂移的可解释性监控
- 用于公平性评估的偏差漂移检测
- 支持监控表格数据和非结构化数据
- 与 AWS Security Hub 集成,实现合规性监控
Amazon SageMaker 模型监控器的性能优化
- 实施多层监控
- 针对漂移幅度定义明确的干预阈值
- 构建仪表板利益相关者可以了解模型的健康状况
- 制定应对不同类型警报的策略
- 使用影子模式测试模型更新
- 除了自动监控之外,定期审查性能
- 跟踪技术和业务 KPI
Amazon SageMaker 模型监控器定价
Amazon SageMaker 模型监控器的价格是可变的,取决于实例类型和作业的监控时长。例如,如果您租用 ml.m5.large,在接下来的 31 天内,每天执行两个 10 分钟的监控作业,每小时费用为 0.115 美元,则大约需要支付 1.19 美元。
运行基准作业以定义监控参数,以及启用实时终端节点或批量转换作业的数据捕获时,可能会产生额外的计算和存储费用。在成本和频率方面选择合适的实例类型是管理和优化这些成本的关键。
机器学习模型监控和维护的替代服务:
- Amazon CloudWatch:它监控基础设施和应用程序级指标,提供包含自定义仪表板和警报的完整监控解决方案。
- AWS CloudTrail:它记录您 AWS 基础设施中的所有 API 调用,以跟踪使用情况和所做的更改,从而维护机器学习操作的安全性和合规性。
AWS ML 服务概述
任务 | AWS 服务 | 理由 |
---|---|---|
数据收集 | Amazon S3 | 主要提到的用于数据收集的服务——高度可扩展、耐用的对象存储,构成了 AWS 中大多数机器学习工作流的基础。 |
数据准备 | AWS Glue | 被识别为数据准备的关键服务,提供无服务器 ETL 功能,具有可视化作业设计器和自动扩展,用于机器学习数据准备。 |
探索性数据分析 (EDA) | Amazon SageMaker Data Wrangler | 专门用于 EDA——提供可视化界面,内置图表、自动异常检测和超过 300 种数据转换。 |
模型构建/训练 | AWS Deep Learning AMIs | 强调用于模型构建的主要服务——预配置的 EC2 实例,内置各类机器学习框架,最大化灵活性和对训练环境的控制。 |
模型评估 | Amazon CodeGuru | 指定用于模型评估的服务——利用机器学习驱动的见解进行代码质量评估、性能瓶颈识别和改进建议。 |
部署 | AWS Lambda | 用于模型部署的无服务器服务——支持自动扩展、按使用付费和内置高可用性。 |
监控与维护 | Amazon SageMaker Model Monitor | 用于监控已部署模型的服务——检测概念漂移和数据质量问题,并在模型性能下降时发出自动警报。 |
小结
AWS 提供强大的服务套件,支持从开发到部署的整个机器学习生命周期。其可扩展的环境支持高效的工程解决方案,同时紧跟生成式 AI、AutoML 和边缘部署等技术的进步。通过在机器学习生命周期的每个阶段利用 AWS 工具,个人和组织可以加速 AI 的采用、降低复杂性并削减运营成本。
无论您是刚刚起步还是正在优化现有工作流程,AWS 都能提供构建有效机器学习解决方案所需的基础设施和工具,从而推动业务价值的提升。
评论留言