为什么用Go编写机器学习的基础架构,而不是Python?
作者头像
  • 李晓虹
  • 2020-02-23 09:32:16 0

Python无疑是机器学习领域最受欢迎的编程语言,这一点毋庸置疑。尽管R语言、C++和Julia等编程语言也有各自的独特应用场景,使得它们在某些情况下依然流行,但Python仍然是应用最广泛的语言,并且是几乎所有主要机器学习框架的基础。

然而,令人惊讶的是,在Cortex这一开源平台中,负责将机器学习模型部署为API的代码库里,竟然有87.5%的部分是用Go语言编写的。Go语言在构建基础设施方面表现出色,尤其是在处理大规模运行的机器学习API时。

Python虽是机器学习算法的重要组成部分,但在实际生产环境中部署和管理机器学习API时,还需要考虑基础设施的其他因素,如自动扩展、API管理以及滚动更新等。这些都需要一个稳定高效的架构支持,Cortex正是为此目的而设计的。

选择Go语言作为Cortex的主要开发语言,主要有以下几个原因:

首先,Go生态系统非常适合基础设施项目。Cortex处于Kubernetes生态系统中,而Kubernetes本身就是用Go语言编写的。此外,诸如kubectl、minikube、helm、kops和eksctl等工具也都是用Go语言编写的。大多数对基础设施感兴趣的工程师都熟悉Go语言,因此Go语言能吸引这些人才。

其次,对于机器学习的基础设施来说,并发性非常重要。用户可以部署多种不同的模型作为独立的API,而Cortex则需要通过API管理这些部署。Go语言通过Goroutines提供了一种简单高效的并发解决方案,从而有效地解决了这些问题。

第三,Go语言本身的设计简洁明快,易于上手。尽管Go语言的学习曲线比Python稍陡峭,但它通过静态类型检查和编译过程减少了错误发生的可能性,使得代码更加健壮可靠。

最后,Go语言还简化了跨平台命令行工具的开发和分发。Cortex的命令行工具就是一个很好的例子,它允许用户直接从命令行部署模型和管理API。Go编译的二进制文件具有显著的性能优势,而且Go语言编写的工具在基础架构领域得到了广泛应用。

总的来说,虽然Python在机器学习领域占据主导地位,但Go语言在基础设施建设方面表现出了强大的优势。如果你希望成为一名机器学习工程师,Python是必不可少的技能;但如果你想深入研究机器学习的基础架构,那么学习Go语言将会大有裨益。

    本文来源:图灵汇
责任编辑: : 李晓虹
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
架构编写机器为什么不是基础Python学习
    下一篇