如果你正在从事深度学习,那么Swift是你应开始学习的一门语言!

点击上方关注,All in AI中国

介绍

如果您正在编程,当您听到Swift时,您可能会考虑iOS或MacOS的应用程序开发。如果你正在从事深度学习,那么你一定听说过Swens for Tensorflow(缩写为S4TF)。然后,您可以问自己:“为什么Google会为Swift创建TensorFlow版本?我们已经有了Python和C ++版本;为什么还要添加另一种语言?“在这篇文章中,我将尝试回答这个问题,并概述你为什么要认真遵循S4TF以及Swift语言本身的原因。这篇文章的目的不是提供非常详细的解释,而是提供大量链接的一般概述,以便您感兴趣的话,可以深入挖掘。

Swift背后有强有力的支持

如果你正在从事深度学习,那么Swift是你应开始学习的一门语言!

Swift是由Chris Lattner在Apple工作时创建的。现在,Chris Lattner在Google Brain工作,Google Brain是世界上最好的人工智能研究团队之一。 Swift语言的创建者现在在研究深度学习的实验室工作的事实说明这是一个严肃的项目。

前段时间,谷歌的人们意识到尽管Python是一种优秀的语言,但它有许多难以克服的局限性。 TensorFlow需要一种新语言,经过长时间的考虑,Swift被选为候选人。我不会在这里详细介绍,但是有一个文档描述了Python的缺点以及考虑了其他哪些语言以及最终如何将其缩小到Swift。

Swiftfor TensorFlow不仅仅是一个库

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

Swift很快

当我第一次得知Swift的运行速度与C代码一样快时,我感到很惊讶。我知道C是经过高度优化的,并且可以实现非常高的速度,但这需要以微内存管理为代价,这会导致C不能保证内存安全。此外,C不是一种非常容易学习的语言。

如果你正在从事深度学习,那么Swift是你应开始学习的一门语言!

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

您可以在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中,情况就不同了。 Chris Lattner称Swift是“LLVM [汇编语言]的语法糖”。这意味着从本质上讲,Swift非常接近硬件,并且没有其他层用C语言编写。这也意味着Swift代码非常快,如上所述。这一切都会导致您作为开发人员能够从非常高的级别检查代码到非常低的级别,而无需进入C语言。

接下来是什么

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

如果你正在从事深度学习,那么Swift是你应开始学习的一门语言!

虽然MLIR充当ML的编译器,但我们也看到它可以在编译器中使用机器学习技术!这一点尤为重要,因为开发数值库的工程师的扩展速度与ML模型或硬件的多样化速度不同。

想象一下,能够使用深度学习来帮助优化数据上的低级内存切片算法(类似于Halide试图完成的任务)。而且,这只是编译器中机器学习的开始和其他创造性应用!

总结

如果你正在深入学习,那么Swift是你应该开始学习的语言。与Python相比,它带来了许多优势。谷歌正在大力投资使Swift成为其TensorFlow ML基础设施的关键组成部分,而Swift很可能成为深度学习的语言。因此,尽早开始和Swift合作,你会拿到一个先发优势。

如果你正在从事深度学习,那么Swift是你应开始学习的一门语言!

编译出品

相关推荐