七叶笔记 » golang编程 » Python VS Go,在编写机器学习基础设施平台上,元老编程语言输了

Python VS Go,在编写机器学习基础设施平台上,元老编程语言输了

Go语言又称 Golang,是 Google 开发的一种静态强类型、编译型、并发型且具有垃圾回收功能的 编程语言

大部分用过 Go 语言的人都认可其是一种非常不错的生产力工具,有人总结其优点如下:部署简单、并发性好、语言设计良好、执行性能好。Cortex Labs 介绍了团队为何用 Go语言而非 Python 编写机器学习基础设施。

就说Python 是机器学习项目中最流行的语言这一点,应该不会有人提出异议。

最近Cortex Labs 团队构建了一个将机器学习模型部署为 API 的开源平台—— Cortex,我们考虑了很久应该如何选择编程语言。最终的结果是代码库中有 87.5% 用的是 Go语言。经过一番比较,我们认为:Python 适用于机器学习,而 Go语言适用于基础设施。

Python 所擅长的机器学习算法只是生产机器学习系统的组成部分之一。要实际大规模运行生产机器学习 API,你需要能够实现如下功能的基础设施:

  • 可自动伸缩,以便在发生流量波动时不会中断 API。
  • API 管理,用于处理同时部署的 API。
  • 滚动更新,以便在为用户提供服务的同时更新模型。

Cortex 的构建旨在自动化实现所有这些基础设施的功能,以及其他关注点,如日志记录、成本优化等。Go语言是满足这些因素的理想选择,原因如下:

并发性对机器学习基础设施至关重要

用户可以将许多不同的模型部署为不同的 API,所有这些 API 都在同一个 Cortex 集群中进行管理。为了让 Cortex Operator 管理这些不同的部署,它需要处理几个不同的 API。

用户并不直接与这些 API 中的任何一个进行交互。相反,Cortex 是通过编程方式调用这些 API 来进行配置集群、驱动部署和监控 API 的。

要使所有这些重叠的 API 调用具有可执行性、可靠性是一个挑战。

对于这一问题,Go语言有一个优雅的、开箱即用的解决方案: Go routines

用Go语言来构建跨平台的CLI更容易

Cortex CLI 是一个跨平台的工具,允许用户直接从命令行部署模型和管理 API。下面动图显示了 CLI 的实际运行情况:

与解释性编程语言相比,编译后的 Go 二进制代码的性能优势也非常显著。根据计算机基准测试的结果来看,Go 要 比 Python 快得多。

Go语言的生态系统有利于推动基础设施项目

Go 在基础设施领域的流行还有另一个影响,那就是大多数对基础设施感兴趣的工程师都熟悉 Go 语言,这使得 Go 更容易吸引工程师。

用Go语言进行工作是一种乐趣

相对于 Python,Go 入门有点痛苦。然而,Go 的高冷性质使它成为大型项目的乐趣所在。我们仍然对软件进行严格的测试,但静态输入和编译,这两件事会让初学者有点不舒服,但这就像是我们的防护栏,帮助我们来编写(相对)没有 bug 的代码。

如果你想成为一名机器学习工程师,那么就必须或多或少了解 Python,这是没有商量余地的。但是,如果你对机器学习基础设施感兴趣的话,那么,你就应该认真考虑使用 Go。

你赞同Cortex Labs以及他团队的观点吗?你觉得编程语言Python输给Go了吗?欢迎来到评论区注水交流~

相关文章