Python如日中天MaxPechyonkin:深度学习可能又需要一种新的编程语言

Python如日中天MaxPechyonkin:深度学习可能又需要一种新的编程语言

“人生苦短,我用 Python。” 但是随着 Python 的全面展开,深度学习可能需要一种新的编程语言。机器学习工程师 Max Pechyonkin 认为 Swift 可能会成为一种重要的深度学习语言,他在博客中简要解释了 Swift 的优势和发展前景。你会考虑学习 Swift 吗?

如果你懂编程,当你听到 Swift 时,你可能会想到为 iOS 或 MacOS 开发应用程序。如果你了解深度学习,那你一定听说过 Swift for Tensorflow(简称 S4TF):. 然后你可能会问自己llvm 游戏引擎支持更多语言,“Google 为什么要为 Swift 创建一个 TensorFlow 版本?毕竟有 Python 和 C++ 版本;为什么要添加另一种语言?” 我将尝试在本文中回答这个问题,并列出你应该认真关注 S4TF 和 Swift 语言本身的原因。本文的目的不是详尽的解释,而是提供一个总体概述,并提供大量链接来帮助您了解更多信息。

Swift背后有强大的支持

白鹭引擎 语言_虚幻引擎用什么语言_llvm 游戏引擎支持更多语言

Swift 是由 Chris Lattner 在 Apple 工作时创建的。现在,Chris Lattner 在 Google Brain 工作,这是当今世界上最好的 AI 团队之一。Swift语言的创造者们现在都在深度学习实验室工作llvm 游戏引擎支持更多语言,这足以说明这个项目是认真的。

前段时间,谷歌的人意识到,尽管 Python 语言很棒,但仍有一些无法克服的局限。TensorFlow 需要一种新语言。经过长时间的考虑,斯威夫特成为了候选人。我不会在这里详细介绍,但这里有一个文档描述了 Python 和其他正在考虑的语言的陷阱,并解释了为什么它最终被缩小到 Swift:

Swift for TensorFlow 不仅仅是一个软件库

Swift for TensorFlow 不仅仅是另一种语言的 TensorFlow。它本质上是 Swift 语言本身的另一个分支。也就是说,S4TF 不仅仅是一个软件库;它本身就是一门语言,内置了支持 TensorFlow 所需的所有功能。例如,S4TF 带有非常强大的自动微分系统,这是深度学习计算梯度所需的基本功能之一。与 Python 相比——自动微分不是该语言的核心组件。S4TF 中一些新开发的功能后来被集成到 Swift 语言中。

虚幻引擎用什么语言_白鹭引擎 语言_llvm 游戏引擎支持更多语言

斯威夫特很快

当我第一次得知 Swift 运行速度与 C 代码一样快时,我感到很震惊。我知道 C 针对非常高的速度进行了高度优化,但这需要对内存进行微管理(这使得 C 不是内存安全的)。另外,C语言也很难学。

现在,Swift 在数值运算方面和 C 一样快,而且没有内存安全问题,学习难度也小了很多。Swift 背后的 LLVM 非常强大,可以进行非常高效的优化,从而确保您的代码高速运行。

您可以在 Swift 中使用 Python、C 和 C++ 代码

因为用于机器学习的 Swift 仍处于非常早期的阶段,所以目前用于 Swift 的机器学习库并不多。但是你不必太担心这一点,因为 Swift 具有出色的 Python 解释能力。您可以将任何 Python 库直接导入 Swift 中使用。同样,您可以将 C 和 C++ 库导入 Swift(对于 C++,您需要确保头文件是用 C 编写的,没有 C++ 功能)。

一般来说,如果你需要在 Swift 中尚未实现的特定功能,你可以导入相应的 Python、C 或 C++ 包。非常令人印象深刻!

Swift 可以做非常底层的事情

如果您使用过 TensorFlow,那么您很可能已经通过 Python 使用过它。在 TensorFlow 库的 Python 版本下面是 C 代码。所以当你在 TensorFlow 中调用任何函数时,都会在某种程度上遇到 C 代码。这意味着如果你要检查它的源代码3D动画,你能走多远是有限度的。例如,如果您想查看卷积是如何实现的,您不会看到为它编写的 Python 代码,因为它是用 C 实现的。

白鹭引擎 语言_llvm 游戏引擎支持更多语言_虚幻引擎用什么语言

斯威夫特是不同的。Chris Lattner 称 Swift 为“LLVM(汇编语言)的语法糖果”。这意味着 Swift 本质上非常接近硬件,中间没有用 C 编写的其他代码层。这也意味着 Swift 代码非常快,如前所述。这样的功能允许开发人员在非常高的级别检查代码,以及深入到非常低的级别,而无需接触 C 语言。

斯威夫特的未来

Swift 只是谷歌深度学习创新的一部分。还有一个非常相关的组件:MLIR: 。MLIR的全称是Multi-Level Intermediate Representation,即多级中间表示。MLIR 将是 Google 的统一编译器基础架构,允许开发人员使用 Swift(或任何其他受支持的语言)编写代码,然后将其编译到任何受支持的硬件上。目前,针对不同的目标硬件有许多不同的编译器,而 MLIR 将改变这一点。这不仅可以重用代码,还可以让开发人员为编译器编写自定义的低级组件。它还允许研究人员应用机器学习来优化低级算法:

虽然 MLIR 被用作机器学习的编译器,但我们也看到它也可以在编译器内部实现机器学习技术!这一点尤其重要,因为开发数值库的工程师的增长并没有跟上机器学习模型或硬件多样化的速度。

白鹭引擎 语言_llvm 游戏引擎支持更多语言_虚幻引擎用什么语言

想象一下能够使用基于数据的深度学习来帮助优化低级内存分片算法(这正是 Halide 语言想要实现的)?有关卤化物语言的更多信息:. 这只是一个开始,更多机器学习在编译器中的创造性应用正在开发中!

总结

如果您从事深度学习,那么您可能应该开始学习 Swift。它比 Python 有很多优点。谷歌正在大力投资游戏素材下载 免费,让 Swift 成为 TensorFlow 机器学习基础设施的关键部分,而 Swift 很可能会成为一种深度学习语言。因此,尽早参与 Swift 的开发可以为您带来先发优势。

进一步探索

原文链接: