性能提升 25 倍:Rust 有望取代 C 和 C++,成为机器学习首选 Python 后端

 在机器学习开发领域,如果我们纵观全局,撇除所有微小的细节,那么就可以提炼出机器学习开发中的两大不变步骤:模型训练和预测(或推断)。如今,机器学习的首选语言是 Python(除非你的工作环境有一些不寻常的约束才会有所不同),而这篇文章会带你走过一段新的旅程。希望当你看到最后会发现,使用 Rust 作为训练后端部署平台的主意并不像听起来那样疯狂或令人困惑(除了标题提到的性能提升外,这种做法的好处其实还有很多)。

为什么选择 Python?

我们可以花很多时间讨论机器学习开发中使用的各种工作流,但如果说我们通常是以一种探索性的方式来训练模型,这通常是没有争议的。你有一组数据,然后把它们切成许多片段从而更好地理解它们,接着尝试各种方法来解决你所关注的特定问题。(在谷歌街景图片中识别出小猫?天气预报?抑或是作物产量优化?做什么你来定!)

这一路上会有很多陷阱,最后你尝试使用的大多数技术都不是开箱即用的,因此重点在于快速的原型设计迭代改进。

对于像 Python 这样的动态编程语言,这是一个理想的使用场景。

更重要的是,你要考虑到大多数机器学习实践者会有统计学、数学、物理或类似学位的背景,却不是计算机科学专家,也就是说他们(我也一样✋)几乎没有接受过软件工程实践和工具方面的训练。

虽说 Python 同时支持函数式和面向对象的模式,但你可以使用命令式风格,凭借其脚本功能来快速上手。它的入门门槛很低,随着你的经验提升,越来越精于此道,Python 也会与你一同成长。

但是,仅仅易用是远远不够的:训练机器学习模型需要大量的繁琐运算,而 Python 绝对不是最快的编程语言。

于是我们看到 NumPy(1995/2006)、SciPy(2001)、Pandas(2008)和 Scikit-learn(2007)鱼贯入场。如果没有这样一个用于机器学习和科学计算的、高质量且覆盖全面的工具包,Python 就不会取得今天的地位。

然而,如果你深入背后探究一番,就会发现那里没有多少 Python 的位置:你正在使用 Python 来编排和利用一个 C 和 C++例程的强大内核

Python 是这些系统的前端,用户用 Python 这个用户界面将它们轻松地粘合在一起。C 和 C++ 才是你的后端,是幕后的魔力源泉。

确实,这是 Python 经常被忽略的特性:使用其外函数接口(FFI)与其他编程语言互操作相当容易。特别是,Python 库可以将需要大量数字运算的程序代码委派给 C 和 C++,这是 Python 科学生态系统中所有基础库都在使用的策略。

当然,技术永远无法决定一切。社会学因素对于大多数项目的成功(或消亡)都是至关重要的,即使有些人觉得这难以接受。

因此我们应该再补充一些背景:Python 是一个开放源代码项目(嗨,MATLAB!),它在学术机构中的渗透水平是不可忽略的;而且事实上,当深度学习走进聚光灯下时,与它相关的多数科学生态系统已经建立完毕了。

事后看来,将 Python 视为会在机器学习领域占据统治地位的强大候选者是很自然的事情,结果也并不出人意料。

我们今后还应该继续使用 Python 吗?

前面我们简要地介绍了将 Python 作为机器学习开发首选编程语言的部分原因。

但世界并不是静止不变的:背景环境的变化可以大大改变人们对哪种工具是“最佳工作工具”的认识。

一些最新趋势可能会加强 Python 在机器学习领域的地位。

微服务

微服务架构目前在架构设计方法中占主导地位:公司用松散的容器化服务集合来运行他们的业务,这些服务通过网络相互通信。

运行一个 Polyglot 堆栈从未如此简单:你的主应用程序和业务逻辑的精华都可以用 Java 编写——当你想利用机器学习来确定某笔信用卡交易是合法还是欺诈时,你可以发出一个 POST 请求到一个 Python 微服务上。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
流行的编程语言会根据不同的应用领域和需求而变化。以下是对于C、C++PythonRust的一些优势和应用场景的概述: 1. C语言: - 优势:C语言是一种底层语言,具有高性能和低级别控制的特点。它在嵌入式系统、操作系统和硬件驱动等方面广泛应用。 - 应用场景:嵌入式系统开发、操作系统开发、游戏引擎、高性能计算等。 2. C++语言: - 优势:C++是C语言的扩展,提供了更多的功能和抽象特性,同时保持了高性能。它支持面向对象编程和泛型编程,具有广泛的应用领域。 - 应用场景:游戏开发、图形界面应用、大规模系统开发、高性能计算等。 3. Python语言: - 优势:Python是一种高级语言,具有简洁明确的语法和丰富的标准库。它易于学习和使用,适合快速开发和原型设计。 - 应用场景:Web开发、数据科学、机器学习人工智能、自动化脚本等。 4. Rust语言: - 优势:Rust是一种系统级语言,注重安全性和并发性。它具有内存安全和线程安全的特性,并提供了高级别的抽象和模式匹配。 - 应用场景:系统级编程、网络服务、嵌入式系统、高性能并发应用等。 在未来的应用中,每种语言都有其独特的优势和适用场景。对于底层系统开发、高性能计算和嵌入式系统,C和C++可能仍然是首选。对于快速开发和数据处理等领域,Python可能更受青睐。而Rust则适用于对安全性和并发性要求较高的应用场景。最终,选择哪种语言取决于项目需求、团队技能和个人偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值