Py学习  »  机器学习算法

Swift会是深度学习的下一个大热门?

Cocoa开发者社区 • 4 年前 • 544 次点击  

本文由微信公众号 「AI 前线」原创(ID:ai-front),未经授权不得转载

作者 | Max Pechyonkin

译者 | Sambodhi

要说哪门语言能扛起深度学习的大旗,搁以前就是妥妥的 Python。但深度学习“三巨头”之一 Yann LeCun 就断言,深度学习可能需要一种新的编程语言了,Python 已成为“过去式”。而 Swift 一经开源,就让众多饱受 Python 性能和灵活性困扰的开发者兴奋高呼:“终于可以抛弃 Python 了!”TensorFlow 官网也曾发文吐槽过 Python 种种缺点,如性能极差、运行时依赖包过多,不擅长并发处理等等。研究人员 Max Pechyonkin 日前撰文认为,就深度学习而言, Swift 会是下一个大热门。为什么 Swift 如此备受青睐?让我们看看 Max Pechyonkin 是怎么说的。
1写在前面

如果你非常喜欢编程,当你听到 Swift 时,你可能会联想到 iOS 或 MacOS 的应用程序开发。如果你对深度学习感兴趣,那你一定听说过 Swift for TensorFlow(缩写为 S4TF)。然后你就可以扪心自问:“为什么 Google 要为 Swift 创建 TensorFlow 版呢?不是已经有了 Python 版和 C++ 版吗?那为什么还要添加另一种版本呢?”在本文中,我将尽力回答这一问题,并概述为什么应该要认真遵循 S4TF 以及 Swift 语言本身。本文写作目的并非提供非常详细的解释,而是提供包含大量链接的总体概述,这样如果你感兴趣的话,就可以点击这些链接进行更为深入的研究。

2Swift 背后有强大的支持

Swift 是 Chris Lattner 在 Apple 工作时创造的一门语言。Chris Lattner 目前已经跳槽到 Google Brain 工作,Google Brain 是全球最优秀的人工智能研究团队之一。Swift 语言的创建者目前在实验室从事有关深度学习的研究,这一事实表明 Swift 是一个严肃的项目。

不久前,Google 意识到,尽管 Python 是一门优秀的语言,但它有许多难以克服的局限性。TensorFlow 需要一门新的语言,经过长时间的考虑,Swift 被选为候选者。我并不会在本文详细阐述这些内容,不过有一个文档讲述了 Python 的缺点,以及考虑过哪些其他语言,并阐述了最终如何缩小范围到 Swift 的。这个文档可参阅:

https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md

3Swift for TensorFlow 不仅仅是一个库

S4TF 不仅仅是另一种语言版本的 TensorFlow。从本质上来讲,它就是 Swift 语言本身的另一个分支(从 Git 意义来说)。这意味着 S4TF 并非一个库;它本身就是一门语言,内置了支持 TensorFlow 所需的所有功能。例如,S4TF 有一个非常强大的自动微分(automatic differentiation)系统,这是计算梯度所需的深度学习的基础之一。对比一下 Python,在 Python 中,自动微分并不是该语言的核心组成部分。最初作为 S4TF 的一部分开发的一些功能,后来集成到 Swift 语言本身中。

4Swift 运行特别快

当我第一次知道 Swift 的运行速度和 C 代码一样快的时候,我感到很惊讶。因为我知道 C 是经过高度优化过的,可以实现非常快的运行速度,但这是以微内存管理为代价,结果导致了 C 无法保证内存安全。

现在,Swift 在数值计算中的运行速度与 C 一样块,而且还不存在内存安全问题,还有,Swift 学习起来也容易得多。Swift 背后的 LLVM 编译器非常强大,具有非常高效的性能优化,可确保你的代码运行速度非常快。

5可在 Swift 中使用 Python、C、C++ 代码

鉴于用于机器学习的 Swift 还处于非常早期的阶段,这意味着 Swift 的机器学习库并不多。但你也无需太过担心这个问题,因为 Swift 具有惊人的 Python 互操作性。你只需在 Swift 中导入任何 Python 库,它就可以正常工作。类似地,你也可以将 C 和 C++ 库导入 Swift(对于 C++,你需要确保头文件是用普通的 C 语言编写的,没有 C++ 特性)。

总之,如果你需要特定的功能,但尚未在 Swift 中实现的话,你可以导入相应的 Python、C 或 C++ 包。这点令人印象深刻!

6Swift 可以在非常低的底层中运行

如果你曾经使用过 TensorFlow,那么很有可能是通过 Python 包来实现的。在底层,Python 版的 TensorFlow 库下面有 C 代码。因此,当你调用 TensorFlow 中的任何函数时,在某种程度上你会碰到一些 C 代码。这意味着,当你尝试检查源代码时,存在一个下限。例如,如果你想知道卷积是如何实现的,但你却无法看到相关的 Python 代码,因为它是用 C 实现的。

如果是 Swift,那情况就不一样了。Chris Lattner 称 Swfit 是“LLVM『汇编语言』的语法糖”。也就是说,从本质上来讲,Swift 非常靠近硬件,而且在这两者之间没有用 C 语言编写的其他代码层。这就意味着,Swift 代码运行速度如上所述非常快。这一切使得开发人员能够从非常高的层次开始检查代码到非常低的层次,而无需使用 C。

译注:语法糖,syntactic sugar,也译为糖衣语法,是由英国计算机科学家 Peter John Landin 发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便进程员使用。通常来说使用语法糖能够增加进程的可读性,从而减少进程代码出错的机会。

7下一步的方向

Swift 只是 Google 深度学习创新的一部分,还有一个非常密切相关的组成部分:MLIR,表示多级中间语言。MLIR 将是 Google 的统一编译器基础,允许用 Swift(或任何其他支持的语言)编写代码,并将其编译到任何支持的硬件。目前,有许多针对不同目标硬件的编译器,但 MLIR 将改变这一点,不仅允许代码重用,而且还允许编写编译器的自定义底层组件。它还允许研究人员应用机器学习来优化低级算法。

想象一下,如果我们能够使用深度学习来帮助优化数据的低级内存分块算法(memory tiling algorithms)(类似于 Halide 试图完成的任务)会怎么样。此外,这只是机器学习在编译器中的开始,还有其他创造性应用等待我们去开发!

8写在最后

如果你对深度学习很感兴趣,那么 Swift 就是一门你应该开始学习的语言。和 Python 相比,Swift 有很多优势。Google 正大力投资,使 Swift 成为其 TensorFlow 机器学习基础的关键组成部分,而 Swift 有望成为深度学习的语言。因此,现在就开始学 Swift 吧,及早加入,你将获得先发优势。

 英文原文

https://towardsdatascience.com/why-swift-may-be-the-next-big-thing-in-deep-learning-f3f6a638ca72


【END】

精彩推荐

苹果 SwiftUI 踢馆谷歌 Flutter!
来一次有侧重点的区分Swift与Objective-C

Swift 势必取代 Python?


看好Swift点这里
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34727
 
544 次点击