AutoML 让您能够在机器学习 (ML) 项目生命周期开始时从数据中获得快速、全面的见解。 预先了解哪些预处理技术和算法类型可以提供最佳结果,可以减少开发、训练和部署正确模型的时间。 它在每个模型的开发过程中都发挥着至关重要的作用,使数据科学家能够专注于最有前途的机器学习技术。 此外,AutoML 还提供了基准模型性能,可以作为数据科学团队的参考点。
AutoML 工具将不同算法和各种预处理技术的组合应用于您的数据。 例如,它可以缩放数据、执行单变量特征选择、在不同方差阈值水平下进行 PCA 以及应用聚类。 这种预处理技术可以单独应用,也可以组合在管道中。 随后,AutoML 工具将在不同版本的预处理数据集上训练不同的模型类型,例如线性回归、弹性网络或随机森林,并执行超参数优化 (HPO)。 亚马逊SageMaker自动驾驶仪 消除了构建 ML 模型的繁重工作。 提供数据集后,SageMaker Autopilot 会自动探索不同的解决方案以找到最佳模型。 但是,如果您想部署定制版本的 AutoML 工作流程该怎么办?
这篇文章展示了如何创建定制的 AutoML 工作流程 亚马逊SageMaker 运用 Amazon SageMaker 自动模型调整 示例代码可在 GitHub仓库。
解决方案概述
对于此用例,我们假设您是在专门领域开发模型的数据科学团队的一员。 您已经开发了一套自定义预处理技术,并选择了许多您通常希望能够很好地解决您的 ML 问题的算法。 在处理新的 ML 用例时,您希望首先使用预处理技术和算法执行 AutoML 运行,以缩小潜在解决方案的范围。
对于此示例,您不使用专门的数据集;而是使用特定的数据集。 相反,您使用将从中导入的加州住房数据集 亚马逊简单存储服务 (亚马逊 S3)。 重点是使用 SageMaker HPO 演示该解决方案的技术实施,稍后可以将其应用于任何数据集和领域。
下图展示了整体解决方案工作流程。
先决条件
以下是完成本文中的演练的先决条件:
实施解决方案
完整的代码可以在 GitHub回购.
实施该解决方案的步骤(如工作流程图中所示)如下:
- 创建一个笔记本实例 并指定以下内容:
- 针对 笔记本实例类型,选择 ml.t3.中.
- 针对 弹性推论,选择 没有.
- 针对 平台标识符,选择 亚马逊 Linux 2、Jupyter 实验室 3.
- 针对 IAM角色,选择默认
AmazonSageMaker-ExecutionRole
。 如果不存在则创建一个新的 AWS身份和访问管理 (IAM) 角色并附加 AmazonSageMakerFullAccess IAM 策略.
请注意,您应该在生产中创建最小范围的执行角色和策略。
- 打开笔记本实例的 JupyterLab 界面并克隆 GitHub 存储库。
您可以通过启动新的终端会话并运行 git clone <REPO>
命令或使用 UI 功能,如以下屏幕截图所示。
- 打开
automl.ipynb
笔记本文件,选择conda_python3
内核,并按照说明触发 HPO 作业集.
要在不做任何更改的情况下运行代码,您需要增加服务配额 ml.m5.large 用于训练作业使用 和 所有训练作业的实例数。 默认情况下,AWS 对于这两个配额仅允许 20 个并行 SageMaker 训练作业。 您需要请求将两者的配额增加到 30。 这两项配额更改通常应在几分钟内获得批准。 参考 请求增加配额 获取更多信息.
如果不想改变配额,只需修改配额的值即可 MAX_PARALLEL_JOBS
脚本中的变量(例如 5)。
此解决方案将在您的 AWS 账户中产生费用。 该解决方案的成本将取决于 HPO 培训作业的数量和持续时间。 随着这些增加,成本也会增加。 您可以通过限制培训时间和配置来降低成本 TuningJobCompletionCriteriaConfig
根据本文后面讨论的说明。 有关定价信息,请参阅 Amazon SageMaker定价.
在以下部分中,我们将通过代码示例以及分析结果和选择最佳模型的步骤更详细地讨论笔记本。
初始设置
让我们从运行 导入和设置 部分 custom-automl.ipynb
笔记本。 它安装并导入所有必需的依赖项,实例化 SageMaker 会话和客户端,并设置用于存储数据的默认区域和 S3 存储桶。
资料准备
下载加州住房数据集并通过运行来准备它 下载数据 笔记本的部分。 数据集被拆分为训练和测试数据帧,并上传到 SageMaker 会话默认 S3 存储桶。
包括目标在内,整个数据集共有 20,640 条记录和 9 列。 目标是预测房屋的中值(medianHouseValue
柱子)。 以下屏幕截图显示了数据集的顶行。
培训脚本模板
本文中的 AutoML 工作流程基于 scikit学习 预处理管道和算法。 目的是生成不同预处理管道和算法的大量组合,以找到性能最佳的设置。 让我们从创建一个通用训练脚本开始,该脚本保留在笔记本实例本地。 在此脚本中,有两个空注释块:一个用于注入超参数,另一个用于预处理模型管道对象。 它们将为每个候选预处理模型动态注入。 使用一个通用脚本的目的是使实现保持干燥(不要重复)。
创建预处理和模型组合
preprocessors
字典包含应用于模型所有输入特征的预处理技术的规范。 每个配方都使用一个定义 Pipeline
或者 FeatureUnion
来自 scikit-learn 的对象,它将各个数据转换链接在一起并将它们堆叠在一起。 例如, mean-imp-scale
是一个简单的方法,可确保使用相应列的平均值来估算缺失值,并且使用 标准缩放器。 相反, mean-imp-scale-pca
配方将更多操作链接在一起:
- 用平均值估算列中的缺失值。
- 使用平均值和标准差应用特征缩放。
- 在指定方差阈值的输入数据之上计算 PCA,并将其与估算和缩放的输入特征合并在一起。
在这篇文章中,所有输入特征都是数字。 如果输入数据集中有更多数据类型,则应指定更复杂的管道,其中不同的预处理分支应用于不同的要素类型集。
models
字典包含适合数据集的不同算法的规范。 每个模型类型在字典中都有以下规范:
- 脚本输出 – 指向估计器使用的训练脚本的位置。 当
models
字典与preprocessors
字典。 - 插入 – 定义将被插入到的代码
script_draft.py
并随后保存在script_output
。 钥匙“preprocessor”
故意留空,因为该位置已填充预处理器之一,以便创建多个模型-预处理器组合。 - 超参数 – 由 HPO 作业优化的一组超参数。
- include_cls_元数据 – SageMaker 所需的更多配置详细信息
Tuner
类。
一个完整的例子 models
字典可在 GitHub 存储库中找到。
接下来,让我们迭代一下 preprocessors
和 models
字典并创建所有可能的组合。 例如,如果您的 preprocessors
字典包含 10 个食谱,并且您有 5 个模型定义 models
字典中,新创建的 pipelines 字典包含 50 个在 HPO 期间评估的预处理器模型管道。 请注意,此时尚未创建单独的管道脚本。 Jupyter Notebook 的下一个代码块(单元格 9)将迭代所有预处理器模型对象 pipelines
字典,插入所有相关代码段,并将特定于管道的脚本版本保留在本地笔记本中。 在创建插入 HPO 作业的各个估算器时,将在后续步骤中使用这些脚本。
定义估计器
您现在可以在脚本准备好后定义 HPO 作业使用的 SageMaker Estimators。 让我们从创建一个包装类开始,该类为所有估计器定义一些通用属性。 它继承自 SKLearn
类并指定角色、实例计数和类型,以及脚本将哪些列用作功能和目标。
让我们构建 estimators
字典通过迭代之前生成并位于 scripts
目录。 您使用以下方法实例化一个新的估计器 SKLearnBase
类,具有唯一的估计器名称和脚本之一。 请注意, estimators
字典有两层:顶层定义了一个 pipeline_family
。 这是基于要评估的模型类型的逻辑分组,等于模型的长度 models
字典。 第二层包含单独的预处理器类型与给定的组合 pipeline_family
。 创建 HPO 作业时需要此逻辑分组。
定义 HPO 调谐器参数
优化将参数传递到 HPO Tuner
班级 HyperparameterTunerArgs
数据类使用 HPO 类所需的参数进行初始化。 它附带了一组函数,可确保在一次部署多个模型定义时以预期的格式返回 HPO 参数。
下一个代码块使用前面介绍的 HyperparameterTunerArgs
数据类。 您创建另一个名为 hp_args
并生成一组特定于每个的输入参数 estimator_family
来自 estimators
字典。 这些参数将在下一步为每个模型系列初始化 HPO 作业时使用。
创建 HPO 调谐器对象
在此步骤中,您将为每个 estimator_family
。 为什么要创建三个单独的 HPO 作业,而不是在所有估算器中只启动一个作业? 这 HyperparameterTuner
类仅限于附加 10 个模型定义。 因此,每个 HPO 负责为给定模型系列找到性能最佳的预处理器并调整该模型系列的超参数。
以下是有关设置的其他几点:
- 优化策略是贝叶斯策略,这意味着 HPO 会主动监控所有试验的性能,并将优化引导至更有希望的超参数组合。 提前停止应设置为 关闭 or 汽车 当使用贝叶斯策略时,贝叶斯策略本身会处理该逻辑。
- 每个 HPO 作业最多运行 100 个作业,并并行运行 10 个作业。 如果您正在处理更大的数据集,您可能希望增加作业总数。
- 此外,您可能需要使用设置来控制作业运行的时间以及 HPO 触发的作业数量。 一种方法是设置最大运行时间(以秒为单位)(在本文中,我们将其设置为 1 小时)。 另一种是使用最近发布的
TuningJobCompletionCriteriaConfig
。 它提供了一组设置来监视作业的进度并确定更多作业是否可能会改善结果。 在这篇文章中,我们将没有提高的训练作业的最大数量设置为 20。这样,如果分数没有提高(例如,从第 XNUMX 次试验开始),您无需为剩余的试验付费,直到max_jobs
到达了。
现在让我们迭代一下 tuners
和 hp_args
字典并触发 SageMaker 中的所有 HPO 作业。 请注意 wait 参数的用法设置为 False
,这意味着内核不会等到结果完成,您可以立即触发所有作业。
并非所有训练作业都可能完成,其中一些作业可能会被 HPO 作业停止。 其原因是 TuningJobCompletionCriteriaConfig
—如果满足任何指定条件,则优化结束。 在这种情况下,当优化标准连续 20 个作业没有改善时。
分析结果
笔记本的单元格 15 检查所有 HPO 作业是否已完成,并将所有结果以 pandas 数据帧的形式组合起来以供进一步分析。 在详细分析结果之前,让我们先大致了解一下 SageMaker 控制台。
在顶部的 超参数调整作业 页面上,您可以看到您启动的三个 HPO 作业。 他们都提前完成了任务,没有完成全部 100 项训练任务。 在下面的屏幕截图中,您可以看到 Elastic-Net 模型系列完成了最多的试验次数,而其他模型系列则不需要那么多训练作业即可找到最佳结果。
您可以打开 HPO 作业以访问更多详细信息,例如单个训练作业、作业配置以及最佳训练作业的信息和性能。
让我们根据结果生成可视化结果,以更深入地了解所有模型系列的 AutoML 工作流程性能。
从下图中,您可以得出结论: Elastic-Net
模型的性能在 70,000 到 80,000 RMSE 之间振荡,并最终陷入停滞,因为尽管尝试了各种预处理技术和超参数值,算法仍无法提高其性能。 似乎也 RandomForest
根据 HPO 探索的超参数集,性能差异很大,但尽管进行了多次试验,它仍无法低于 50,000 RMSE 误差。 GradientBoosting
从一开始就达到了最佳性能,RMSE 低于 50,000。 HPO 尝试进一步改进该结果,但无法在其他超参数组合中实现更好的性能。 所有 HPO 作业的一般结论是,不需要太多作业即可为每个算法找到性能最佳的一组超参数。 为了进一步改善结果,您需要尝试创建更多特征并执行额外的特征工程。
您还可以检查模型预处理器组合的更详细视图,以得出有关最有希望的组合的结论。
选择最佳模型并部署它
以下代码片段根据实现的最低目标值选择最佳模型。 然后,您可以将该模型部署为 SageMaker 端点。
清理
为了防止您的 AWS 账户产生不必要的费用,我们建议删除您在本文中使用的 AWS 资源:
- 在 Amazon S3 控制台上,清空存储训练数据的 S3 存储桶中的数据。
- 在 SageMaker 控制台上,停止笔记本实例。
- 如果部署了模型端点,请将其删除。 不再使用的端点应被删除,因为它们是按部署时间计费的。
结论
在这篇文章中,我们展示了如何使用自定义选择的算法和预处理技术在 SageMaker 中创建自定义 HPO 作业。 特别是,此示例演示了如何自动生成许多训练脚本的过程以及如何使用 Python 编程结构来高效部署多个并行优化作业。 我们希望该解决方案能够构成您将使用 SageMaker 部署的任何自定义模型调整作业的支架,以实现更高的性能并加快 ML 工作流程。
查看以下资源,进一步加深您对如何使用 SageMaker HPO 的了解:
作者简介
康拉德·塞姆施 是 Amazon Web Services 数据实验室团队的高级 ML 解决方案架构师。 他帮助客户利用机器学习来解决 AWS 的业务挑战。 他喜欢发明和简化,为客户的 AI/ML 项目提供简单实用的解决方案。 他对 MLOps 和传统数据科学最感兴趣。 工作之余,他是帆板和风筝冲浪的忠实粉丝。
金枪鱼厄索伊 是 AWS 的高级解决方案架构师。 她的主要重点是帮助公共部门客户采用云技术来处理他们的工作负载。 她拥有应用程序开发、企业架构和联络中心技术方面的背景。 她的兴趣包括无服务器架构和 AI/ML。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/implement-a-custom-automl-job-using-pre-selected-algorithms-in-amazon-sagemaker-automatic-model-tuning/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 000
- 1
- 10
- 100
- 12
- 13
- 14
- 15%
- 20
- 2000
- 22
- 25
- 28
- 30
- 39
- 50
- 7
- 70
- 8
- 80
- 9
- a
- Able
- 关于
- ACCESS
- 根据
- 账号管理
- 实现
- 横过
- 积极地
- 额外
- 另外
- 采用
- 后
- AI / ML
- 瞄准
- 算法
- 算法
- 所有类型
- 允许
- 允许
- 已经
- 还
- Amazon
- 亚马逊SageMaker
- 亚马逊网络服务
- an
- 分析
- 分析
- 分析
- 和
- 另一个
- 任何
- 应用领域
- 应用程序开发
- 应用的
- 适用
- 使用
- 批准
- 架构
- 保健
- 论点
- 参数
- AS
- 承担
- At
- 连接
- 汽车
- 自动化
- 自动表
- 自动
- AutoML
- 可使用
- AWS
- 背景
- 基地
- 基于
- 底线
- 贝叶斯
- BE
- 因为
- before
- 开始
- 如下。
- 最佳
- 更好
- 之间
- 大
- 阻止
- 吹氣梢
- 都
- 分支机构
- 建立
- 建筑物
- 商业
- 但是
- 按键
- by
- 加州
- 呼叫
- 被称为
- CAN
- 候选人
- 案件
- 例
- Center
- 链
- 挑战
- 更改
- 更改
- 收费
- 支票
- 程
- CLF
- 客户
- 云端技术
- 簇
- 集群
- 码
- 柱
- 列
- 组合
- 组合
- 结合
- 结合
- 购买的订单均
- 评论
- 相当常见
- 完成
- 完成
- 完成
- 复杂
- 总结
- 结论
- 进行
- 配置
- 连续
- 安慰
- CONTACT
- 联络中心
- 包含
- 对比
- 控制
- 价格
- 成本
- 可以
- 创建信息图
- 创建
- 创造
- 标准
- 关键
- 目前
- 习俗
- 合作伙伴
- data
- 数据科学
- 数据集
- 处理
- 决定
- 深化
- 默认
- 定义
- 定义
- 定义
- 定义
- 演示
- 演示
- 依赖
- 依赖
- 根据
- 部署
- 部署
- 部署
- 部署
- 漂移
- 尽管
- 细节
- 详细
- 详情
- 开发
- 发达
- 研发支持
- 发展
- 偏差
- 信息通信技术部
- 不同
- 目录
- 讨论
- 讨论
- do
- 不会
- 域
- 别
- 向下
- 画
- 干
- 为期
- ,我们将参加
- 动态
- 每
- 早
- 高效
- 消除
- enable
- 端点
- 工程师
- 确保
- 确保
- 企业
- 整个
- 完全
- 等于
- 错误
- 评估
- 评估
- 终于
- 所有的
- 检查
- 例子
- 例子
- 执行
- 存在
- 期望
- 预期
- 实验
- 解释
- 探讨
- 探讨
- false
- 家庭
- 家庭
- 风扇
- 专栏
- 特征
- 少数
- 部分
- 文件
- 满
- 找到最适合您的地方
- 寻找
- 姓氏:
- 适合
- 五
- 专注焦点
- 遵循
- 以下
- 如下
- 针对
- 森林
- 申请
- 格式
- FRAME
- 止
- 前
- ,
- 功能
- 功能
- 功能
- 进一步
- 其他咨询
- 生成
- 产生
- 发电
- 得到
- 混帐
- GitHub上
- 特定
- Go
- 目标
- 去
- 图形
- 手
- 手柄
- 有
- 有
- he
- 重
- 举重
- 帮助
- 帮助
- 这里
- 高水平
- 更高
- 最高
- 抱有希望
- 小时
- 别墅
- 户
- 住房
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- 超参数优化
- 超参数调整
- 身分
- if
- 实施
- 履行
- 进口
- 进口
- 改善
- 改善
- in
- 包括
- 包含
- 增加
- 表明
- 个人
- 个别地
- 信息
- 输入
- 输入
- 刀片
- 可行的洞见
- 例
- 代替
- 说明
- 积分
- 故意地
- 利益
- 接口
- 成
- 介绍
- IT
- 它的
- 本身
- 工作
- 工作机会
- JPG
- 只是
- 只有一个
- 保持
- 键
- 知识
- 实验室
- 大
- 大
- 后来
- 推出
- 发射
- 学习
- 左
- 长度
- Level
- 各级
- 生命周期
- 翻新
- 喜欢
- 容易
- 限制
- Linux的
- 加载
- 当地
- 位于
- 圖書分館的位置
- 逻辑
- 合乎逻辑的
- 长
- 不再
- 看
- 占地
- 最低
- 机
- 机器学习
- 许多
- 最多
- 可能..
- 意味着
- 手段
- 合并
- 一半
- 指标
- 可能
- 分钟
- 失踪
- ML
- 多播
- 模型
- 模型
- 修改
- 显示器
- 显示器
- 更多
- 最先进的
- 多
- 姓名
- 狭窄
- 导航
- 需求
- 全新
- 新
- 下页
- 没有
- 不包含
- 笔记本
- 注意到
- 现在
- 数
- 麻木
- 对象
- 目标
- 对象
- of
- 折扣
- 优惠精选
- on
- 一旦
- 一
- 仅由
- 打开
- 运营
- 最佳
- 优化
- 优化
- 优化
- or
- 秩序
- OS
- 其他名称
- 其它
- 输出
- 产量
- 学校以外
- 超过
- 最划算
- 页
- 大熊猫
- 并行
- 参数
- 部分
- 特别
- 通过
- 多情
- 径
- 演出
- 性能
- 执行
- 仍然存在
- 件
- 管道
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 扮演
- 插头
- 点
- 点
- 政策
- 人口
- 可能
- 帖子
- 潜力
- 务实
- 预测
- 预报器
- Prepare
- 先决条件
- 礼物
- 防止
- 先前
- 价格
- 小学
- 打印
- 市场问题
- 过程
- 生产
- 生产
- 代码编程
- 进展
- 项目
- 项目
- 有希望
- 提供
- 提供
- 优
- 国家
- 目的
- 蟒蛇
- 随机
- 快
- 达到
- 准备
- 原因
- 最近
- 食谱
- 建议
- 记录
- 减少
- 减少
- 参考
- 参考
- 关于
- 正则表达式
- 地区
- 发布
- 相应
- 其余
- 去掉
- 重复
- 知识库
- 请求
- 要求
- 必须
- 资源
- 那些
- 提供品牌战略规划
- 受限
- 导致
- 成果
- 回报
- 右
- 角色
- 运行
- 运行
- 运行
- 运行
- sagemaker
- SageMaker 自动模型调整
- 保存
- 鳞片
- 缩放
- 科学
- 科学家
- scikit学习
- 范围
- 得分了
- 脚本
- 脚本
- 其次
- 秒
- 部分
- 部分
- 扇形
- 看到
- 似乎
- 选
- 选择
- 自
- 前辈
- 分开
- 服务
- 无服务器
- 服务
- 特色服务
- 会议
- 集
- 套数
- 设置
- 格局
- 她
- 应该
- 展出
- 如图
- 作品
- 简易
- 简化
- 只是
- 片段
- So
- 方案,
- 解决方案
- 解决
- 一些
- 专门
- 具体的
- 规范
- 规格
- 指定
- 速度
- 分裂
- 堆
- 标准
- 开始
- 开始
- Status
- 步
- 步骤
- Stop 停止
- 停止
- 停车
- 存储
- 存储
- 存储
- 策略
- 结构体
- 结构
- 后来
- 这样
- 支持
- 表
- 量身定制
- 采取
- 目标
- 团队
- 文案
- 技术
- 技术
- 终端
- test
- 测试
- 这
- 其
- 他们
- 然后
- 那里。
- 因此
- 博曼
- 他们
- Free Introduction
- 那些
- 三
- 门槛
- 通过
- 次
- 至
- 一起
- 工具
- 最佳
- 合计
- 向
- 传统
- 培训
- 产品培训
- 转换
- 试用
- 试验
- 尝试
- 触发
- 引发
- 触发
- 试图
- 调音
- 二
- 类型
- 类型
- 一般
- ui
- 下
- 理解
- 独特
- 直到
- 无用
- 上传
- 用法
- 使用
- 用例
- 用过的
- 使用
- 运用
- 验证
- 折扣值
- 价值观
- 变量
- 多变
- 各个
- 版本
- 版本
- 查看
- 可视化
- W
- 等待
- 演练
- 想
- 是
- 方法..
- we
- 卷筒纸
- Web服务
- 井
- 为
- 什么是
- ,尤其是
- 而
- 是否
- 这
- 为什么
- 将
- 中
- 也完全不需要
- 工作
- 工作流程
- 工作流程
- 加工
- 将
- 写
- 但
- 完全
- 您一站式解决方案
- 你自己
- 和风网