当前位置: 首页 > 工具软件 > Go Cortex > 使用案例 >

机器学习用哪门语言更好

淳于开畅
2023-12-01

情况分析

机器学习用Python还是Golang?在我看来,Python在这几年使用的人比较多,主要原因是框架和包较多。反而Golang这几年使用的人比较少,主要原因是框架和包比较少。而为什么要拿Golang和Python比呢。我觉得如果Golang有Python那么多包和框架可以取代Python,刚好这几年Go+的出现能和Pyhton通用我觉得这一拓展接下来会和云人工智能有关系,当然目前只是猜测。接下来看看机器学习Python和Golang两者之间的比较。

机器学习(人工智能)发展历史

机器学习阶段年份主要成果代表人物
人工智能起源1936自动机模型理论阿兰•图灵(Alan Turing)
1943MP模型沃伦•麦卡洛克(Warren McCulloch)
1951符号演算 冯• 诺依曼(John von Neumann)
1950逻辑主义克劳德•香农(Claude Shannon)
1956人工智能约翰•麦卡锡(John McCarthy)、马文•明斯基(Marvin Minsky )、 克劳德•香农(Claude Shannon)
人工智能初期1958LISP约翰•麦卡锡(John McCarthy)
1962感知器收敛理论 弗兰克•罗森布拉特(Frank Rosenblatt)
1972 通用问题求解(GPS)艾伦•纽厄尔(Allen Newell)、赫伯特•西蒙(Herbert Simon)
1975 框架知识表示马文•明斯基(Marvin Minsky)
进化计算1965进化策略英格•雷森博格(Ingo Rechenberg )
1975遗传算法 约翰•亨利•霍兰德(John Henry Holland)
1992 基因计算约翰•柯扎(John Koza)
专家系统和知识工程1965模糊逻辑、模糊集拉特飞•扎德(Lotfi Zadeh)
1969DENDRA、MYCIN费根鲍姆(Feigenbaum )、布坎南(Buchanan )、莱德伯格(Lederberg)
1979 ROSPECTOR杜达(Duda)
神经网络1982 自组织网络图沃•科霍宁(Teuvo Kohonen)
1982Hopfield网络霍普菲尔德(Hopfield)
1986 BP算法鲁姆哈特(Rumelhart)、麦克利兰(McClelland)
1989卷积神经网络乐康(LeCun)
1998LeNet乐康(LeCun)
1997循环神经网络RNN塞普•霍普里特(Sepp Hochreiter)、尤尔根•施密德胡伯(Jurgen Schmidhuber)
分类算法1986决策树ID3算法罗斯•昆兰(Ross Quinlan)
1988Boosting 算法弗罗因德(Freund)、米迦勒•卡恩斯(Michael Kearns)
1993 C4.5算法罗斯•昆兰(Ross Quinlan)
1995 AdaBoost 算法弗罗因德(Freund)、罗伯特•夏普(Robert Schapire)
1995 支持向量机科林纳•科尔特斯(Corinna Cortes)、万普尼克(Vapnik)
2001随机森林里奥•布雷曼(Leo Breiman)、阿黛勒• 卡特勒(Adele Cutler )
深度学习2006深度信念网络杰弗里•希尔顿(Geoffrey Hinton)
2012谷歌大脑吴恩达(Andrew Ng)
2014生成对抗网络GAN伊恩•古德费洛(Ian Goodfellow)

为什么Python在近发展这么快

Python如今却稳坐编程语言界的霸主,尤其是在机器学习领域,所有主流机器学习框架都在用Python,当然Python爬虫也是有一部分功劳的。

Python引以为豪的机器学习算法,只是机器学习系统的一个组成部分。要实际大规模运行生产机器学习API。

机器学习API需要实现哪些功能的基础架构:

1.自动缩放

以便流量波动不会破坏您的API,API管理,以处理的API部署滚动更新,以便您可以在更新模型的同时仍为用户提供服务。

2.Cortex部署

对于像Cortex这样的开源机器学习部署平台,旨在使所有这些基础架构自动化,以及日志记录和成本优化等其他方面的关注,相比Python而言,Go更合。

GO在什么方面超过了Python

1.并发

并发对于机器学习基础架构至关重要,用户可以将许多不同的模型部署为不同的API,所有模型都在同一个Cortex集群中进行管理。
为了让Cortex Operator能够管理这些不同的部署,需要纠缠一些不同的API。
用户不会直接与任何这些API进行交互,取而代之的是,Cortex以编程方式调用这些API来供应集群,启动部署和监视API。
除此之外,Goroutines是正常的Go并发执行的功能。许多Goroutine可以放在一个OS线程上,如果Goroutine阻塞了OS线程,则Go运行时会自动将其余Goroutines移至新的OS线程。
使用asyncio等最新工具在Python中实现所有这些功能可能是可行的,但是Go的设计充分考虑了这种用例,这一事实使我们的生活变得更加轻松。

2.构建跨平台CLI

在Go中构建跨平台CLI更容易
Cortex CLI是一种跨平台工具,允许用户直接从命令行部署模型和管理API。Python编写的CLI尝试在各种平台之间分发太困难了。
因为Go可以编译成一个二进制文件(不需要依赖管理),所以它为我们提供了一个在平台之间分发CLI的简单解决方案,而无需进行过多的工程工作。经过编译的Go二进制文件和解释型语言的性能优势也很明显。
根据计算机基准测试游戏,Go的运行速度比Python快得多。许多其他基础结构CLI工具都是用Go编写的,这并非巧合。

3.生态系统

Go生态系统非常适合基础设施项目
开源的好处之一是,您可以从自己欣赏的项目中学习。 例如,Cortex存在于Kubernetes(本身用Go编写)生态系统中。 我们很幸运能够在该生态系统中学习到许多出色的开源项目。
例如: kubectlminikubehelmkops等是用GO写的,不仅是Kubernetes项目。
无论是在看CockroachDB还是Hashicorp的基础设施项目,包括Vault,Nomad,Terraform,Consul和Packer,它们都是用Go编写的。
Go在基础设施领域的流行还有另一个影响,这就是大多数工程师都感兴趣!在基础架构方面工作的人对Go很熟悉,这使得吸引工程师更加容易。

总结

除此以外,相比Python,Go的优势还体现在:
拥有非常棒的编译器,编译器可以检测出你犯的所有低级错误更好的并行性。Go 语言就是为并行而生的部署简单。代码所需要的所有依赖都在一个二进制文件里风格一致。格式化工具会让所有代码风格都保持一致更便捷的工具。一个编辑器+插件满足几乎所有需求,都不需要IDE适用于机器学习的Python,适用于基础架构的GoCortex服务于下面展示一些 。
TensorFlow PyTorch scikit-learn和其他Python模型,这意味着与这些模型的接口以及推理前后的处理,用Python完成。但是,即使将Python代码打包到了Docker容器中,这些容器都是用Go语言编写的代码精心编排的。如果你有兴趣成为一名机器学习工程师,那么了解Python是必须的。但是,如果你对使用机器学习基础结构感兴趣,则应认真考虑使用Go。

后记

大家觉得有什么方面说的不对可以再下方留言!
谢谢观看,希望大家能给个三连!

 类似资料: