0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

手把手教你在机器学习过程设计Python接口

如意 来源:Python学会 作者:Huangwei AI 2020-08-20 14:29 次阅读

前言

为了进行机器学习工程,首先要部署一个模型,在大多数情况下作为一个预测API。为了使此API在生产中工作,必须首先构建模型服务基础设施。这包括负载平衡、扩展、监视、更新等等。

乍一看,所有这些工作似乎都很熟悉。Web开发人员和DevOps工程师多年来一直在自动化微服务基础设施。当然,我们可以重新定位他们的工具?

不幸的是,我们不能。

虽然ML的基础结构与传统的DevOps类似,但它与ML的特殊性足以使标准的DevOps工具不那么理想。这就是为什么我们开发了Cortex——机器学习工程的开源平台。

在一个非常高的层次上,Cortex被设计用来简化在本地或云上部署模型,从而自动化所有底层基础设施。该平台的一个核心组件是预测器接口——一个可编程Python接口,开发人员可以通过该接口编写预测api。

设计一个专门为web请求提供预测的Python接口是一个挑战,我们花了几个月的时间(目前仍在改进)。在这里,我想分享一些我们已经开发的设计原则:

1.预测器只是一个Python类

Cortex的核心是我们的预测器,它本质上是一个预测API,包括所有的请求处理代码和依赖关系。预测器接口为这些预测api实施了一些简单的需求。

因为Cortex采用微服务的方式来进行模型服务,预测器界面严格关注两件事:

初始化模型

提供预测

在这种精神下,Cortex的预测界面需要两种功能,即剩余的init__()和predict(),它们或多或少做你所期望的事情:

手把手教你在机器学习过程设计Python接口

初始化之后,您可以将一个预测器看作一个Python对象,当用户查询端点时,将调用它的单个predict()函数。

这种方法的最大好处之一是,对于任何有软件工程经验的人来说,它都是直观的。不需要接触数据管道或模型训练代码。模型只是一个文件,而预测器只是一个导入模型并运行predict()方法的对象。

然而,除了语法上的吸引力之外,这种方法还提供了一些关键的好处,即它如何补充了皮层更广泛的方法。

2. 预测只是一个HTTP请求

为生产中提供预测服务而构建接口的复杂性之一是,输入几乎肯定会与模型的训练数据不同,至少在格式上是这样。

这在两个层面上起作用:

POST请求的主体不是一个NumPy数组,也不是您的模型用来处理的任何数据结构。

机器学习工程就是使用模型来构建软件,这通常意味着使用模型来处理它们没有受过训练的数据,例如使用GPT-2来编写民间音乐。

因此,预测器接口不能对预测API的输入和输出固执己见。预测只是一个HTTP请求,开发人员可以随意处理它。例如,如果他们想部署一个多模型端点,并基于请求参数查询不同的模型,他们可以这样做:

手把手教你在机器学习过程设计Python接口

虽然这个界面让开发者可以自由地使用他们的API做什么,它也提供了一些自然的范围,使皮质在基础设施方面更加固执己见。

例如,在后台Cortex使用FastAPI来设置请求路由。Cortex在这一层设置了许多与自动排序、监控和其他基础设施功能相关的过程,如果开发人员需要实现路由,这些功能可能会变得非常复杂。

但是,因为每个API都有一个predict()方法,所以每个API都有相同数量的路由—1。假设这允许Cortex在基础设施层面做更多的事情,而不限制工程师。

3.服务模型只是一个微服务

对于在生产中使用机器学习的人来说,规模是一个主要的问题。型号可能会很大(GPT-2大约是6 GB),计算成本高,并且可能有很高的延迟。特别是对于实时推断,扩大规模来处理流量是一项挑战——如果你的预算有限,情况更是如此。

为了解决这个问题,Cortex把预测器当作微型服务,可以水平伸缩。更具体地说,当开发人员进行Cortex部署时,Cortex将包含API,旋转为推理准备的集群,并进行部署。然后,它将API公开为负载平衡器背后的web服务,并配置自动缩放、更新和监视:

手把手教你在机器学习过程设计Python接口

预测器接口是此过程的基础,尽管它“只是”一个Python接口。

预测器接口所做的是强制打包代码,使其成为推理的单个原子单元。单个API所需的所有请求处理代码都包含在一个预测器中。这使得大脑皮层能够很容易地衡量预测因素。

通过这种方式,工程师不必做任何额外的工作——当然,除非他们想做一些调整——准备一个用于生产的API。一个皮层的部署是默认的生产准备就绪。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1383

    浏览量

    60994
  • 机器学习
    +关注

    关注

    66

    文章

    8126

    浏览量

    130571
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
收藏 人收藏

    评论

    相关推荐

    无刷电机无感FOC控制培训系列课程

    | 本工作室推出电机控制无感foc电机控制系列培训课程本课程主要让想进阶的算法工程师,和刚参加工作的工程师或者在校学生能够进一步提高自己的技能,1.从企业用人角度手把手教你做电机控制,提高你的个人
    发表于 03-10 13:52

    最新ChatGPT详细注册图文解说教程 ChatGPT账号注册详细步骤分析

    2024年注册ChatGPT详细教程,手把手教你完成ChatGPT的注册
    的头像 发表于 12-04 17:18 2746次阅读
    最新ChatGPT详细注册图文解说教程  ChatGPT账号注册详细步骤分析

    手把手带您使用MCUXpresso Config Tools生成USB组合设备

    手把手带您使用MCUXpresso Config Tools生成USB组合设备
    的头像 发表于 10-31 16:55 751次阅读
    <b class='flag-5'>手把手</b>带您使用MCUXpresso Config Tools生成USB组合设备

    LOTO示波器_从零开始手把手测电源开环增益/电源环路频响曲线/PSM

    我们之前有篇文章从理论到实践演示了如何测量电源环路的开环增益曲线,不过偏重于理论和原理,没有很多细节的展现,所以这片文章从另外的角度,从零基础开始,手把手一步一步演示如果进行实操测试。
    的头像 发表于 10-26 16:08 474次阅读
    LOTO示波器_从零开始<b class='flag-5'>手把手</b>测电源开环增益/电源环路频响曲线/PSM

    手把手教你学FPGA仿真

    电子发烧友网站提供《手把手教你学FPGA仿真.pdf》资料免费下载
    发表于 10-19 09:17 1次下载
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>学FPGA仿真

    【直播预告】LabVIEW机械手视觉纠偏关键技术探讨

    视觉软件著作权;编写了《Labview视觉算子详解》一书;开发了《labview机器视觉实用教程》全套2000分钟视频教程,《龙哥手把手教你学视觉-视觉篇》,《龙哥手把手
    发表于 10-17 15:37

    手把手教你基于RT-Thread Studio使用STM32单片机的PWM外设

    目前我使用的是STM32L475系列单片机,是ali当时在PDD 50块钱卖的一个开发板,其他STM32单片机参考即可,这里会手把手教大家基于RTT Studio 来使用PWM。
    的头像 发表于 09-28 15:12 2610次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>基于RT-Thread Studio使用STM32单片机的PWM外设

    手把手教你制作无线充电器

    手把手教你制作无线充电器(无线充电原理+产品应用+DIY实例)
    发表于 09-28 07:48

    手把手教你pcb压合的整个流程,小白也能玩转电路板制作

    手把手教你pcb压合的整个流程,小白也能玩转电路板制作
    的头像 发表于 09-18 10:43 1700次阅读

    python数据挖掘与机器学习

    用的数据挖掘和机器学习工具。 一、数据挖掘 数据挖掘是指从大量数据中自动或半自动地发现潜在的关系、规律或模式的过程Python中有许多数据挖掘工具可供使用,以下是其中一些常用的工具:
    的头像 发表于 08-17 16:29 889次阅读

    vivado上一直识别不了开发板的JATG接口怎么解决?

    vivado上一直识别不了开发板的JATG接口,也已经参考社区提供的解决方案尝试了:[size=1.75]RVMCU课堂「9」: 手把手教你玩转RVSTAR—常见问题,设备管理器显
    发表于 08-16 07:16

    手把手教您家用路由器应该如何挑选

    手把手教您家用路由器应该如何挑选
    的头像 发表于 07-26 09:20 978次阅读
    <b class='flag-5'>手把手</b>教您家用路由器应该如何挑选

    U-boot的基本介绍

    从本文开始,将陆续推送“手把手教你移植U-boot”系列文章,目标是由浅入深地讲解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U-boot的移植工作,默认硬件开发平
    发表于 07-14 16:52 1494次阅读
    U-boot的基本介绍

    专家手把手教您注册 COS 以及提交 Hardware Case

    Software Case  您可参考: (点击进入☞) 《专家手把手教您注册 COS 以及提交 Case》 。 如您想提交 Hardware Case,本篇将手把手教您,
    的头像 发表于 07-12 12:15 642次阅读
    专家<b class='flag-5'>手把手</b>教您注册 COS 以及提交 Hardware Case

    手把手分享做网线水晶头的技巧

    如今,随着网络技术的飞速发展,电脑已经成为家庭和工作的必备工具。电脑上网需要接入网线。你知道网线两端的插头是怎么做的吗?下面科兰小编手把手分享做网线水晶头的技巧。 做网线水晶头首先要知道网线的结构
    的头像 发表于 07-05 10:35 1322次阅读