请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

我们为什么用 Go 编写机器学习架构,却不用 Python?

[复制链接]
查看: 33|回复: 0

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39362
发表于 2020-1-19 10:55 | 显示全部楼层 |阅读模式
“假如你有爱好成为一位呆板进修工程师,那末必须熟练把握Python——可是,假如你对呆板进修的根柢架构感爱好,则应当认真考虑Go!
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
作者 | Caleb Kaiser
译者 | 弯月,责编 | 郭芮
以下为译文:
现在,众所周知Python是呆板进修项目中最流行的说话。尽管R、C++ 和Julia等说话都有各自的支持者和操纵情况,但Python仍然是操纵最普遍的说话,几乎每个支流的呆板进修框架都操纵了Python。
但是,在我们的Cortex(用于将呆板进修模子安排成API的开源平台)代码库中,87.5%的代码都是Go。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
Python引以为豪的呆板进修算法只是生产呆板进修系统的一个组成部分。假如想大范围运转生产呆板进修API,你的根柢架构必要实现以下功用:

  • 自动缩放,确保流量波动不会影响API。
  • API治理,处置赏罚同步API安排。
  • 转动更新,确保更新模子时不会停止用户办事。
我们构建Cortex的方针是自动化上述全数的根柢架构,以及日志记录和本钱优化等其他题目。
出于以下原因原由,我们以为Go才是构建满足上述需求的软件的理想之选。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
并发对于呆板进修的根柢架构相当严重
用户可以将很多差此外模子安排成差此外API,并把全数模子都放到同一个Cortex集群及第行治理。Cortex Operator必要经过一些API来治理这些差此外安排,比如:

  • Kubernetes API,Cortex挪用这个API在集群上安排模子。
  • 各类AWS API,包含EC2 Auto Scaling、S3、CloudWatch等,Cortex挪用这些API来治理AWS上的安排。
用户不会间接与这些API举行交互。Cortex经过步伐挪用这些API来治理集群、启动安排和监视API。
以高效、牢靠的方式交织挪用这些API是一项困难。采取并发的方式处置赏罚这些API挪用是最为高效的方式,但同时也带来了复杂性,由于我们不能不担忧合作状态等题目。
Go为治理这个题目供给了一个开箱即用的治理计划:Goroutines。
Goroutines是Go以并发的方式尝试代码的函数。我们可以另写一篇文章深入探讨Goroutines背后的工作方式,但概括来说,Goroutines是由Go运转时自动治理的轻量级线程。你可以将多个Goroutine放在一个OS线程上,而且假如Goroutine阻塞了OS线程,则Go运转时会自动将此外的Goroutines移到新的OS线程上。
Goroutines还供给了一种名叫“通道”(channel)的功用,你可以操纵这个功用在Goroutines之间传递消息,帮助我们调节请求并避免出现合作状态。
固然,你也可以操纵asyncio等最新的工具在Python中实现这些功用,但Go的筹划考虑到了这些情况,操纵Go可以减轻我们的工作负担。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
操纵Go构建跨平台的CLI更轻易
Cortex CLI是一个跨平台工具,用户可以操纵这个工具间接从命令行安排模子和治理API。
最初,我们操纵Python编写了这个CLI,但究竟证实,在多个平台上分发这个CLI太困难了。由于Go可以编译成一个二进制文件(不必要治理依靠),所以可以为我们供给了一个简单的治理计划,帮助我们在平台之间分发CLI,而无需额外的工程工作。
Go编译后的二进制文件与表白型说话相比,其性能上风也很明显。按照盘算机基准测试结果,Go的速度远胜Python。
很多其他的根柢法子CLI工具也是用Go编写的,这绝非偶然,具体的出处请参照下面的第三点。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
Go的生态系统很是得当根柢法子项目
开源的优点之一在于,你可以向自己欣赏的项目进修。例如,Cortex存在于Kubernetes的生态系统中,而Kubernetes自己也是用Go编写。我们很侥幸可以也许鉴戒这个生态系统中很多出色的开源项目,其中包含:

  • kubectl:Kubernetes CLI
  • minikube:一种在当地运转Kubernetes的工具
  • helm:Kubernetes软件包治理工具
  • kops:治理生产Kubernetes的工具
  • eksctl:亚马逊EKS的官方CLI
上述这些工具都是Kubernetes项目,而且都是用Go说话编写的。假如你细致检察CockroachDB和Hashicorp的根柢法子项目(包含Vault、Nomad、Terraform、Consul和Packer),就会发现它们齐满是用Go说话编写的。
Go在根柢架构范围的流行还有另一个影响,那就是大大都对根柢架构感爱好的工程师都很熟悉Go。所以,很轻易吸引到这些工程师。我们公司最杰出的一位工程师就是经过AngelList找到我们的,我们很侥幸他找到了我们。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
Go说话编程是一种享用
我们操纵Go构建Cortex的末端一个出处就是,我们很享用Go说话编程。
相对于Python,Go的入门有点艰难。可是,Go的宽大性可以为大型项目带来愉悦感。我们在测试软件上很是严酷,可是静态输入和编译(对于初学者来说Go的两大困难)对我们来说就像是防护栏,帮助我们编写(相对而言)没有bug的代码。
你大要会说其他说话有差此外上风,但总的来说,Go可以也许最大限度地满足我们的技术和美学需求。
我们为什么用 Go 编写机器学习架构,却不用 Python?  区块链
Python适用于呆板进修,而Go适用于根柢架构
我们也很爱好Python,它在Cortex中占据一席之地,特别是在处置赏罚推理方面。
Cortex办事于TensorFlow、PyTorch、scikit-learn以及其他Python模子,这意味着与模子的接口以及推理之前和以后的处置赏罚均在Python中完成。固然Python代码经过打包安排到Docker容器中,但这些容器是由Go编写的代码编排的。
假如你有爱好成为一位呆板进修工程师,那末必须熟练把握Python。可是,假如你对呆板进修的根柢架构感爱好,则应当认真考虑Go。
原文:https://towardsdatascience.com/why-were-writing-machine-learning-infrastructure-in-go-not-python-38d6a37e2d76
本文为 CSDN 翻译,转载请说明根源出处。

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 如何炒外汇入门_外汇交易_外汇交易平台_外汇学习培训-【518外汇网】 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表