2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

为什么说 Swift 会是深度学习的下一个大热门?

  • 2019-05-29
  • 本文字数:3339 字

    阅读完需:约 11 分钟

为什么说Swift会是深度学习的下一个大热门?

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

前 言

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


译注:Swift for TensorFlow 官网:

https://www.tensorflow.org/swift/

Swift 背后有强大的支持

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

Swift for TensorFlow 不仅仅是一个库

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


译注: S4TF 的 Git 地址:

https://git-scm.com/book/en/v1/Git-Branching-What-a-Branch-Is

有关 Swift 的自动微分的资料可参阅:

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

Swift 运行特别快

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


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


译注:Swift 在数值计算中的运算速度与 C 不相上下,可参阅 fast.ai 发布的文章《Swift 的高性能数值编程:探索与思考》

(《High Performance Numeric Programming with Swift: Explorations and Reflections》)

网址如下:

https://www.fast.ai/2019/01/10/swift-numerics/

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

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


译注:Python 互操作性,请参阅:

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

如何将 C 和 C++ 库导入 Swift,可参阅文章《如何使用 Swift 包管理器将 C 库导入 Swift 》(《How to import a C library in Swift using the Swift Package Manager》),网址如下:

https://oleb.net/blog/2017/12/importing-c-library-into-swift/


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

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

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


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


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

LLVM 的语法糖可参阅文章《fast.ai 拥抱 Swift 进行深度学习》(《fast.ai Embracing Swift for Deep Learning》),网址如下:

https://www.fast.ai/2019/03/06/fastai-swift/

下一步的方向

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


译注:中间语言(英语:Intermediate language),在计算机科学中,是指一种应用于抽象机器(abstract machine)的编程语言,它设计的目的,是用来帮助我们分析计算机进程。这个术语源自于编译器,在编译器将源代码编译为目标代码的过程中,会先将源代码转换为一个或多个的中间表述,以方便编译器进行最佳化,并产生出目的机器的机器语言。

有关 MLIR 更多信息可参阅《MLIR:一种新的中间语言和编译框架》(《MLIR: A new intermediate representation and compiler framework》),网址如下:

https://medium.com/tensorflow/mlir-a-new-intermediate-representation-and-compiler-framework-beba999ed18d

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


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


译注:有关 Halide 更多信息可观看视频《使用 Halide 进行快速图像处理》(《Fast Image Processing using Halide》),视频网址如下:

https://www.youtube.com/watch?v=3uiEyEKji0M

结 语

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



2019-05-29 08:0522660
用户头像

发布了 540 篇内容, 共 308.7 次阅读, 收获喜欢 1574 次。

关注

评论

发布
暂无评论
发现更多内容

Flutter 路由参数处理

岛上码农

flutter ios开发 Android开发 移动端开发 3月月更

Linux之fgrep命令

入门小站

Linux

在线MarkDown转HTML工具

入门小站

工具

轨物范世:华为手机的影像哲学

脑极体

编辑一天编辑多少篇文章合适?

源字节1号

SEO 网站开发

NE555 & 工作模式介绍

謓泽

3月月更

业务并发度不够,数仓的CN可以来帮忙

华为云开发者联盟

并发 执行计划 DWS CN 业务并发度

与吴恩达创办Coursera后,她一头扎进数字生物学

OneFlow

人工智能 机器学习 深度学习 吴恩达 生物医药

[Day4]-[二分查找] 查找数组元素位置

方勇(gopher)

LeetCode 数据结构与算法

Kube-OVN:大型银行技术团队推荐的金融级云原生网络方案

York

容器 云原生 金融科技 两地三中心 云原生网络

企业级项目协作工具 ,原来跨项目协作这么简单

阿里云云效

云计算 阿里云 项目管理 项目协作 项目协作工具

NVIDIA 英伟达发布H100 GPU,水冷服务器适配在路上

GPU算力

java高级用法之:JNA类型映射应该注意的问题

程序那些事

Java Netty 程序那些事 3月月更

Android 中Scheme协议的使用详解

CRMEB

《假如你身处被“科技制裁”的俄罗斯》之数据库专家访谈 | 墨天轮专访

墨天轮

数据库 oracle 开源 国产数据库 MySQL 数据库

Volcano:在离线作业混部管理平台,实现智能资源管理和作业调度

华为云开发者联盟

Kubernetes Volcano 混合部署 离线混合部署 EulerOS

一文简述:如何进行数据库选型及扩展

穿过生命散发芬芳

3月月更

模块一作业

Kevin

架构实战营

适合 Kubernetes 初学者的一些实战练习 (四)

汪子熙

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

模块一:微信业务架构图&学生管理系统架构设计

jiaoxn

「架构实战营」

Linux下搭建简易的HTTP服务器完成图片显示

DS小龙哥

3月月更

稳定、高效:TDengine 在阿诗特智慧能源管理云平台中的应用

TDengine

数据库 tdengine 物联网

java培训基础知识-抽象类和接口

@零度

Java 接口 抽象类

在线Javascript压缩工具

入门小站

工具

钉钉宜搭受邀参加第三届中国计算机教育大会,发布低代码产学合作计划

一只大光圈

低代码 数字化 钉钉宜搭 计算机教育 CECC

Kubernetes官方java客户端之一:准备

程序员欣宸

Kubernetes java client

《Mybatis 手撸专栏》第2章:创建简单的映射器代理工厂

小傅哥

源码分析 小傅哥 mybatis

被Altair圈粉了!这款Python数据可视化库真香!

博文视点Broadview

社区动态|Apache Doris 社区喜迎新晋 PPMC & Committer

ApacheDoris

大数据 OLAP MPP apache doris apache 社区

企业知识管理常见的误区及解决方案

小炮

企业知识管理

大数据培训-Spark深入理解RDD和关键角色

@零度

spark 大数据开发

为什么说Swift会是深度学习的下一个大热门?_AI&大模型_Max Pechyonkin_InfoQ精选文章