快速部署您的第一个无服务器AWS ML解决方案
SageMaker简介
我已经与AWS SageMaker合作了一段时间,并取得了巨大的成功。在我看来,创建和调整模型,设计支持模型开发和实时推理的管道以及数据湖的形成都变得更加容易。事实证明,AWS是针对
机器学习用例(批处理和实时)的全面解决方案,可帮助我减少交付时间。
在接触公共云服务之前,我花了很多时间在hadoop发行版中工作,以满足数据湖建设的处理能力和存储要求,并利用Docker提供运行R Studio或Jupyter笔记本的数据科学沙箱。对于许多客户端来说,安装/配置时间是关闭的。我们需要一种更敏捷的方式来管理数据科学团队的基础架构。
出于好奇,我开始使用AWS,但由于需要,我获得了第一份AWS认证。该项目涉及建立数据科学环境,这使我进入了AWS SageMaker
如果您仅对解决方案体系结构感兴趣,请 跳过
取消装箱SageMaker
AWS Sagemaker 是一项完全托管的服务,提供开发,培训和托管功能。虽然我专注于ML,但SageMaker可用于任何与AI相关的用例。该服务旨在将学习曲线保持在尽可能低的水平,并消除了与数据科学相关的许多传统障碍。SageMaker分为四个区域:地面真理,笔记本,训练和推理。
地面真相
Ground Truth是AWS提供的自动标签服务。在监督学习算法中,机器希望开发人员提供带有标签的示例。换句话说,如果您要训练模型以检测某个值或变量X,则用户必须向训练集提供示例,其中变量X的值不为null。模型旨在对汽车上的人与人进行分类繁忙的道路的图片,将无法确定哪组像素代表了汽车或人。您必须在培训期间提供。这就是“地面真理”派上用场的地方。如果您打算用9000张图像训练模型,则必须要仔细检查每张照片并标记汽车和人员,这可能很耗时。如果您负担得起,AWS将为您提供这项工作。诚然,
笔记本电脑
笔记本电脑是您一直想要的开发领域,但是您的公司却不允许您这样做。旋转SageMaker Notebook可为用户提供功能齐全的,互联网连接的,基于conda的IDE。用户具有与部署本地Jupyter实例相同的功能。该实例是一个Docker容器,因此所有工作将继续进行,直到您决定删除笔记本实例为止。笔记本电脑可用于数据处理,算法选择,
数据分析,创建和启动培训工作,甚至将您新培训的模型部署到生产环境中!但请注意:AWS随用随付模式已经生效,您需要按小时付费。如果您让Notebook实例整夜运行(即使没有进行任何计算),您仍然需要付费,
训练
如果您像我一样,则更喜欢用代码做所有事情,其中??包括使用Sagemaker Training API的回调监视您的培训工作。但是考虑飞行员或POC的情况,当我使用新服务时,我必须编写的每一行代码都会降低价值,因为飞行员或POC的目的是证明某种想法或技术,而不是看到了解编程文档有多容易。这就是AWS SageMaker的亮点。该服务提供了一组强大的监视和自动化工具,可帮助您跟踪过去的培训工作,收集有关培训以及算法实现的指标。如果您选择的算法是黑匣子,并且您希望对配置或功能权重有所了解,这将特别有用。
推理
我提到了一个笔记本,可用于将模型部署到生产中。推理部分是用户可以查看和进一步配置已部署模型的地方,推理可以是批处理作业,也可以是实时的。在实时情况下,每个模型都托管在一个端点(这是docker实例的花哨词)上,并且每个端点都有一个配置。端点配置(除其他外)将模型链接到预先配置的实例,以完美托管该算法配置的模型。所有这些操作都是在后台为您处理的,这使得在维护和基础架构管理方面将模型托管在生产环境中变得更加容易。
实时ML用例的可重复的无服务器解决方案
我想分享一种快速且廉价地部署ML用例的首选设计模式。这不是技术文章,在以后的文章中,我将分步分享有关如何设置以下体系结构的说明,但是现在,我想回顾一下体系结构,并简单讨论一下简化它的方法,尤其是当将您的第一个用例付诸实践。
通用架构
实时ML用例的总体架构需要3个必不可??少的部分:
SageMaker端点:一种工作模型,部署在托管的Docker容器中,该模型将模型逻辑暴露给其他AWS服务
Lambda函数:一种托管服务,用于解析来自调用应用程序的传入请求,并创建SageMaker Endpoint上托管的模型所需的结构
调用应用程序:调用Lambda函数并传递模型进行推理所需的输入的代码(python,java,C#等)
本地件
我建议推送或同步数据,而不要使用云服务。由于这是无服务器部署,因此可以为您提供更大的灵活性和程序控制,从而使某些云服务可能遇到协商现有安全性障碍的障碍。
请记住,这是关于使您的第一个用例脱离现实。
这里的日常用语应该是效率(快速效率)。
编写一个快速的python脚本将数据移至S3
选择python,因为它在DS团队中很受欢迎,可以在SageMaker中进行数据准备
在生产数据流时,将对模型结构的更改与您的数据管道进行同步将更容易实现自动化
作为一种习惯,当我使用本地部署在云中部署分析用例时,会将日志发布到CloudWatch。管理解决方案可能会很痛苦,在这种解决方案中,如果出现问题(总是出错),您必须检查多个位置
AWS中的服务API极其强大:您不应该在开始设计容错的正规化管道时浪费时间,因为在DS开发人员根据新发现的见解改进思想和理论的过程中,一切都可能会发生变化。
贤者
SageMaker终端节点提供对其他AWS服务的访问权,以调用模型并接收推断。端点由配置和经过训练的模型组成。
在生产中,请考虑利用诸如AWS Step Functions之类的工作流程协调器来自动推送新模型。它可以处理流行的部署策略,包括蓝绿色测试
拉姆达
由于这是一个实时用例,因此AWS Glue和Batch无法满足SLA。Lambda服务可以在需要时运行您的代码,并且可以很好地扩展以适应各种用例,从每天有数百次点击的电子商务网站到需要推断新客户的CRM系统。
lambda服务充当呼叫服务和SageMaker端点之间的中间人。Lambda接收来自本地系统的请求,并将其转换为ML模型可以理解的请求。一些有用的提示:
要求进行推理的本地系统很少包含进行推理所需的所有数据,最好预先计算并将结果存储在S3中,以便您的Lambda函数可以根据需要快速读取它
在训练模型之前,将模型的元数据写入S3(列名和类型)。该顺序很重要,因为大多数算法在分析过程中使用位置映射,而不使用列名(考虑没有标题的多维数组)

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!