AI 前线导读: Python 因为其易用性在数据分析和机器学习领域广受欢迎, 但性能问题一直是它的短板. 从谷歌推出 Swift for TensorFlow 开始, 事情似乎发生了一些变化. Swift 会成为比 Python 更适合数据分析和机器学习领域的编程语言吗?
在密歇根大学第一年物理课程的一周后, 一位教授布置了一些需要模拟多体系统的问题. 这些问题必须在星期五完成. 那是我学习第一门编程语言 Matlab 的那一周.
这就是我为何在过去十年中零星学习了十几种语言的原因. 除了入门级 CS 课程中学习的 C++ 和研究生阶段学习的基于 Java 的数据库课程外, 我从未接触过软件工程方面的任何正式学习. 对我而言, 编码是完成作业, 分析数据来回答问题, 或者用来实现我的想法. 有时这意味着要熟悉算法或数据结构的细节, 但我从来没有发现自己为了编码而编码. 我对泛型没有意见 (不要 @我). 我认为这描述了我所知道的绝大多数数据科学家和机器学习工程师. 针对要解决的问题在选择工具时, 我们通常会优先考虑可用性和效率, 而不是软件基础.
快进到 2018 年, Python 已经得到了机器学习和数据科学社区的认可. Python 的语法很容易入门, 它是一门优秀的脚本语言, 当你想要优化性能时, 可以直接与底层 C 语言库打交道. 然而, 对我来说, Python 最吸引人的部分是它能用于建立端到端的整个系统. 用于科学计算的包如 Numpy,Pandas,Matplotlib 和 Jupyter notebooks 拥有巨大的社区支持. 并且, 当需要围绕你的工作构建应用程序时, Flask 和 Django 等框架的性能足以扩展至数以亿计的用户. 我可以使用一种编程语言来构建整个系统.
过去 10 年我很喜欢使用 Python. 但我认为未来不会再使用它了, 接下来我会使用 Swift.
在 2018 年的 TensorFlow 开发峰会上, 来自 Google 的 Chris Lattner 宣布 TensorFlow 即将支持 Swift. 不要认为 TensorFlow for Swift 仅仅是对 TensorFlow 进行了简单的包装以方便 iOS 设备使用. 这远不止于此. 该项目试图改变整个机器学习和数据科学生态系统所使用的默认工具.
在我熟悉 Python 技术栈时, 背后隐藏的另外两种技术趋势在慢慢渗透: 人工智能通过神经网络和深度学习的复兴以及人工智能的应用场景转向数十亿智能手机和物联网设备. 这两种技术都需要高性能计算, Python 看起来不太合适.
深度学习需要向长链网络传递海量的数据, 这导致深度学习的计算量非常大. 为了快速执行这些计算, 软件必须针对具有数千个线程和核心的专用处理器进行编译. 这些问题在非常关注功耗和热量的移动设备上更加明显. 要在更慢的处理器, 更少的内存上进行优化是极具挑战的. 到目前为止, Python 未能提供太多帮助.
这对于数据科学家和机器学习研究人员来说是个很大的问题. 我们最终采用黑客工作方式使用 GPU 进行计算, 而我们许多人都在为移动应用程序开发而苦恼. 学习一种新语言并不是不可能的, 但转换成本很高. 看看 Node.js 和 React-Native 这样的跨平台项目就能知道转换成本有多大. 我曾经计划永远坚持我的 numpy 数组, 但是现在, 不放弃 Python 已经无法完成任务. 它不再是一个足够好的解决方案.
在由机器学习和边缘计算主导的世界中, Python 无法成为端到端语言是 Swift for TensorFlow 背后的动力. Chris Lattner 认为 Python 的动态类型和解释器阻碍了我们更进一步. 用他的话说, 工程师需要一种把机器学习当作 "一等公民" 的语言. 虽然他深刻地阐述了技术上的原因, 为什么需要采用新的编译器分析方法来改变使用 TensorFlow 的程序的构建和执行方式, 他的论点最引人注目的是编程人员的经验.
能够更容易做机器学习的编程语言应该包括的特性有:
可读, 高效的语法
脚本能力
Notebook-like 的接口
活跃社区构建的第三方库
能自动编译针对从 TPU 到移动芯片特定硬件的代码
能在移动设备上运行
接近 C 的性能
Lattner 和他的团队正在用 Swift for TensorFlow 添加所有这些特性. Swift 语法几乎和 Python 一样高效, 拥有一个用于脚本的解释器. 最重要的是, 为了方便移植, 可以运行任何 Python 代码, 并且因为 Swift 现在是 iOS 应用程序开发的默认开发语言, 所以部署到移动设备很容易. Swift 的开源编译器和静态类型使得针对特定 AI 芯片组进行构建成为可能. 作为 Swift 的创始人之一, Lattner 可能会有偏见, 但我深信他对机器学习的理解.
你可以在这里看到 Chris Lattner 的整个演讲.
来源: https://juejin.im/post/5aec3190f265da0b93482dd7