Python为何我们用 Go 而非 Python 来部署机器学习模型?( 二 )


3. 在 Go 中构建跨平台 CLI 更容易 我们的 CLI 部署模型并管理 API:
Python为何我们用 Go 而非 Python 来部署机器学习模型?
本文插图
来源:Cortex GitHub
我们希望 CLI 在 Linux 和 Mac 上都可以用 。 最初 , 我们尝试用 Python 语言来编写 CLI , 但用户一直很难让它在不同的环境中使用 。 当我们在 Go 中重新构建 CLI 时 , 能够将它编译成单一的二进制文件 , 这样一来 , 我们就可以跨平台分发 CLI , 而不需要做太多额外的工程计划 。
编译后的 Go 二进制代码与解释性编程语言相比 , 性能上的优势也很明显 。 根据计算机基准测试的结果来看 , Go 的速度明显比 Python 要快得多 。
无独有偶 , 许多其他基础设施的 CLI , 如 eksctl、kops 和 Helm 客户端等 , 都是用 Go 语言编写的 。
4. Go 有助于构建可靠的基础设施 最后一点 , Go 有助于 Cortex 最重要的特性:可靠性 。
在所有软件中 , 可靠性显然很重要 , 但对于推理基础设施来说 , 可靠性绝对是最关键的 。 Cortex 中的一个 bug 可能会让推理费用严重增加 。 如果存在严重的 bug , 那么很有可能在编译过程中被发现 。 对于一个小团队来说 , 这是非常有用的 。
与 Python 相比 , Go 的高冷性质可能会使得它上手变得更痛苦一些 , 但这些内部的“防护栏”为我们提供了第一道防线 , 帮助我们避免犯下愚蠢的类型错误 。
小结:Python 用于脚本 , Go 用于基础设施 我们仍然喜欢 Python , 它在 Cortex 中占有一席之地 , 特别是在模型推理方面 。
Cortex 支持 Python 作为模型服务脚本 。 我们编写 Python , 将模型加载到内存中 , 进行推理前后处理 , 并为请求提供服务 。 然而 , 即使是 Python 代码也被打包到 Docker 容器中 , 这些容器也是由 Go 语言编写的代码进行编排的 。
对于数据科学和机器学习工程来说 , Python 将(并且应该)仍然是最流行的语言 。 但是 , 当涉及到机器学习基础设施时 , 我们对 Go 很满意 。
【Python为何我们用 Go 而非 Python 来部署机器学习模型?】 关注我并转发此篇文章 , 私信我“领取资料” , 即可免费获得InfoQ价值4999元迷你书!


推荐阅读