为什么Swift可以成为深度学习中的大事件

哈Ha! 我向您介绍了马克斯·皮基翁金(Max Pechyonkin)撰写的文章“为什么Swift可能是深度学习的下一个重要内容”的翻译,我对此感兴趣,作者在其中讨论了未来几年将进行深度培训的语言。

如果您正在进行深入的培训,那么很可能您应该开始学习Swift

参赛作品


如果您正在编程,那么很可能当您听到Swift时,就考虑在iOS和MacOS上开发应用程序。 如果您正在接受深入的培训,那么您应该已经听说过Swift for Tensorflow (S4TF)。 然后您可能会想,“ Google为什么要为Swift创建TensorFlow版本? 毕竟,已经有适用于Python和C ++的版本,那为什么还要使用另一种语言?” 在本文中,我将尝试回答这个问题,并说明为什么您应密切监视S4TF以及Swift语言本身的原因。 我不会尝试进行详细的分析,我只会尝试使用很多链接来描述全局,如果您有兴趣,可以进行更深入的研究。

Swift有很强的支持


Swift是由Chris Luttner在苹果公司工作时创建的。 克里斯现在为Google Brain (世界上最好的人工智能研究团队之一)工作。 Swift语言的创建者现在正在实验室中进行深入培训,这一事实说明了该项目的重要性。

不久前,Google的人们意识到,即使Python和出色的语言,它仍然存在许多难以克服的限制。 TensorFlow需要一种新的语言,经过深思熟虑,Swift被选为候选语言。 我不会在这里详细介绍,但是这里是描述Python缺陷文档,以及考虑了哪些其他语言以及它们在Swift中是如何结合在一起的。

TensorFlow的Swift不仅仅是一个库


TensorFlow的Swift不仅是另一种语言的TF。 本质上,这是Swift语言本身的另一个分支(在git的意义上)。 这意味着S4TF不是库。 它是一种具有自己规则的语言,具有自己的内置函数,这些函数支持TensorFlow所需的所有功能。 例如,S4TF有一个非常强大的自动微分系统:它是深度学习的基础知识之一,它是计算梯度所需的。 将此与Python进行比较,在Python中,自动区分不是该语言的主要组成部分。 最初作为S4TF的一部分开发的某些功能后来被集成到Swift语言本身中。

快速快速


当我第一次发现Swift和C一样快时,我很惊讶。 我知道C是经过高度优化的并且可以达到很高的速度,但这是由于微内存管理引起的,因此C在内存安全性方面存在问题。 另外,C不是那么容易学习。

Swift现在在数值计算中的运行速度与C 一样快 ,它在内存安全性方面没有任何问题,而且更容易学习。 Swift的LLVM编译器非常强大,并且具有非常有效的优化,它将提供非常快的代码速度。

您可以在Swift中使用Python,C和C ++


由于用于机器学习的Swift尚处于开发的早期阶段,因此尚未为其创建许多MO的库。 您不必为此担心太多,因为Swift与Python具有惊人的Python兼容性 。 您只需将任何Python库导入Swift,即可使用。 您还可以将C和C ++库导入到Swift中(对于C ++,您需要确保头文件是用纯C编写的,没有C ++函数)。

总而言之,如果您需要特定的功能,但是尚未在Swift中实现,则可以导入适当的Python,C或C ++包。
令人印象深刻!

斯威夫特可以走得很低


如果您曾经使用过TensorFlow,则很可能是使用Python软件包完成的。 在幕后,TensorFlow库的Python版本在非常低的级别使用C代码。 因此,当您在TensorFlow中调用函数时,在某种程度上使用了一些C代码,这意味着您可以检查源代码的深度是有限的。 例如,如果要查看如何实现卷积,则不会看到Python代码,因为它们是用C实现的。

斯威夫特与众不同。 克里斯·卢特纳(Chris Luttner)称Swift为“ LLVM [汇编语言]的语法糖 ”。 实际上,这意味着Swift几乎可以直接与硬件一起使用,并且在C之间没有其他代码行。这也意味着Swift速度非常快,如上所述。 所有这些导致一个事实,您作为开发人员可以在非常高和非常低的级别上检查代码,而无需使用C。

接下来是什么?


Swift只是Google进行的深度学习创新的一部分。 还有一个非常紧密地联系在一起的组件: MLIR ,这意味着多级中间表示。 MLIR将成为统一的编译器基础结构,使您可以用Swift(或任何其他语言)编写代码并在任何支持的硬件上进行编译。 现在有许多针对不同目标设备的编译器,但是MLIR可以更改此设置,它不仅允许重用代码,还可以编写自己的低级编译器组件。 它还将允许研究人员使用机器学习来优化低级算法。

虽然MLIR充当机器学习的编译器,但我们也看到了在编译器中使用机器学习方法的可能性。 这一点特别重要,因为开发数值库的工程师数量的增长速度没有机器学习的各种模型或硬件快。

想象一下使用深度学习来优化用于将内存划分为数据的低级算法( Halide正在尝试解决类似的问题)。 这仅仅是开始,我们正在等待使用编译器中的机器学习的其他更多创意应用程序。

总结


如果您在深度学习领域,那么您可能应该开始学习Swift。 与Python相比,这将带来许多优势。 Google大力投资使Swift成为其TensorFlow ML基础架构的主要组成部分,很可能Swift将成为一种深度学习语言。 如果您已经开始学习和使用Swift,这将为您提供先驱优势。

Source: https://habr.com/ru/post/zh-CN457954/


All Articles