我们为什么用 Go 编写机器学习架构,却不用 Python?
作者头像
  • 中国plane
  • 2020-02-02 13:20:53 2

假如你对成为机器学习工程师感兴趣,那么熟练掌握Python是必不可少的;然而,如果你对机器学习的基础架构感兴趣,那么你应该认真考虑使用Go语言。

Python是当前机器学习项目中最常用的编程语言。尽管R、C++和Julia等语言也有各自的拥护者和应用场景,但Python仍然是最广泛使用的语言,几乎所有主流的机器学习框架都支持Python。

不过,在我们的开源平台Cortex中,大部分代码都是用Go编写的。Cortex是一个用于将机器学习模型部署为API的平台。Python虽在算法实现方面表现出色,但在大规模部署和管理API时,基础架构需要具备以下功能:

  • 自动伸缩,以应对流量波动。
  • API管理,解决同步API部署问题。
  • 滚动更新,确保更新模型时不影响用户体验。

为了实现这些功能,我们选择Go作为开发语言。以下是几个主要原因:

并发处理的重要性

用户可以将多种模型部署为不同的API,并在同一个Cortex集群中进行管理。Cortex Operator需要通过各种API来管理这些部署,如Kubernetes API和AWS API等。这些API调用需要高效且可靠地进行,而并发处理是实现这一目标的关键。Go的Goroutines提供了内置的并发解决方案,简化了开发过程。

跨平台CLI工具的优势

Cortex CLI是一个跨平台的工具,用户可以通过命令行直接部署模型和管理API。最初我们使用Python编写CLI,但在多个平台上分发变得复杂。Go语言可以编译成独立的二进制文件,无需管理依赖关系,因此更易于分发。此外,Go编译后的程序性能更佳,比Python更快。

Go生态系统适合基础设施项目

Go在基础设施领域的流行并非偶然。许多流行的基础设施工具,如Kubernetes、CockroachDB和Hashicorp的项目,都是用Go编写的。Go语言的生态系统非常适合这类项目,因为很多开源工具都采用了Go,这使得开发者可以轻松地借鉴这些项目的经验。

编程体验

Go语言虽然上手难度略高于Python,但它的设计简洁且强大。Go的静态类型检查和编译器特性有助于编写高质量的代码,减少了运行时错误。总的来说,Go在技术需求和审美需求方面都能很好地满足我们。

Python与Go的角色

虽然Python在机器学习领域占据主导地位,但在基础架构层面,Go提供了更多的便利。Cortex在处理推理任务时大量使用Python,但整个系统的编排和管理则是用Go实现的。因此,如果你的目标是成为一名机器学习工程师,那么Python是必须掌握的技能;但如果你想从事机器学习的基础架构工作,Go是一个更好的选择。

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