机器学习技术让本来不少繁琐、耗时的操做都能自动实现,大幅提高工做和生活效率,然而为了实现这一点,首先须要有足够高质量的 ML 模型,要想得到这东西可并不容易。html
1959年,Arthur Samuel 将机器学习定义为让计算机可以无需明确编程而进行学习。在实践中,这意味着要找到一种算法,能够从现有数据集中提取模式,而后使用这些模式来构建可很好地泛化到新数据的预测模型。从那时起,人们发明了许多机器学习算法,为科学家和工程师提供了充足地选择,帮助他们构建了惊人的应用程序。git
可是丰富的算法也带来了一个难题:应该选择哪一种算法?如何可靠地找出哪一种算法在特定业务问题上表现最佳?此外,机器学习算法一般会列出很长的训练参数(也称为超参数),若是想从模型中得到全部额外精度,则须要将其设置为“恰好合适”。更糟糕的是,算法还须要以特定方式(也称为特征工程)准备和转换数据,才能实现最佳学习效果,而且咱们还须要选择最佳实例类型。github
因此实际上,「无需明确编程」这一点到底体如今哪?算法
体如今最近正式发布的 Amazon SageMaker Autopilot 中!该功能能够在彻底控制和可见的状况下,自动建立最佳分类和回归机器学习模型。编程
经过使用单个 API 调用或在 Amazon SageMaker Studio 中单击几下,SageMaker Autopilot 首先会检查数据集,并运行大量候选项以找出数据预处理步骤、机器学习算法和超参数的最佳组合。而后,它将使用这种组合来训练推断管道,咱们能够轻松地将其部署在实时终端节点上或进行批处理。与 Amazon SageMaker 同样,全部这些操做都在彻底托管的基础设施上进行。app
最后一样重要的是:SageMaker Autopilot 还会生成 Python 代码,确切显示数据的预处理方式:咱们不只能够了解 SageMaker Autopilot 的工做方式,若是愿意,还能够从新使用该代码进行进一步的手动调整。
截止目前,SageMaker Autopilot 支持:机器学习
让咱们以这个笔记本示例为起点:借此创建一个二进制分类模型,预测客户是接受仍是拒绝营销报价。请花几分钟阅读,你们会发现业务问题自己很容易理解,数据集既不大也不复杂。可是须要几个非直观的预处理步骤,还须要挑选算法及其参数。而 SageMaker Autopilot 能够解决这一难题!分布式
首先获取数据集的副本,快速浏览前几行:工具
随后将其上传到 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 做业:
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 会使用基于数据大小和算法的启发式方法!
无需配置,便可使用 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 查看):
达到最大候选项数量(或其中一种中止条件)后,做业完成。随后可使用 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 正常运行!
那么模型的构建方式以及其余候选项又有什么用?下文将详细介绍。
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
第一个笔记本包含有关数据集的信息:
第二个笔记本包含有关 SageMaker Autopilot 做业的完整详细信息:候选项、数据预处理步骤等。全部代码都可用,咱们能够更改“旋钮”以进行进一步的实验。
如上图所示,咱们能够彻底控制和查看模型的构建方式。
Amazon SageMaker Autopilot 使机器学习比以往任什么时候候都更加简单易用。不管是刚开始机器学习,仍是经验丰富的从业者,SageMaker Autopilot 均可以帮助咱们使用如下任一途径更快更好地构建模型:
目前咱们能够在如下区域使用 SageMaker Autopilot: