发布于: Oct 14, 2022

近两年,机器学习云服务已经渗透到各行各业,各种人工智能和机器学习的应用蓬勃发展,在其背后实际上会有一个完善的机器学习平台和流水线来支撑模型的开发、测试和迭代。但是这样一个系统性的平台,往往需要通过整合基础架构层和平台层来完成,这样的工程是非常消耗人力和物力的。

而 Amazon Web Services 作为云计算的领导者,在基础架构层可以提供丰富的、充足的算力,在平台层提供全家桶式的机器学习平台服务,那么最后一步就是需要使用一条流水线将这些机器学习中各个环节串联在一起。

在本篇 Blog 中,我们将展现如果通过 Amazon Web Services 的服务构建云原生的机器学习流水线。本文中所有的代码您都可以从这个 Github Repo 中获取。

在一个完整的机器学习工作流中,通常都包括以上几个环节:

  • 数据标注,对于监督学习来说,我们的训练数据不仅仅需要特征数据,还需要对每一条数据的标注(label 或者 target),这一步往往通过大数据处理的方式得到,在 Amazon Web Services 上有丰富的工具和服务可以帮助客户完成此类任务。
  • 数据预处理和特征工程,数据预处理是指对数据进行一些处理,比如处理缺失值和去除异常值数据等等,使数据处理一个合理分布中;而特征工程,是指将非实数的特征,转换成模型可以理解的数据,比如 one-hot 和 feature hashing 等特征处理方法。这一步往往也是通过大数据的处理方式可以得到。
  • 算法构建,这一步很好理解,就是针对不同的应用场景开发最适合的算法。
  • 模型训练,有了训练数据和算法,那么我们需要进行机器学习的迭代训练。
  • 评估,在训练过程中,我们需要定期的进行评估,以确定我们的算法在向最优值进行收敛。
  • 调参,如果评估的结果达不到我们的业务目标,那么我就需要不断调整算法超参数,从而得到一个最优的模型,这个过程是一个耗时耗算力的过程。
  • 模型部署和推理,将模型部署到一个终端节点上,使其可以对外提供相应的推理服务,通常对外暴露出一个 http 或者 grpc 的 API,让客户端进行调用。
  • 推理数据监控,持续的监控推理请求的数据,检查数据和训练数据相比是否发生偏移,如果发生数据偏移,及时更新模型。 

在第 2 章节我们描述很多机器学习中的环节,这么多的环节我如何一一去实现并将他们打包成一个流水线呢?在 Amazon Web Services 上,您可以通过丰富的服务和工具快速的构建一个自动化的机器学习平台,如上图所示,在这个方案中我们通过使用 Amazon Glue(简称Glue) + Amazon SageMaker(简称SageMaker) + Step Functions 的方式,完成一个 serverless 机器学习流水线,在这个方案中您不需要配置和维护任何一台 EC2,所有的资源都是按需开启和按需付费;在这个方案中,Glue 对训练数据进行预处理,SageMaker 完成机器学习的其他环节,包括训练、评估、模型部署等工作,而这些环节通过 Step Functions 串联成一个工作流。使用这样的方案可以实现模型的整体工程化部署,或者让数据科学家也具有编排自己机器学习工作流的能力,提高模型开发和迭代过程。

Amazon Glue 是完全托管的提取、转换和加载 (ETL) 服务,您可以轻松地准备并加载数据以进行分析。您只需在 Amazon Glue 可视化编辑器中单击几次,即可创建并运行 ETL 作业。此外您也可以自己编写 Python 或者 Scalar 的 Spark 应用程序,并定义 ETL job 所需的计算资源,之后您便可以手动或者自动的触发 ETL job,Glue 会以 Serverless 的方式运行您的 job,您可以将处理过的数据存储到多种数据源,比如 S3,RDS 或者 Redshift 等等。

Amazon SageMaker 是一个机器学习平台服务,它就像一个全家桶囊括了机器学习各个环节,主要包括以下组件:

  • Ground Truth – 数据标注服务
  • SageMaker Studio – 一个针对机器学习领域的 IDE
  • Training and Tuning – 支持 Tensorflow、MXNet 和 Pytorch 主流框架和以及分布式训练任务,提供自动化超参调优的能力
  • Deployment and Hosting – 部署模型到 Sagemaker 托管的 endpoint 上,支持在线和离线的推理,支持 Auto Scaling

除此之外,SageMaker 是一个对开发者友好的服务,提供非常完善的SageMaker SDK,您可以使用这个 SDK 方便的调用 SageMaker 中的组件。

Amazon Step Functions 是一个无服务器服务编排工具,可轻松将多个 Amazon Web Services 服务按顺序安排到业务关键型应用程序中。通过其可视界面,您可以创建并运行一系列检查点和事件驱动的工作流,以维护应用程序状态。每一步的输出作为下一步的输入。应用程序中的各个步骤根据业务逻辑定义的顺序执行。

目前 Step Functions 已经全面的支持 SageMaker 及其各个组件,如果编排一个 Step Functions 工作流,需要掌握 Amazon States Language JSON 文件的书写方法,这对于一个初学者来说是非常难以入手的,为了简化这方面的学习成本,提高数据科学家的工作效率,Amazon Web Services 提供了 Step Functions Data Scientist SDK,通过简单的 API 接口就可以快速构建出一个套机器学习工作流。

相关文章