关于ml:使用Amazon-Step-Functions-Data-Science-SDK创建基于无服务器架构的工作流

8次阅读

共计 4534 个字符,预计需要花费 12 分钟才能阅读完成。

市场营销是金融畛域的一个重要方向,在机构倒退新客户的过程中,不容忽视老用户的散失状况 。如果取得一个新客户的老本是保留一个老客户的老本的 5 倍,那么将其客户 流失率升高 5%,其 利润就可能减少 25% 以上

在本文中,咱们将 利用无服务器架构工作流,用于数据分析,模型部署,批量推理,从而实现提前发现可能的散失客户,及时保护防止散失。

📢 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的 2021 亚马逊云科技中国峰会!点击图片报名吧~

计划概述

本文将以一个常见的应用案例,通过 Amazon Step Functions Data Science SDK 创立基于无服务器架构的工作流,过程如下:

1. 应用 Amazon Glue 进行 ETL 工作,生成样本数据集

2. 应用 Amazon SageMaker 部署本地训练好的模型,用于机器学习推理

下图演示了上述 Amazon Step Functions 无服务器架构工作流:

后续操作应用了下列亚马逊云科技服务:

  • Amazon Step Functions
    https://www.amazonaws.cn/step…

是由多个离散步骤组成的状态机,其中 每个步骤都能够执行工作、作出抉择、启动并行执行或治理超时。其中一个步骤的输入作为下一个步骤的输出,并反对将错误处理嵌入到工作流中。

Amazon Step Functions Data Science SDK
诞生前,只能应用基于JSON 的 Amazon States Language 定义 Amazon Step Functions;但当初能够借助此 SDK 应用 Python 代码轻松创立、执行和可视化 Amazon Step Functions 工作流。

  • Amazon Step Functions Data Science SDK
    https://docs.amazonaws.cn/zh_…

本文是以 Amazon Step Functions Data Science SDK 为主线,探讨如何创立 Amazon Step Functions 步骤、应用参数、集成服务特定的性能以及将这些步骤关联在一起以创立和可视化工作流。

Amazon SageMaker可为开发人员和数据科学家提供构建、训练和部署不同类型机器学习模型时所需的工具。

  • Amazon SageMaker
    https://www.amazonaws.cn/sage…

Amazon Glue是一项齐全托管的提取、转换和加载(ETL)服务,在分布式 Apache Spark 环境中运行,可能充分利用 Spark 而无需治理基础设施。将 Glue 指向受反对的数据存储,它将会生成代码以从指定的存储中提取数据并加载到指标存储中。

  • Amazon Glue
    https://www.amazonaws.cn/glue/

本文应用机器学习办法进行客户散失预测,采纳模仿的数据(近期生产记录,在线时长等)为示例数据集,首先应用 Amazon Glue 进行数据处理,再应用 Amazon SageMaker 进行模型部署,并进行批量转换。

该场景的应用的算法为 XGBoost(eXtreme Gradient Boosting),它是一种监督式学习算法,尝试将一组较简略且较弱模型的一系列估计值联合在一起,从而精确地预测指标变量,能够用来解决回归、分类(二进制和多类)和排名问题。利用XGBoost 预测客户是否会散失,以及早进行干涉。

1. 创立 Jupyter Notebook

1.1 创立 Amazon SageMaker 笔记本实例,部署模型

1.2 创立一个笔记本实例,类型抉择 t2.medium。抉择或者创立一个 IAM 角色(IAM Role)

1.3 其余局部抉择默认选项,点击创立(Create)

1.4 在笔记本创立实现后,关上 Jupyter,抉择 New,新建一个 ipynb,抉择内核为 conda_python3

2. 应用 Amazon Step Functions Data Science SDK 创立和管理工作流

2.1 装置和加载所有必须的模块

2.2 依照代码中的正文要求,替换应用您本人的 S3 bucket/prefix

前面须要将数据上传到该项目标 Amazon S3 存储桶,用作训练模型的数据和 Model Artifact 的存储

2.3 依照代码中的正文要求,替换应用您本人的 S3 bucket/prefix

2.4 创立一个 Role 附加到 Amazon Step Functions

关联的策略如下所示,能够依据理论应用的服务调整策略,并将策略附加到创立的 Role

2.5 设置执行的 Role

为确保 Amazon SageMaker 能够顺利运行相干的工作,这里获取笔记本实例的执行角色(创立 Amazon SageMaker 笔记本实例的时候曾经创立 / 抉择的角色)。同理 Amazon Step Functions 顺利运行的前提也是要有相应的执行角色,可参考上图中角色的关联资源。

3. 验证模型

3.1 装置和加载所有必须的模块

因为须要应用 joblib 来加载模型,须要应用 sklearn 版本为 0.22.1。

3.2 读取样本数据

样本数据上传到 Notebook 后,能够看到共有 1000 行 74 列数据(列没有显示完),包含主键(cust_id)和用户依照工夫维度统计的交易金额、在线换手率金额、在线赎回笔数等信息。

3.3 加载模型,返回预测标签

利用逻辑回归进行客户流失率建模,应用 sklearn 拆分测试集和训练集,提供回归的 xgboost 模型。

本文中的模型已在本地训练好,在 Notebook 中应用 joblib 加载模型。

4. 筹备环境工作(执行一次)

4.1 打包容器 & 推送容器到 ECR

编辑 Dockerfile,筹备镜像。

这个过程可能须要进行很屡次,因为不可避免地要批改 Dockerfile 或者某类程序以使得它们能够失常工作。

倡议应用官网镜像文件,在此基础上增加组件,国内镜像仓库地址参考如下链接:
https://docs.amazonaws.cn/sag…

在 cn-north- 1 下应用 sklearn 的训练镜像和推理镜像的门路为:

450853457545.dkr.ecr.cn-north-1.amazonaws.com.cn

在拉取公共镜像之前,须要做根本身份验证

推送镜像到自有 ECR 镜像仓库

4.2 上传模型文件到 S3

咱们须要将本地曾经训练好的模型放到之前创立的 s3 存储桶,prefix 前缀是对象名称前的残缺门路。

比方一个对象 model.tar.gz,
存储门路 BucketName/Project/Demo/model.tar.gz,
则前缀是 BucketName/Project/Demo/

4.3 推理脚本

4.3.1 打包代码并上传到 s3

4.4 创立 Amazon SageMaker 模型对象

下图中的 image_uri 为 4.1 步骤中指定容器镜像地址,model_uri 为 4.2 步骤中指定模型的 s3 门路,transform_script 为 4.3 步骤中创立的推理脚本,code_uri 为 4.3.1 步骤中上传在 s3 的代码门路。

5. 批量转换(模型推理)

5.1 应用Amazon SageMaker Batch Transform

要取得整个数据集的推理后果,能够应用批处理变换。应用批处理转换,能够应用训练好的模型和数据集创立批处理转换作业,这些数据必须存储在 Amazon S3 中。

  • Amazon SageMaker Batch Transform
    https://docs.amazonaws.cn/sag…

Amazon SageMaker将推理保留在创立批处理转换作业时指定的 S3 存储桶中。

批量转换治理获取推理所需的所有计算资源,并在批处理转换作业实现后将其删除。

5.1.1 输入后果整合输出 id

指定 model_name,实例的数量和机型

6. 应用 Data Science SDK 创立 Amazon Step Functions Step

6.1 创立 Glue Step,指定 glue job name

下图中名为 glue-demo-job-0223 的 Glue job 是曾经创立好的作业,其目标是定期生成须要推理的样本数据。

6.2 创立 Batch Transform Step,指定 job name 和 model_name

6.3 串联上述的步骤

导入 fields 模块,更改 attrs 属性,本文中须要更改 glue 和 Amazon SageMaker 对应的 Step

(1)把 resource:“arn:aws:states:::glue:startJobRun.sync”
替换为 resource:“arn:aws-cn:states:::glue:startJobRun.sync”

(2)把 resource:“arn:aws:states:::sagemaker:createTransformJob.sync”
替换为 resource:”arn:aws-cn:states:::sagemaker:createTransformJob.sync”

7. 运行上述 workflow,指定 workflow name

7.1 操作步骤

新建名为 MyInferenceRoutine01 的工作流

生成图示

创立和执行 workflow,能够看到图示不同的色彩代表不同的状态

能够列出失败的 events,正在执行的 workflow 和执行胜利的 workflow

失常执行实现后的图示:

7.2 生成的文件

最初在 s3 对应的文件夹下,能够看到生成的推理文件:

客户 ID 和对应的分数,能够看到,分数越低的客户散失的可能性会更高。

8. 总结

本文探讨的是应用 Amazon Step Functions Data Science SDK,从数据 ETL,到模型部署,再到批量推理,创立一个 基于无服务器架构的工作流 。对于业务端的数据科学家来讲,这些步骤都能够在 Notebook 中实现,而且 能够通过 Amazon Step Functions 监控每个工作的运行状态和日志记录,最终实现整个流程的自动化,缩小数据科学家的人工反复工作,进步生产开发效率。本文波及的示例代码下载链接:
https://github.com/hlmiao/sag…

参考资料

[1] amazon-step-functions-data-science-sdk-python
https://github.com/aws/aws-st…

[2] Amazon Step Functions Data Science SDK – Hello World
https://sagemaker-examples.re…

[3] Build a machine learning workflow using Step Functions and SageMaker
https://sagemaker-examples.re…

[4] Using the SageMaker Python SDK
https://sagemaker.readthedocs…

本篇作者


缪翰林
亚马逊云科技解决方案架构师
负责基于亚马逊云科技的计划征询,设计和架构评估。在运维,DevOps 方面有丰盛的教训,目前侧重于大数据畛域的钻研。


王世帅
亚马逊云科技机器学习产品技术专家
负责基于亚马逊云科技的机器学习计划的征询与设计,对于机器学习利用等有浓重的趣味和激情,参加了多个客户的机器学习我的项目。

正文完
 0