Python对于数据科学而言已死:谷歌杀死了它!

https://m.toutiao.com/is/Jo62obk/

作者:Murray Vanwyk是Programmai公司的首席技术官

谷歌的Swift for Tensorflow对于数据科学和机器学习而言意味着什么?

Python对于数据科学而言已死,这种说法似乎有点怪怪的。毕竟,如今Python是数据科学界当仁不二的语言,人气从未如此旺过。2020年11月,它击败了长期备受青睐的Java,夺得编程语言排行榜第二名。我一直认为Python是每位数据科学家都应该知道的编程语言。数据科学领域的大部分工作是实现和执行,而Python在方面表现出众。它拥有出色的软件包支持,让您可以将不同的代码段粘合在一起,快速启动并运行代码段。外面有许多文章和论文介绍数据科学,所附的Python代码可帮助您在进行开发时迅速解决棘手的问题。这一切意味着您可以极其高效地工作,其他语言难以望其项背。别误会,我是喜欢Python,但是它也有缺点,而这些缺点促使谷歌迈出了下一步。

Python的最大问题是它不是一种高性能的语言。数据科学需要处理大量数据;由于很久以前的设计决策,Python根本无法扩展。为了解决这些问题,开发人员将其他语言(比如C和Fortran)混入到了Python代码中。这种做法非常务实,但也存在缺点。如果您曾经试图了解来自NumPy、Tensorflow或其他大多数数据科学软件包中的函数中到底发生了什么,您最终会碰上“C墙”(“C Wall”)。这是Python代码结束、C代码开始的临界点,通常也正是在这个点,您只好放弃,干脆接受不知道发生了什么情况的事实。当然,您可以在github上找到源代码,并可能设置另一个调试器以遍历该函数及其调用的任何其他函数,但这已经牺牲了Python给您带来的最大优点:生产力。

试图并行化处理任何实质性内容也会大大降低生产力,因为您有悖于GIL。GIL(或全局解释器锁)保证同一时刻只有一个线程在运行,这意味着您必须执行烦人的操作,比如对进程进行分叉(forking)。Python确实为您提供了不错的包装器来实现此目的,但是到头来分叉并不高效。

随着数据科学问题逐渐进入到移动平台和物联网平台,性能也带来了挑战。如果您想在物联网传感器上运行预测模型,可能会使用Python来开发和训练该模型,但由于传感器资源有限,因此使用另一种语言来部署模型。训练和部署使用不同语言加大了研发与生产之间的缺口,并加大了出现问题的可能性。

诸如此类的问题使得人们很难在机器学习领域求得突破,这就是为什么谷歌开发了Swift for Tensorflow。我头一次听说它时,以为它只是在iOS应用程序中运行Tensorflow模型。谷歌在Swift方面所抱的野心似乎要大得多。谷歌甚至称之为“用于深度学习和可微计算的下一代系统”。这里的关键字是“下一代”。谷歌甚至详细说明了为什么Python对Tensorflow而言不是一门优秀的语言。

与Python相比,Swift速度更快。快得足以让Tensorflow团队认为不久“Swift将成为在许多使用场合取代C++的可靠语言”。Python是Tensorflow的主要语言,不过据github声称,它仅占代码库的26%,而C++占代码库的61%。Swift还通过对pthread的低级访问来支持更好的并行化机制,或者您可以使用Swifts GCD(大中央调度)。还一直在努力添加新的并发模型以进一步改善扩展机制。最后,Swift旨在可以在iOS之类的移动设备上运行,在Raspberry PI等物联网平台上运行起来比Python更快,占用的内存更少。

谷歌已采取了几个措施来简化数据科学家向“下一代平台”转型的工作。NumPy是数据科学界的重要组成部分,也是许多软件包的基础。谷歌一直将其重新实现为TensorFlow NumPy:与传统的NumPy相比,它具有许多优点,比如GPU加速。至于其他软件包,您可以使用PythonKit来运行,就像它们是为Swift开发的一样。现在,外头所有那些附有代码的文章和论文都可以在您的Swift程序中重复使用。您猜怎么着?PythonKit的根源其实可以追溯到谷歌和Tensorflow团队。谷歌甚至确保您可以在Jupyter笔记本中使用Swift,那样您就不必改变原有的工作流程。

现在,我倒不是说谷歌一心要杀死Python,但是很明显,谷歌已发现了这门语言对于数据科学而言存在的局限性。鉴于谷歌在机器学习方面已投入了巨资,它会在其他人之前碰到这些局限性自在情理之中。问题是,您在多久之后也会碰到这些局限性?谷歌和Tensorflow正在离Python渐行渐远,最终您也会亦步亦趋。唯一的问题是何时您何时也离Python渐行渐远。

想要更深入地探究技术细节,请参阅谷歌Tensorflow团队撰写的这篇文章(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md#python-challenges)。

(0)

相关推荐

  • 十大最佳Python书籍[2021年更新]

    Python编程–计算机科学入门(第3版)随着软件热潮中就业机会的增加,对python开发人员的需求很大.可以通读概念并实践逻辑方法解决方案,从而掌握Python编程技能. Python编码书籍使您可 ...

  • Python适合数据科学吗?Python入门

    为什么Python是数据科学领域的首选语言?这是很多人都比较好奇的问题,接下来通过这篇文章为大家介绍一下. 在数据科学社区中最受欢迎的编程语言,使用最多的有三种:Python.SQL和R,其中使用率最 ...

  • 强烈推荐,B站最强学习资源汇总(数据科学,机器学习,python)

    经过这几个月的居家隔离,想必大多数同学都开始习惯通过线上的方式开展学习了,在线教育领域也因此迎来了一波爆发,竞争异常激烈,既有知名平台如MOOC.学堂在线.网易云课堂等,也有不少初创新星.但要说最受年 ...

  • Python数据科学常见模块!

    Python在数据科学和人工智能领域非常流行,而且它有很多不同的模块,可以帮助工作人员轻松的完成工作,提高效率.但很多人对Python数据科学及人工智能的模块并不了解,接下来我们通过这篇文章为大家详细 ...

  • Python和R哪个适合数据科学?

    python和R都是当下比较流行的编程语言,拥有强大的生态系统和社区,受到大家的追捧和喜欢,那么在数据科学方面,python和R有何区别?我们来看看吧. 大多数深度学习研究都使用python完成的,因 ...

  • 一些冷门但却非常好用的Python数据科学库

    Python编程学习圈 1周前 Python 是一个很棒的语言.它是世界上发展最快的编程语言之一.它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性.整个 Python 及其库的生态 ...

  • 少有人知的python数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  • Python数据科学小抄手册大全

    刚开始学一门编程语言或者一个库的时候,经常对于有些常用的语法记不起来.这时候你可能会百度谷歌,实际上我们可以身边放一张速查表(小抄),增强我们的学习效率. 今天大邓整理了python基本语法.nump ...

  • Lambda架构已死,数据湖必将是风口

    目前大数据架构已经走向了数据湖时代,无论是单纯的批处理模式,还是同时支持实时和离线数据处理的Lambda架构都已经过时.均不再适应现在大数据的业务发展需要. 一 Lambda架构 相信现在还有很多公司 ...

  • (数据科学学习手札26)随机森林分类器原理详解&Python与R实现

    转自 博客园 一.简介 作为集成学习中非常著名的方法,随机森林被誉为"代表集成学习技术水平的方法",由于其简单.容易实现.计算开销小,使得它在现实任务中得到广泛使用,因为其来源于决 ...