深度学习的下一个大热门!Swift新语言请学起来~

iOS海马 2019-06-18

深度学习的下一个大热门!Swift新语言请学起来~

图片来源:swift

如果你喜欢编程,听到Swift时,可能会想到iOS或MacOS的应用程序开发。如果你喜欢深度学习,那么你一定听说过Swift for Tensorflow(S4TF)。

你也许会问:为什么谷歌要再为Swift创建一个TensorFlow版本?Python和c++已经有了各自的版本,为什么还要添加另一种语言?

本文将试着回答这个问题,并概述为什么应该认真遵循S4TF和Swift语言。本文的目的不是给出非常详细的解释,而是提供概括性的描述,以便感兴趣的人进行更深入的研究。

深度学习的下一个大热门!Swift新语言请学起来~

Swift背后有强大的支持

Swift是克里斯·拉特纳(Chris Lattner)在苹果工作时创造的。现在,他在谷歌大脑(Google Brain)工作,这是世界上最好的人工智能研究团队之一。Swift语言的创造者现在在实验室从事深度学习的研究,这一事实足以说明这是一个严肃的项目。

此前,谷歌的人意识到,尽管Python是一种优秀的语言,但它也有许多难以克服的局限性。TensorFlow需要一种新的语言,经过长时间的考虑,Swift成为了候选语言之一。

对于TensorFlow来说,Swift不仅仅是一个库

Swift对于TensorFlow来说不仅仅是另一种语言的TF。它本质上是Swift语言的另一个分支(在git的意义上)。这意味着S4TF不是一个库;它本身是一种语言,内置了支持TensorFlow所需的所有功能的特性。

例如,S4TF中有一个非常强大的自动微分系统,这是计算梯度所需要的深度学习基础之一。而在Python中,自动微分不是语言的核心组件。最初作为S4TF的一部分开发的一些功能后来集成到Swift语言本身中。

Swift运行很快

第一次知道Swift的运行速度和C代码一样快时,很多人都非常惊讶。C语言是高度优化的,可以达到非常快的速度,但这是以微管理内存为代价的,这导致C的内存不安全。此外,C语言不是一门易学的语言。

现在,Swift在数值计算中和C运行得一样快,没有内存安全问题,而且更容易学习。Swift背后的LLVM编译器非常强大,并且有非常高效的优化,这将确保代码可以运行得非常快。

深度学习的下一个大热门!Swift新语言请学起来~

图片来源:Hitesh Choudhary/unsplash.com

可在Swift中使用Python,C 和C++代码

由于机器学习的Swift还处于非常早期的阶段,适合Swift的机器学习库并不多。但不必太过担心,因为Swift具有惊人的Python互操作性。只需导入Swift中的任何Python库,它就能正常工作。同样也可以将C和C++库导入到Swift中(需要确保C++库的头文件是用纯C编写的,没有C++特性)。

总之,如果需要特定的功能,但还没有在Swift中实现,可以导入相应的Python、C或C++包。神奇吧!

Swift可以降到非常低的层次

如果你曾经使用过TensorFlow,很可能是通过Python包完成的。在幕后,TensorFlow库的Python版本中有C代码。因此,调用TensorFlow中的任何函数时,在某个层次会碰到一些C代码。这意味着有检查源代码的最低层次限制。例如,如果想了解卷积是如何实现的,将无法看到Python代码,因为这是用C实现的。

而在Swift中是不同的。克里斯·拉特纳将Swift称为“LLVM(汇编语言)的句法糖”。这意味着Swift在本质上与硬件非常接近,中间没有用C编写的其他代码层。这也意味着如前所述,Swift代码运行非常快。这使开发人员能够从非常高的层次到非常低的层次检查代码,而不需要碰到C代码。

深度学习的下一个大热门!Swift新语言请学起来~

图片来源:Blake Connally/unsplash.com

接下来还有什么?

Swift只是谷歌深度学习创新的一部分。除此之外,还有一个与其关系非常密切的组件:MLIR,它代表“多层中间表示”。MLIR将是Google统一的编译器基础结构,允许使用Swift(或任何其他受支持的语言)编写代码并将其编译到任何受支持的硬件。

目前,针对不同的目标硬件有大量编译器,但MLIR将改变这种情况,不仅允许代码重用,而且还允许编写编译器的自定义低级组件。它还将允许研究人员应用机器学习来优化低级算法。

虽然MLIR是机器学习的编译器,但它同时也支持在编译器中使用机器学习技术!这一点特别重要,因为开发数字库的工程师的扩展速度赶不上机器学习模型或硬件的多样化。

想象一下,利用深度学习来帮助优化数据上的低层次内存拼接算法(类似于Halide试图完成的任务)。而且,这仅仅是机器学习在编译器中创造性应用的开始!

总之,如果你对深度学习感兴趣,那么你应该开始学习Swift。与Python相比,它有许多优势。谷歌正对其大力投资,使Swift成为其TensorFlow机器学习基础结构的关键组成部分,Swift将很可能成为深度学习的语言。因此,尽早开始学习Swift将使你拥有极大的优势。

相关推荐