机器学习洞察 | 降本增效,无服务器推理是怎么做到的?

news2024/9/22 9:40:45

2022 年,无服务器推理受到了越来越多的关注。常见的推理方式包括实时推理、批量转换和异步推理:

  • 实时推理:具有低延迟、高吞吐、多模型部署的特点,能够满足 A/B 测试的需求

  • 批量转换:能够基于任务 (Job-based) 的系统进行大数据集的处理

  • 异步推理:具有近实时、大负载 (1 GB) 的优势,但推理时间较长(一般在 15 分钟内)

本文将为您重点介绍在机器学习中无服务器推理的发展和演变,并通过实际的场景分析和部署方式来分享无服务器推理的应用,下面就一起来看看吧:

为什么选择无服务器推理

无服务器推理本身是个相对宽泛的术语。对于开发者来说,无服务器推理代表了一种构建可自动扩展的新型应用程序的具体方式,其最突出的优势在于无需维护、运行或修复包括服务器、集群乃至负载均衡器在内的各类基础设施元素。

通常开发者在无法预测用户的访问模式时会考虑使用无服务器推理:

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

有些情况下,上线应用时会存在负载的间歇性。如果开发者不考虑用户用量而使用定量部署模式的话,当应用长时间没有用户访问时就会导致过度的容量部署,造成利用率低而成本高。

而当用量增加,面临容量部署的挑战时,开发者需要投入大量的时间和资源,部署并管理维护服务器的弹性扩展,导致 TCO (Total Cost of Ownership) ,即总拥有成本的增加。

我们通过下面这个具体的场景帮助开发者更好地理解无服务器推理:

Sarah 是一家线上订餐应用的 DevOps 的开发人员,她希望通过机器学习来为客户个性化的推荐餐厅。由于应用的访问流量不可预测,Sarah 面临管理配置自动扩展策略的挑战,担心由于过量部署资源而导致成本过高。

 Sarah 决定采用无服务器推理的方式。

她不再需要自己管理配置扩展策略,也无需过量部署资源,而是根据应用的用量按需自动伸缩。全托管服务不仅节省了 Sarah 的时间也降低了推理成本,让她可以把更多的时间和资源投入到优化算法和项目上。

无服务器推理的优势

从 Sarah 的例子我们可以看出无服务器推理的优势是能够实现模型的开箱即用,帮助开发者降低机器学习的成本。

具体来说,对比早期的 Amazon Lambda 无服务器推理,开发者仍然需要配置模型参数(例如使用 EFS 放置模型时,需要自行配置 EFS 访问的终端节点来完成推理)。而 Amazon SageMaker 无服务器的推理方式拥有更好的封装,能够形成一个独立的特征和服务特性。开发者不需要自己搭建部署无服务器推理的其他工作,而是将更多的精力和资源聚焦于具体业务逻辑的实现。

Amazon SageMaker 的服务器推理能够在抽象基础设施的同时,显著降低间歇性流量工作负载的成本。

全托管的无服务器化推理

全托管的无服务器化推理有三大优势:拥有全托管的基础资源、无服务器化、能够自动伸缩资源。

  • 拥有全托管的基础资源等于拥有安全、监控、日志记录、高可用、高容错的资源。

  • 无服务器化代表着用户无需选择服务器类型和容量,能够直接基于推理需求来进行内存大小的选择。

  • 自动伸缩资源代表着无需配置扩展策略。

一键部署无服务器化推理节点

完成无服务器化推理节点部署需要三个步骤:

  1. 用 ECR 镜像来存放推理代码;
  2. 用 S3 存放模型文件;
  3. 选择合适的内存大小。

在第二步中,Amazon SageMaker 将通过无服务器化推理终端节点实现自动管理计算资源;按需自动伸缩;管理日志、监控及安全。客户端应用或其它云服务将触发推理请求给无服务器化推理终端节点,而无服务器化推理终端节点经过处理后,再将推理结果发给最终客户。

代码示例:Amazon SageMaker 无服务器推理

创建节点配置:开发者需要对用户端配置内存使用大小,以及最大并发推理的调用数。

endpoint_config_response = client.create_endpoint_config(
    EndpointConfigName=xgboost_epc_name,
    ProductionVariants=[
        {
            "VariantName": "byoVariant",
            "ModelName": model_name,
            "ServerlessConfig": {
                "MemorySizeInMB": 4096,
                "MaxConcurrency": 1,
            },
        },
    ],
)

创建节点及推理:

response = runtime.invoke_endpoint(
    EndpointName=endpoint_name,
    Body=b".345,0.224414,.131102,0.042329,.279923,-0.110329,-0.099358,0.0",
    ContentType="text/csv",
)

print(response["Body"].read())

完整代码可参考如下链接:

https://github.com/aws/amazon-sagemaker-examples/blob/main/serverless-inference/Serverless-Inference-Walkthrough.ipynb?trk=cndc-detail

希望这篇文章可以帮助您更清晰地了解机器学习在无服务器推理方面的进展。您也可以在 Build On Cloud 视频号观看这一部分的视频演讲:

点击查看视频:https://dev.amazoncloud.cn/video/videoDetail?id=63e393ace5e05b6ff897ca17&sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

欢迎阅读《机器学习洞察》系列文章中查看对于多模态机器学习和分布式训练的解读。下一篇文章我们将介绍有关 JAX 框架的演进趋势,请持续关注 Build On Cloud 微信公众号。 

往期推荐

  • 机器学习洞察 | 挖掘多模态数据机器学习的价值
  • 机器学习洞察 | 分布式训练让机器学习更加快速准确

 

 

作者黄浩文

亚马逊云科技资深开发者布道师,专注于 AI/ML、Data Science 等。拥有 20 多年电信、移动互联网以及云计算等行业架构设计、技术及创业管理等丰富经验,曾就职于 Microsoft、Sun Microsystems、中国电信等企业,专注为游戏、电商、媒体和广告等企业客户提供 AI/ML、数据分析和企业数字化转型等解决方案咨询服务。

 文章来源:https://dev.amazoncloud.cn/column/article/63e33010e5e05b6ff897ca0d?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

故障排查:通过ssh远程执行命令时报错未找到命令

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 故障详情问题原因解决方案命令使用全路径修改~/.bashrc 故障详情 最近…

设计模式 - 抽象工厂模式

学完工厂模式,才发现还有一个抽象工厂模式;学习后发现不论是通过接口方式、还是继承方式,都可以使用抽象工厂模式;但是个人建议更多的时候,我们可以优先考虑接口方式,毕竟 单继承,多实现 设计模…

HTML5基础语法与标签

一、 HTML5介绍 HTML5是什么&#xff1f; HTML5是超文本标记语言&#xff08;HTML&#xff09;的第五个主要版本&#xff0c;用于描述网页结构和呈现内容。它是到目前为止最新且最强大的HTML版本。 HTML5语法约定 1.标签是HTML语法中的基本单位&#xff0c;由尖括号 ​<>…

QT分屏按钮

效果&#xff1a;按钮弹出分屏选择 // gridpopwidget.h #ifndef GRIDPOPWIDGET_H #define GRIDPOPWIDGET_H#include <QWidget> #include <QMouseEvent>class GridPopWidget : public QWidget {Q_OBJECT public:explicit GridPopWidget(QWidget *parent nullptr);~…

MySQL第二天

MySQL第二天 文章目录 MySQL第二天一、第一题 题目二、第二题题目 一、第一题 题目 1、先创建该customers表 create table customers ( c_num int primary key auto_increment, c_name varchar(50), c_contact varchar(50), c_city varchar(50),c_birth datetime not null);2、…

java IO流(一) File类

File对象只能对文件进行操作&#xff0c;不能操作文件中的内容。 1 File对象的创建 要注意的是&#xff1a;路径中"“要写成”\“进行转义&#xff0c; 路径中”/"可以直接用&#xff0c;但是最好的是使用File.separator&#xff0c;它会根据系统的不同进行转化&a…

ROS:分布式通信

目录 一、前言二、方案2.1准备2.2配置文件修改2.3配置主机IP2.4配置从机IP2.5测试 一、前言 ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式&#xff0c;任何节点可能随时需要与任何其他节点进行通信。 因此&#xff…

小白开酒吧前要做好的三件事

一、进行市场调研当你有开酒吧的想法时&#xff0c;首先要做的第一步就是市场调研&#xff0c;进行市场调研可以让你了解到该地区酒吧市场是否良好&#xff0c;对未来的经营&#xff0c;有着决定成败的帮助&#xff0c;同时市场调研也可以让你了解到周边什么类型酒吧最受欢迎&a…

PMP证书有什么用,考试条件是什么?

很多关注项目经理岗位的朋友都知道&#xff0c;一些企业的招聘信息经常会发布&#xff0c;很多招聘项目经理岗/PMO岗的岗位要求中都会有一条&#xff1a;持有PMP/软考等证书的优先。 其实面试的时候&#xff0c;可能两个候选人的经历、经验、期望薪资都差不多&#xff0c;那么…

ESP32(掌控板) 图片显示与幻灯片

ESP32&#xff08;掌控板&#xff09; 图片显示与幻灯片 本程序通过按键改变变量的值&#xff0c;从而切换4组图片&#xff0c;通过触摸按键切换每组图片中的不同图片&#xff0c;同时按下两个按键开启幻灯片功能。 图形化程序如下 Arduino代码如下 /*!* MindPlus* mpython**…

sqoop笔记——一次从Hive到PostgreSql的数据迁移

写在开头 sqoop&#xff0c;想必进来围观的小伙伴们已经很熟悉了&#xff0c;笔者想把一些在实际使用sqoop过程中遇到的问题和注意事项记录并分析给大家&#xff0c;希望能帮助有需要的同学。随着对sqoop不断深入的了解&#xff0c;笔者会不断的以文章的形式记录并分析给大家&…

2023年05月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

2023-05 Scratch二级真题 题数&#xff1a;37 分数&#xff1a;100 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.运行下列哪段程序&#xff0c;可以让狗狗走到木屋门口&#xff1f;&#xff08; &#xff09;(2分) A. B. C. D. 2.下列哪个选项…

陪诊软件源码|医院陪诊软件开发|陪诊师接单APP定制

陪诊小程序具有以下功能优势&#xff1a;   预约挂号&#xff1a;陪诊小程序可以提供在线预约挂号功能&#xff0c;患者可以通过小程序选择就诊时间、医生和科室&#xff0c;避免排队和等待时间&#xff0c;提高就医效率。   陪诊服务&#xff1a;陪诊小程序可以提供陪诊服…

SDN实训报告-基于SDN的Qos差分服务

1 实训概述 本次为期一周的实训旨在通过基于SDN架构的实现差分服务需求来提升我们的技能。我们在实训中广泛运用了一些重要的技术手段&#xff0c;包括Django、QOS、OpenDaylight和OpenvSwitch等。 在实训过程中&#xff0c;我们将重点放在SDN的基本操作上&#xff0c;通过实际…

Introduction to linear optimization exercise 第二章课后题答案 6-10

文章目录 2.62.7 2.6 解答&#xff1a; (a) 设 y y y 是 C C C 中的一点&#xff0c;多面体 Λ { ( λ 1 , … , λ n ) ∈ R n ∣ ∑ i 1 n λ i A i y , λ 1 , … , λ n ≥ 0 } \Lambda\left\{(\lambda_1, \dots, \lambda_n)\in R^n\mid \sum_{i1}^n \lambda_i\textb…

【企业架构设计模式】MITRE 设计模式

定义&#xff1a; 软件中的设计模式&#xff08;通常&#xff09;是简短的描述&#xff0c;用于捕捉过去证明是成功的实践。它们不是具体的软件&#xff0c;而是在某些情况下应用的一种模板。它们通常不是规定性的&#xff0c;而是建议性的&#xff0c;并且包括关于何时最适合使…

Vue组件库Element-常见组件-对话框

Dialog 对话框 在保留当前页面信息的状态下&#xff0c;直接弹出对话框&#xff0c;告知用户并承载相关操作 具体代码关键如下&#xff1a; <template><div><el-row><!-- button 按钮 --><el-button>默认按钮</el-button><el-button…

Windows下编译安装VTK

本文旨在记录在Windows下编译安装VTK的流程。 零、环境 操作系统Windows 10编译器Visual Studio 2019 CommunityCMake3.24.2 一、下载代码 git clone https://github.com/Kitware/VTK.git cd ./VTK/ git checkout -b v9.0.0 v9.0.0 二、编译安装 Where is the source cod…

Redis【实战篇】---- 用户签到

Redis【实战篇】---- 用户签到 1. 用户签到 - BitMap功能演示2. 用户签到 - 实现签到功能3. 用户签到 - 签到统计4. 额外加餐 - 关于使用BitMap来解决缓存穿透的方案 1. 用户签到 - BitMap功能演示 我们针对签到功能完全可以通过mysql来完成&#xff0c;比如说以下这张表 用户…

1.数据类型

1、课后作业 1.给同桌讲讲交换两个变量的值 算法&#xff08;不管他愿不愿听&#xff09; 2.依次咨询问并获取用户的姓名、年龄、性别&#xff0c;并打印用户信息 可以先自己写一下&#xff0c;在参考一下我的代码&#xff1a; <!DOCTYPE html> <html lang"en&q…