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

    文章

    2147

    浏览量

    66237
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136233
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89582
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+深度学习(5000分钟实战课)

    “告别检测系统能力缺陷!10+年LabVIEW视觉资深专家手把手教你:5000+分钟高清教程(含工具、算法原理、实战操作、项目优化全流程讲解)”——从传统视觉算法→深度学习建模→工业级部署"
    的头像 发表于 12-02 08:07 93次阅读
    从0到1,10+年资深LabVIEW专家,<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>攻克<b class='flag-5'>机器</b>视觉+深度<b class='flag-5'>学习</b>(5000分钟实战课)

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用
    的头像 发表于 11-11 14:21 541次阅读
    【迅为RK3568开发板NPU实战】别再闲置你的NPU!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>玩转RKNN-Toolkit2 的使用

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、下两篇,将手把手教您移植。上篇对RT-ThreadNano内核与Finsh组件进行移植,下篇则教您改写SDK中的VGLite代码以将其适配到RT-T
    的头像 发表于 07-17 14:40 3041次阅读
    RT-Thread Nano硬核移植指南:<b class='flag-5'>手把手</b>实现VGLite图形驱动适配 | 技术集结

    【精选直播】手把手教你做PC第十二课:WIFI 驱动框架适配

    手把手教你做PC》系列直播课再度开播!《KaihongOS笔记本电脑开发实战第十二课:WIFI驱动框架适配》将于07月02日19:00开播↑扫码入群,领课程讲义资料包↑深开鸿资深工程师亲临直播间
    的头像 发表于 07-01 08:08 393次阅读
    【精选直播】<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC第十二课:WIFI 驱动框架适配

    手把手教你如何调优Linux网络参数

    高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃。本文基于真实案例分析,从参数解读、问题诊断到优化实践,手把手教你如何调优Linux网络参数,支撑百万级并发连接。
    的头像 发表于 05-29 09:21 644次阅读

    正点原子Linux系列全新视频教程来啦!手把手教你MP257开发板,让您轻松入门!

    正点原子Linux系列全新视频教程来啦!手把手教你MP257开发板,让您轻松入门! 一、视频观看 正点原子手把手教你学STM32MP257-第1期:https://www.bilib
    发表于 05-16 10:42

    请求赠阅《零基础开发AI Agent——手把手教你用扣子做智能体》

    博主好!致敬叶涛 管锴 张心雨三位AI具身智能-智能体方面的专家、导师! 《零基础开发AI Agent——手把手教你用扣子做智能体》一不懂编程的多数大众也可以开发Agent,这意义深远,功德无量
    发表于 04-10 12:16

    GPU显卡维修避坑指南:手把手教你识别行业套路!

    的今天,高端显卡维修已成“暴利暗流”。虚高报价、偷换配件、技术陷阱……用户稍有不慎,轻则损失数万,重则设备报废。今天小助手将揭露行业乱象,手把手教你识别套路,并推荐
    的头像 发表于 04-02 20:31 3207次阅读
    GPU显卡维修避坑指南:<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>识别行业套路!

    KiCad直播活动(三): Windows上编译KiCad 手把手教您编译/构建 KiCad 源码

    及 KiCad 贴纸,赶紧报名参加吧~ 直播安排 Windows 上编译 KiCad 时间:3月27日 19:30 内容:手把手帮助您从头开始学习编译 KiCad 代码。 后续精彩内容: KiCad 代码编译指南 插件
    的头像 发表于 03-24 11:14 1388次阅读
    KiCad直播活动(三):<b class='flag-5'>在</b> Windows上编译KiCad <b class='flag-5'>手把手</b>教您编译/构建 KiCad 源码

    《零基础开发AI Agent——手把手教你用扣子做智能体》

    《零基础开发AI Agent——手把手教你用扣子做智能体》是一本为普通人量身打造的AI开发指南。它不仅深入浅出地讲解了Agent的概念和发展,还通过详细的工具介绍和实战案例,帮助读者快速掌握
    发表于 03-18 12:03

    手把手教你做星闪无人机—KaihongOS星闪无人机开发实战》系列课程课件汇总

    为助力开发者迅速掌握『KaihongOS轻量系统开发技术』与『星闪无线通信技术』,实现快速上手与深度体验,“开鸿Developer社区”携手“电子发烧友”再次联合推出《手把手教你做星闪无人机
    发表于 03-18 10:33

    手把手教你做PC-KaihongOS笔记本电脑开发实战》课件汇总

    ”携手“电子发烧友”联合推出了 《KaihongOS手把手系列直播课程》,该系列课程以实际产品为案例,详细讲解每个产品的开发全流程。 此次首发内容是《手把手教你做PC-KaihongOS笔记本电脑开发
    发表于 03-18 10:25

    开发者集结!《手把手教你做星闪无人机》第二课开讲啦!

    开发者集结!《手把手教你做星闪无人机》第二课开讲啦!
    的头像 发表于 02-17 19:40 653次阅读
    开发者集结!《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星闪无人机》第二课开讲啦!

    手把手教你做星闪无人机》即将开播,锁定15日晚七点!

    ”再次联合推出《手把手教你做星闪无人机—KaihongOS星闪无人机开发实战》系列课程,该课程与《手把手教你做PC—KaihongOS笔记本电脑开发实战》同步并行,
    的头像 发表于 01-13 19:42 878次阅读
    《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做星闪无人机》即将开播,锁定15日晚七点!

    手把手教你做PC》课程即将启动!深开鸿引领探索KaihongOS笔记本电脑开发实战

    ”携手“电子发烧友”联合推出了《KaihongOS手把手系列直播课程》,该系列课程以实际产品为案例,详细讲解每个产品的开发全流程。此次首发内容是《手把手教你做PC-
    的头像 发表于 01-06 20:46 863次阅读
    《<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>做PC》课程即将启动!深开鸿引领探索KaihongOS笔记本电脑开发实战