SageMaker | 自动化更进一步,ML模型也能本身生成

专属图1.png

机器学习技术让本来不少繁琐、耗时的操做都能自动实现,大幅提高工做和生活效率,然而为了实现这一点,首先须要有足够高质量的 ML 模型,要想得到这东西可并不容易。html

1959年,Arthur Samuel 将机器学习定义为让计算机可以无需明确编程而进行学习。在实践中,这意味着要找到一种算法,能够从现有数据集中提取模式,而后使用这些模式来构建可很好地泛化到新数据的预测模型。从那时起,人们发明了许多机器学习算法,为科学家和工程师提供了充足地选择,帮助他们构建了惊人的应用程序。git

可是丰富的算法也带来了一个难题:应该选择哪一种算法?如何可靠地找出哪一种算法在特定业务问题上表现最佳?此外,机器学习算法一般会列出很长的训练参数(也称为超参数),若是想从模型中得到全部额外精度,则须要将其设置为“恰好合适”。更糟糕的是,算法还须要以特定方式(也称为特征工程)准备和转换数据,才能实现最佳学习效果,而且咱们还须要选择最佳实例类型。github

因此实际上,「无需明确编程」这一点到底体如今哪?算法

体如今最近正式发布的 Amazon SageMaker Autopilot 中!该功能能够在彻底控制和可见的状况下,自动建立最佳分类和回归机器学习模型编程

认识一下:Amazon SageMaker Neo

经过使用单个 API 调用或在 Amazon SageMaker Studio 中单击几下,SageMaker Autopilot 首先会检查数据集,并运行大量候选项以找出数据预处理步骤、机器学习算法和超参数的最佳组合。而后,它将使用这种组合来训练推断管道,咱们能够轻松地将其部署在实时终端节点上或进行批处理。与 Amazon SageMaker 同样,全部这些操做都在彻底托管的基础设施上进行。app

最后一样重要的是:SageMaker Autopilot 还会生成 Python 代码,确切显示数据的预处理方式:咱们不只能够了解 SageMaker Autopilot 的工做方式,若是愿意,还能够从新使用该代码进行进一步的手动调整。
截止目前,SageMaker Autopilot 支持:机器学习

  • 表格格式的输入数据,以及自动数据清理和预处理
  • 用于线性回归、二进制分类和多级分类的自动算法选择
  • 自动超参数优化
  • 分布式训练
  • 自动实例和集群大小选择

将 AutoML 与 Amazon SageMaker Autopilot 配合使用

让咱们以这个笔记本示例为起点:借此创建一个二进制分类模型,预测客户是接受仍是拒绝营销报价。请花几分钟阅读,你们会发现业务问题自己很容易理解,数据集既不大也不复杂。可是须要几个非直观的预处理步骤,还须要挑选算法及其参数。而 SageMaker Autopilot 能够解决这一难题!分布式

首先获取数据集的副本,快速浏览前几行:工具

automl1-1024x399.png

随后将其上传到 Amazon Simple Storage Service(S3)中,但不进行任何预处理。性能

sess.upload_data(path="automl-train.csv", key_prefix=prefix + "/input")
 
's3://sagemaker-us-west-2-123456789012/sagemaker/DEMO-automl-dm/input/automl-train.csv'

随后配置 AutoML 做业:

  • 设置数据集的位置;
  • 选择我但愿模型预测的目标属性:在本例中,“y”列显示客户是否接受了报价;
  • 设置训练工件的位置。
input_data_config = [{
      'DataSource': {
        'S3DataSource': {
          'S3DataType': 'S3Prefix',
          'S3Uri': 's3://{}/{}/input'.format(bucket,prefix)
        }
      },
      'TargetAttributeName': 'y'
    }
  ]
 
output_data_config = {
    'S3OutputPath': 's3://{}/{}/output'.format(bucket,prefix)
  }

就这么简单!固然,随着对于数据和模型的了解深刻,SageMaker Autopilot 的许多选项会派上用场,例如:

  • 设置要训练的问题类型:线性回归、二进制分类或多级分类。若是不肯定,SageMaker Autopilot 会经过分析目标属性值自动找出类型;
  • 使用特定指标进行模型评估;
  • 定义完成标准:最长运行时间等。

不过有件事不须要咱们去作,那就是调整训练集群的大小,由于 SageMaker Autopilot 会使用基于数据大小和算法的启发式方法!
无需配置,便可使用 CreateAutoMl API 启动该做业:

auto_ml_job_name = 'automl-dm-' + timestamp_suffix
print('AutoMLJobName: ' + auto_ml_job_name)
 
sm.create_auto_ml_job(AutoMLJobName=auto_ml_job_name,
                      InputDataConfig=input_data_config,
                      OutputDataConfig=output_data_config,
                      RoleArn=role)
 
AutoMLJobName: automl-dm-28-10-17-49

做业分四个步骤运行(可使用 DescribeAutoMlJob API 查看):

  1. 将数据集分为训练集和验证集
  2. 分析数据,以便建议应在数据集上试用的管道
  3. 特征工程,将转换应用于数据集和单个特征
  4. 管道选择和超参数调整,选择性能最高的管道以及用于训练算法的最佳超参数

达到最大候选项数量(或其中一种中止条件)后,做业完成。随后可使用 ListCandidatesForAutoMlJob API 获取有关全部候选项的详细信息,也能够在 AWS 控制台中查看。

candidates = sm.list_candidates_for_auto_ml_job(AutoMLJobName=auto_ml_job_name, SortBy='FinalObjectiveMetricValue')['Candidates']
index = 1
for candidate in candidates:
  print (str(index) + "  " + candidate['CandidateName'] + "  " + str(candidate['FinalAutoMLJobObjectiveMetric']['Value']))
  index += 1
 
1 automl-dm-28-tuning-job-1-fabb8-001-f3b6dead 0.9186699986457825
2 automl-dm-28-tuning-job-1-fabb8-004-03a1ff8a 0.918304979801178
3 automl-dm-28-tuning-job-1-fabb8-003-c443509a 0.9181839823722839
4 automl-dm-28-tuning-job-1-ed07c-006-96f31fde 0.9158779978752136
5 automl-dm-28-tuning-job-1-ed07c-004-da2d99af 0.9130859971046448
6 automl-dm-28-tuning-job-1-ed07c-005-1e90fd67 0.9130859971046448
7 automl-dm-28-tuning-job-1-ed07c-008-4350b4fa 0.9119930267333984
8 automl-dm-28-tuning-job-1-ed07c-007-dae75982 0.9119930267333984
9 automl-dm-28-tuning-job-1-ed07c-009-c512379e 0.9119930267333984
10 automl-dm-28-tuning-job-1-ed07c-010-d905669f 0.8873512744903564

目前,假设咱们只对最佳试验感兴趣:验证准确率为91.87%。让咱们将其部署到 SageMaker 终端节点,就像部署任何模型同样:

model_arn = sm.create_model(Containers=best_candidate['InferenceContainers'],
                            ModelName=model_name,
                            ExecutionRoleArn=role)
 
ep_config = sm.create_endpoint_config(EndpointConfigName = epc_name,
                                      ProductionVariants=[{'InstanceType':'ml.m5.2xlarge',
                                                           'InitialInstanceCount':1,
                                                           'ModelName':model_name,
                                                           'VariantName':variant_name}])
 
create_endpoint_response = sm.create_endpoint(EndpointName=ep_name,
                                              EndpointConfigName=epc_name)

几分钟后终端节点开始运行,随后就能够用它进行预测。这意味着 SageMaker 正常运行!

那么模型的构建方式以及其余候选项又有什么用?下文将详细介绍。

使用 Amazon SageMaker Autopilot 实现彻底可见和控制

SageMaker Autopilot 将训练工件存储在 S3 中,包括两个自动生成的笔记本。

job = sm.describe_auto_ml_job(AutoMLJobName=auto_ml_job_name)
job_data_notebook = job['AutoMLJobArtifacts']['DataExplorationNotebookLocation']
job_candidate_notebook = job['AutoMLJobArtifacts']['CandidateDefinitionNotebookLocation']
 
print(job_data_notebook)
print(job_candidate_notebook)
 
s3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotCandidateDefinitionNotebook.ipynb
s3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotDataExplorationNotebook.ipynb

第一个笔记本包含有关数据集的信息:

nb1-1024x389.png

第二个笔记本包含有关 SageMaker Autopilot 做业的完整详细信息:候选项、数据预处理步骤等。全部代码都可用,咱们能够更改“旋钮”以进行进一步的实验。

nb2-1024x660.png

如上图所示,咱们能够彻底控制和查看模型的构建方式。

Amazon SageMaker Autopilot 使机器学习比以往任什么时候候都更加简单易用。不管是刚开始机器学习,仍是经验丰富的从业者,SageMaker Autopilot 均可以帮助咱们使用如下任一途径更快更好地构建模型:

目前咱们能够在如下区域使用 SageMaker Autopilot

  • 美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(加利福尼亚北部)、美国西部(俄勒冈)、
  • 加拿大(中部)、南非(圣保罗)、
  • 欧洲(爱尔兰)、欧洲(伦敦)、欧洲(巴黎)、欧洲(法兰克福)、
  • 中东(巴林)、
  • 亚太地区(孟买)、亚太地区(首尔)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)。

底图2.png

相关文章
相关标签/搜索