|
|
51CTO旗下网站
|
|
移步端
  • 为什么我用Go写机器学习部署平台,而偏偏不用Python?

    虽然在机器学习中,Python已经渗入。但Python并不是全能之神手中的魔杖可以为所欲为。

    笔者:刘少奇 来源:新智元| 2020-01-21 21:38

    为什么我用Go写机器学习部署平台,而偏偏不用Python?

    虽然在机器学习中,Python已经渗入。但Python并不是全能之神手中的魔杖可以为所欲为。有的是情况下其实用Python的功力并不如其他语言,比如Go更好,甚至可能更糟。本文介绍了为什么在作者的上班条件下选择Go而非Python的理由,引发社区关注和热议。

    编程语言就是一番江湖,永恒有人觊觎霸主的席位。

    Python现行却稳坐编程语言界的霸主,尤其是在机器学习领域,整整主流机器学习框架都在用Python。

    然而即使是把绝大多数人口承认的Python,也并非真的无所不能,也有让他无能为力、编造的状况。

    Python引以为豪的机器学习算法,是不是机器学习系统之一个部分。要切实大规模运行生产机器学习API,还要求实现以下功能的根基架构:

    机动缩放,以便流量波动不会破坏您的APIAPI管理,以拍卖的API布局滚动更新,以便您可以在创新模型的同时仍为客户提供服务

    对于像Cortex这样的正本求源机器学习部署平台,意志使整个这些基础架构自动化,以及日志记录和财力优化等其它地方的关心,笔者Caleb Kaiser认为相比Python这样一来,Go更合。

    相比之下于出身寒门、一度应届生的圣诞无聊的作的Python,Go语言出自Google,笔者是三位棋手级人物:Rob Pike、Ken Thompson 和 Robert Griesemer。在以下方面超越了Python:

    并发对于机器学习基础架构至关重要

    他家可以将许多不同之模子部署为不同之API,整整模型都在同一个Cortex集群中展开管理。

    为了让Cortex Operator能够管理这些不同之调度,要求纠缠一些不同之API。

    Cortex租用Kubernetes API在集群上布置模型;同时也要求考虑各种AWS API(EC2 Auto Scaling,S3,CloudWatch等)

    他家不会直接与其他这些API拓展交互,代表的是,Cortex以编程方式调用这些API来供应集群,起先部署和监视API。

    以一种有效,保险的措施展开任何这些重叠的API租用是一番挑战。

    同时处理它们是最有效的拍卖办法,但同时也引入了复杂性,因为今天我们不得不担心诸如竞赛条件之类的作业.Go有一度优雅的,开馆即用之解决方案来解决这个题目:Goroutines。

    Goroutines是健康的Go并发执行的效应。诸多Goroutine可以放在一个OS点程上,如果Goroutine阻塞了OS点程,则Go运作时会自动将他余Goroutines移至新的OS点程。

    Goroutines还提供了一番称为“通道”的效应,兴许Goroutines推行在双方之间传递信息,使我们能够调度请求并避免出现竞争情况。

    采用asyncio等新式工具在Python官方贯彻全体这些功能可能是行之有效的,但是Go的计划充分考虑了这种用例,这一事实使我们的存在变得更加轻松。

    在Go官方构建跨平台CLI更容易

    Cortex CLI是一种跨平台工具,兴许用户直接从命令行部署模型和保管API。

    下的GIF表现了正在采取的CLI:

    真相证明,Python编纂的CLI尝试在各种平台之间分发太困难了。

    因为Go可以编译成一个二进制文件(不需要依赖管理),故此他为我们提供了一番在平台之间分发CLI的简短解决方案,而无需进行过多之水利工作。历经编译的Go批办制文件和解释型语言的性质优势也很显然。

    根据计算机基准测试游戏,Go的运作速度比Python快得多。诸多其他基础结构CLI工具都是用Go编纂的,这并非巧合,这使我们进来了副一地。

    Go生态体系非常方便基础设施项目

    开源的功利之一是,您可以下自己欣赏的品种中学习。 例如,Cortex生活于Kubernetes(自己用Go编纂)生态体系中。 咱们很幸运能够在该生态体系中学习到不少优秀之正本求源项目,其中包括:

  • kubectl:Kubernetes的CLI
  • minikube:一种在地方运行Kubernetes的工具
  • helm:Kubernetes程序包经理
  • kops:用于管理生产Kubernetes的工具
  • eksctl:Amazon EKS的合法CLI
  • 上述所有内容都是用Go语言编写的,而不仅仅是Kubernetes品种。

    不论是你是在看CockroachDB还是Hashicorp的基础设施项目,包括Vault,Nomad,Terraform,Consul和Packer,它们都是用Go编纂的。

    Go在基础设施领域的流行还有另一番影响,这就是大部分工程师都感兴趣!在基础架构方面工作之人数对Go很熟悉,这使得吸引工程师更加容易。

    用Go是一种乐趣

    相对于Python,Go入夜起来有点痛苦,但这是指暂时的。一旦你跨越了门道,进去Go的时尚里,你会发现简直是“一马平川”。

    Go宽容的性格使他对于大型项目而言如此令人赏心悦目。

    此外,相比之下Python,Go的劣势还体现在:

  • 获得非常棒的变压器,玉器可以检测出你犯的一切低级错误
  • 更好的并行性。Go 语言就是为并行而生的
  • 布局简单。代码所要求的一切依赖都在一番二进制文件里
  • 作风一致。格式化工具会让所有代码风格都保持一致
  • 更方便的工具。一度编辑器+硬件满足几乎全部需求,都不需要IDE
  • 租用于机器学习的Python,租用于基础架构的Go

    Cortex服务于TensorFlow,PyTorch,scikit-learn和任何Python模型,这意味着与那些模型的接口以及推理前后的拍卖,用Python形成。

    但是,即使将Python代码打包到了Docker容器中,该署容器都是用Go语言编写的编码精心编辑的。如果你有兴趣成为一名机器学习工程师,这就是说了解Python是必须的。

    但是,如果你对利用机器学习基础结构感兴趣,则应认真考虑采取Go。

    【编纂推荐】

    1. 微机视觉项目:10个高质量开源数据集发布
    2. Google的量子计算机2020全会盗走比特币吗?
    3. 首个活体机器人诞生:青蛙细胞生成,超级计算机设计
    4. 必发娱乐手机版还是人为智障?该署想不到的特大型算法翻车现场
    5. 多师AI商店HR/面试官爆料:咱们是怎样招机器学习工程师的
    【义务编辑: 张燕妮 TEL:(010)68476606】

    点赞 0
  • 机器学习  必发娱乐手机版  微机
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    118人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    195人口订阅学习

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    35人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微




  • <kbd id="f4534b82"></kbd>

  •