Keras之父,离职谷歌

  金磊发自凹非寺

  量子位公众号 QbitAI

  刚刚,谷歌官方宣布了一条重磅消息:

Keras 之父François Chollet,正式离职

  这篇文章由谷歌两位 VP(包括谷歌刚挖来的华人 Bill Jia)共同撰写,表达了对这位在谷歌长达 9 年零 3 个月的 AI 大佬,在工作上的认可及离职的惋惜。

  从内容上来看,谷歌先是肯定了 Keras 这个深度学习框架目前取得的成绩——

  已经成为人工智能发展的基石,用户数量超过 200 万,简化了复杂的工作流程,让尖端技术变得唾手可得。

  并且这项技术已然得到了广泛地应用,从 Waymo 的自动驾驶,到 YouTube、Netflix 和 Spotify 的推荐等。

  不过虽然 François 已离职,但他承诺将继续参与 Keras 未来的发展,还将继续支持 JAX、TensorFlow 和 PyTorch 上的工作。

  而谷歌的 Keras 团队,则将继续与 François 的开源社区保持合作。

  至于 François 最新的动向,谷歌和其本人截至目前并没有透露。

  而网友们对于 François 的离职却展开了一番激烈的讨论。

  例如从 Keras 的发展现状来看,有人认为它在谷歌已经不香了:

我曾在某处看到,未来 TensorFlow 可能不会得到积极开发,谷歌内部转向了 JAX;TensorFlow 几乎已经输给了 PyTorch。

  针对谷歌在官宣中对 Keras 给出的评价,有网友表示:

若是在 2018 年,这是事实;但现在,PyTorch 的受欢迎程度远高于 TensorFlow,其中很大一部分原因与 LLM 有关。

  而从 François 个人动向方面来看,有网友猜测他可能被 Anthropic 挖了墙角……

  Keras:为人类设计的深度学习

  Keras 最早可以追溯到 2015 年,是由 François 发布的一个开源神经网络库。

  它最初的目的是提供一个高级深度学习 API,用来简化深度学习模型的构建和实验过程。

  因为在 Keras 出现之前,深度学习开发通常需要直接使用底层库(如 Theano),用户需要编写大量复杂代码才能构建一个基础的神经网络模型。

  而 Keras 的出现可谓是改变了这一局面。

  它通过模块化和直观的 API 让深度学习的构建流程大大简化,极大地降低了进入深度学习领域的门槛。

  正如它官方给自己的定位那般:

为人类设计的深度学习。

  Keras 一开始是独立于具体计算引擎的高级库,支持 Theano、Microsoft CNTK 和 TensorFlow 作为其底层后端。

  在技术上,Keras 采用模块化的设计,用户可以通过组合不同类型的层(如全连接层、卷积层、循环层)来快速搭建复杂的模型。

  模型的训练、验证和测试过程通过统一的接口实现,开发过程可以说是非常顺畅。

  Keras 提供了 Sequential API 用于线性堆叠模型层,后来又引入了 Functional API,来支持复杂的非线性网络结构和多输入多输出模型的构建。

  这些特性让 Keras 不仅适合简单的原型设计,还能够应对实际生产中的复杂需求。

  但随着 TensorFlow 的快速发展,二者之间的关系变得越来越紧密。

  到了 2017 年,Keras 被谷歌选择成为 TensorFlow 官方的高级 API。

  在 TensorFlow 2.0 于 2019 年发布之后,Keras 完全集成到了 TensorFlow 中,成为其默认的模型构建工具。

  这标志着 Keras 从一个独立的高级库转变为 TensorFlow 的一部分。

  这样做的好处当然是有的。

  首先,Keras 可以无缝调用 TensorFlow 的底层功能,从而提供更高的性能和可扩展性。

  其次,TensorFlow 提供了诸如 GPU 加速、TPU 支持、分布式训练等高性能特性,整合后的 Keras 也能够轻松利用这些特性。

  这种转变不仅增强了 Keras 的功能,还使得它更适用于生产环境的大规模应用。

  然而,随着整合的推进,Keras 作为独立库的角色逐渐淡化,tf.keras 成为 TensorFlow 官方高级 API,也成为深度学习社区的标准选择之一。

  除此之外,作为深度学习框架演变的缩影——TensorFlow 和 PyTorch 之间的竞争,也一定程度上波及到了 Keras 的发展。

  PyTorch 是由 Facebook AI Research 在 2016 年推出。

  它的核心优势在于动态计算图(Dynamic Computational Graph),可以让代码执行得更加灵活,开发者可以像编写普通 Python 代码一样进行模型的构建和调试。

  相比之下,早期的 TensorFlow 采用静态计算图(Static Computational Graph),尽管执行效率较高,但在模型开发阶段的灵活性和调试便利性方面逊色于 PyTorch。

  这种技术差异使得 PyTorch 特别受到研究人员的青睐,尤其是在实验和快速迭代等工作中。

  为了缩小与 PyTorch 在灵活性方面的差距,TensorFlow 2.0 引入了与其类似的动态图功能,通过 Eager Execution 和 tf.function 提供了更为灵活的开发体验。

  这一演变使得 TensorFlow 在保持高性能优化的同时,也具备了 PyTorch 式的开发灵活性。

  但此举似乎并未完全弥补与 PyTorch 在用户体验上的差距。

  当然,Keras 这边也是在不断迭代优化。

  例如在去年年底,Keras 发布了 3.0 版本,被誉为改变了机器学习游戏规则

  不仅支持 TensorFlow、PyTorch、Jax 三大框架作为后端,还能在它们之间无缝切换,甚至混合使用

  François 当时在自己的社交账号中概述了这样做的四大好处,包括:

  • 始终让模型获得最佳性能
  • 解锁多个生态系统
  • 在开源社区扩大影响力
  • 使用任何来源的数据 pipeline

  不过即便如此,像 Cohere 机器学习总监 Nils Reimers 也给 Keras 敲了个警钟:

希望历史不要重演。

  Reimers 认为,Keras 最初从支持单个后端(Theano)开始,陆续添加了 Tensorflow、MXNet 和 CNTK 等多后端。

  这引发了一系列问题:

  • 某些功能只在特定后端可用
  • 各个后端的计算结果存在不一致:在一个后端上运行正常的代码,在另一个后端可能产生不同结果
  • 对于开源软件开发者来说体验糟糕:你刚完成了一个自定义的 Keras 层想要分享?你是否愿意为其他后端重新实现和优化它呢?
  • 调试问题:代码在一个后端上表现完美,但在另一个后端的最新版本上却频繁出错…

  随着时间推移,这些问题愈发严重:某些模块只能在 Theano 上运行良好,某些只适用于 Tensorflow,还有一些模块可以在 MXNet 上进行推理,但无法训练…

我希望这一次的多后端能有更好的表现,但这无疑仍是一个挑战。

  80 后法国 AI 大牛

  提到 Keras 之父,François Chollet 这个名字在 AI 圈里可以说是家喻户晓。

  他出生于 1989 年 10 月 20 日,从履历上来看,他在 2012 年取得巴黎综合理工学院工程硕士学位之后,并没有选择继续深造,而是前往美国就职。

  François 先后分别在 FreshPlanet 和 Thunder 分别担任软件工程师机器学习架构师;最后于 2015 年加入谷歌,直至今天。

  在与国外知名访谈博主 Lex Fridman 交流过程中,François 也回顾了 Keras 诞生的故事。

  在 2014 年,那时候最受欢迎的深度学习库还是用 C++ 编写的Caffe(贾扬清出品),当时 Caffe 要比 Theano 更受欢迎。

  而到了年底,François 突然对循环神经网络产生了浓厚的兴趣。

  当时,这还是一个相对小众的领域,于是他便开始寻找适合的工具进行探索。

  在参与 Kaggle 比赛期间,François 尝试了诸如 Torch7 和 Theano 等工具,也使用过 Caffe,但当时 Caffe 并没有提供理想的循环神经网络解决方案,例如缺少可重复使用的开源 LSTM 实现。

  于是乎,François 便有了一个想法,自己动手构建一个框架。

  他最初的想法是主要集中在 LSTM 和 RNN 的实现上,且使用 Python 来编写。

  期间一个非常重要的决定是——模型将通过 Python 代码来定义。

  这可以说是与当时的主流想法是背道而驰,因为像 Caffe、Theano 这样的库通常使用 YAML 等静态配置文件来定义模型。

  但其实有些库是用代码定义模型的,例如 Torch7(但不是 Python)。

  而在 François 此前的工作实践中,scikit-learn 这个开源深度学习库深得他的心意,因此他从中获取了大量的灵感。

  用他的话来说就是,Keras 几乎就是为神经网络打造的 scikit-learn。

  有意思的是,Keras 这个名字,还是 François 他在发布当天临时定下来的。

  并且 François 还坦言:

几个月后我加入谷歌,其实跟 Keras 没有任何关系。

  我当时加入了一个研究团队,专注于图像分类和计算机视觉领域,因此最初在谷歌的工作主要是进行计算机视觉研究。

  刚加入谷歌时,我接触到了 TensorFlow 的早期内部版本,它吸引我的原因在于它是 Theano 的改进版。那一刻,我就意识到必须把 Keras 移植到这个全新的 TensorFlow 上。

  而后,也就是有了 Keras 与 TensorFlow 集成的故事。

  至于除了这次离职的动作之外,François 上一次步入大众的视频,还是一次访谈。

  在这次访谈中,他表示打算用 100 万美元搞 AGI 竞赛

  至于原因,是因为他觉得现有的 AI 技术,尤其是 LLM,主要依赖于记忆和模仿人类数据中的模式,在新情境下的新推理和技能获取方面表现不佳。

  其实早在 2019 年,François 就提出了 ARC-AGI ——唯一衡量 AGI 能否有效获取新技能并解决开放式问题的评估标准。

  目前,最好的 AI 系统在 ARC 基准测试中的得分为 34%,而人类包括儿童在内均能轻松得分 85%。

  因此 ARC Prize 鼓励开源合作,以提高新想法的产生率,增加发现 AGI 的机会,并确保这些新想法得到广泛传播。

  至于 François 下一步的动向,量子位也将继续保持关注。

  参考链接:

  [1]https://developers.googleblog.com/en/farewell-and-thank-you-for-the-continued-partnership-francois-chollet/

  [2]https://news.ycombinator.com/item?id=42130881

  [3]https://time.com/7012823/francois-chollet/

  [4]https://en.wikipedia.org/wiki/Fran%C3%A7ois_Chollet

  [5]https://www.linkedin.com/in/fchollet/

  [6]https://keras.io/keras_3/