精华内容
下载资源
问答
  • 转自新智元,编辑:鹏飞虽然在机器学习中,Python已经无孔不入。但Python并不是全能之神手中的魔杖可以为所欲为。很多情况下其实用Python的效果并不如其他语言,比如Go更好,甚至...

    转自新智元,编辑:鹏飞

    虽然在机器学习中,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。

    (完)


    展开全文
  • 3.1.0 在函数内定义一个字符数组,gets函数输入字符串的时候,如果输入越界,为什么程序会崩溃? 3.1.1 C++中引用与指针的区别 3.1.2 C/C++程序的内存分区 3.1.3 快速排序的思想、时间复杂度、实现以及优化方法...
  • ghtoc Github地址(pyhon) 见toc.py,(python2.7,使用方法·:python toc.py MDFile,会生成一个.bak备份文件)【推荐这个可以,也不用装其他工具】 gh-md-toc Github地址 git团队协作项目操作说明.md 放在...
  • 目前已经实现Python、Java、PHP、NodeJS、Go、.NET Core、Python等多种语言的一键式发版、一键式回滚,大大提高了开发人员的开发效率。  在使用服务网格后,开发人员在开发应用的过程中,不用再关心代码的网络部分...
  • <div><h1>开篇 : 纵观WEB历史演变 在校学习和几年工作工作中不知...这样如果不得不用 NODE 也只会成为 Rest 中的一员而不用经过 NODE 做繁琐的通信了。这种前后分离的方式达到了满意的效果,前端不必再...
  • 这是本什么书,有何特色,内容是什么,为什么这么写;写给谁看,怎么看更好。当然我还会加一些自己觉得比较个性化的内容。 5月5日,审阅完编辑老师的第一章反馈,并合并。 5月6日,审阅完第二章的一半。海玲姐两位...
  • 《正义之心:为什么人们总是坚持“我对你错”》(The Righteous Mind) 《重新定义公司:谷歌是如何运营的》(How Google Works) 《刷新:重新发现商业与未来》(Hit Refresh) 《编程珠玑(第2版)》(Programming...
  • 比如几乎所有 Serverless 服务都支持 Node.js/Python/Java 等语言。 从支持的触发器来看,几乎所有服务也都支持 HTTP、对象存储、定时任务、消息队列等触发器。当然,这些触发器也与平台自己的后端服务...
  • COLA :根据我的了解来看,很多公司的项目都是基于 COLA 进行开发的,相比于其他快速开发脚手架,COLA 并不提供什么已经开发好的功能,它提供的主要是一个干净的架构,然后你可以在此基础上进行开发。通过一行命令就...
  • 你可以以下的语句来一个数值赋值: $a = 1234; # 十进制数 $a = -123; # 负数 $a = 0123; # 八进制数 (等于十进制数的83) $a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2...
  • 用python来描述的如何读懂正则。 <p>Js也支持三种模式,gim,表示全局,不区分大小写,多行。 一般来说很少有人这么使用var xxx = new RegExp(),而是用字面量的方式,比如...
  • 1. 为什么有这个表 作为开发者其实比较好奇其他人在做什么业余项目(不管目的是做到盈利/玩票/试试看) 所以特意建了这个库。欢迎各位开发者把自己的项目加进来~ 发 Pull Request 或 Issue 即可 (入选标准:必须是...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

为什么不用go而用python

python 订阅