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

作者: 佚名 2020-01-21 21:38:03

为什么我用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。

机器学习 人工智能 计算机
上一篇:新突破!中国学者首次实现基于无人机的量子纠缠分发 下一篇:30 亿图库,一张照片就能查个人信息!人脸识别再爆隐私争议
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

AI人工智能正在悄悄的操控着我们的所见所想

在日常生活中大家现在已经越来越依赖手机上各种形形色色的app了,无论我们是出门吃饭时寻找餐厅,还是在视频语音聊天,刷视频,或是网上购物shopping,无时无刻我们都离不开手机APP。

软件说明 ·  18h前
AI 崛起的第九个年头,还有哪些大有可为的地方?

2020年还剩下10个月的时间,让我们去预期,人工智能会有哪些重要的趋势呢? CB insights曾就此问题做了一个判断,并给出人工智能的九个重要研究和应用趋势。AI 科技评论在一定程度上认同这些判断,针对这 9 个趋势,我们将做以下分析。

蒋宝尚 ·  18h前
AI芯片为啥至今都没有出现“爆款”?

“AI芯片”这个新鲜的概念在过去一年间逐渐走过了普及的阶段,越来越被大众所熟知。在行业走过野蛮生长,开始加速落地、加速整合的过程中,也有更多的AI芯片公司也开始走出属于自己的差异化路线。

佚名 ·  18h前
拥有30亿张照片库的人脸识别初创公司遭黑客攻击!600多家执法机构和银行信息被盗

Clearview AI是美国纽约的一家AI面部识别创业公司Clearview设计的一款突破性的面部识别应用工具,通过拍摄陌生人的照片,然后将其上传,就可以轻松查看该人的公开照片,以及指向这些照片出现位置的链接和具体内容。

张佳、王汐 ·  18h前
数据机器学习在故障检测中的应用

本文将简要介绍几种在故障诊断领域广泛应用的机器学习技术及其各自的应用方向,并对每种技术的优缺点进行简单分析。包括:贝叶斯网络(BN),人工神经网络(ANN),支持向量机(SVM)和隐马尔可夫模型(HMM)技术。

交能网 ·  20h前
人工智能如何改造旅游业

旅游业正在慢慢地将人工智能融入到行业当中,并为游客提供个性化定制体验。在人工智能的帮助下,旅游业的业务流程和客户服务都发生了改变。

佚名 ·  1天前
人工智能技术如何将人们从深度伪造的世界中拯救出来

如今,采用深度伪造(Deepfake)生成的视频和音频,人工智能生成的文本、诗歌和歌词,假网站和假新闻进入人们的世界。人们的生活还会真实吗?

Mike Elgan ·  1天前
四种使用物联网和人工智能加速获取价值的有效方法

最近,话题转向企业如何才能更快,更有效地获取和利用物联网计划的见解。物联网和人工智能的结合为企业实现这一预期成果提供了途径。实际上,这两种技术是相辅相成的,应该紧密相连。

佚名 ·  2天前
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载