ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

20 万星也留不住人心:TensorFlow 的「人气衰退」,本质是易用性迟到了十年

20 万星也留不住人心:TensorFlow 的「人气衰退」,本质是易用性迟到了十年 20 万星也留不住人心TensorFlow 的「人气衰退」本质是易用性迟到了十年【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflowTensorFlow 可能是开源史上最矛盾的项目它头顶接近 20 万颗 GitHub 星、拥有谷歌 Brain 团队背书、几乎以一己之力定义了深度学习框架这个词却在过去五年里眼睁睁看着后来者抢走学术界与新生代开发者的心智。社区里的讨论从TensorFlow 与 PyTorch 谁更强变成了为什么新人都在学 PyTorchCSDN 上至今仍有大量 2024 年的教程在教读者什么是图、什么是会话、什么是占位符——这些词汇本身就是 TensorFlow 人气流失的说明书。本文不打算复述框架之间的口水战而是回到仓库源码与社区情报的时间线上论证一个结论TensorFlow 的衰退不是性能输给了谁而是把让开发者舒服地写代码这件事整整迟到了十年。一、迟到十年从静态图到 eager 模式的漫长转身一切要从 TensorFlow 的设计原点说起。2015 年开源时它继承了 DistBelief 在谷歌内部积累的分布式图执行架构开发者先描述一张计算图再通过Session去运行它张量是符号化的占位只有session.run()那一刻数值才会真正流动。这套先构图、后执行的模型在集群训练场景下极其强悍却是对新手最不友好的一种编程心智打印一个张量要看它的shape调试要靠tf.Print写一个if都要绕道tf.cond。谷歌并非不知道问题所在。打开仓库里的 tensorflow/python/eager/core.py文件头注释写得清清楚楚——Experimental API for TensorFlows Eager mode of execution.而版权行是 2017。也就是说谷歌在 2017 年就已经实现了 eager 模式的实验原型但直到 2019 年 TensorFlow 2.0 才把它设为默认执行方式。这中间隔了整整两年而这两年恰恰是 PyTorch 从 0.1 版本起步、用动态图重新教育全球开发者的窗口期。更具讽刺意味的是2017 年 eager 实验代码落地的同时整个社区的教学体系还停留在 1.x 静态图上。情报快照里的 CSDN 教程时间线清晰可见2019 年 7 月的文章仍在讲解将程序分为构建和运行计算图两部分Session 的相关知识和操作方法掘金上 2021 年 10 月的部署教程还在郑重其事地使用 TensorFlow 1.15。当 TensorFlow 2.0 在 2019 年 9 月宣布默认 eager 时无数人此前几个月刚在 1.x 上写完毕业设计——API 从tf.Session()、tf.placeholder到tf.function、Keras 层的断裂式迁移让升级本身成了一场灾难。二、PyTorch 的第一印象Pythonic 不是营销词对比之下PyTorch 从 2017 年 1 月诞生的第一天起就是 eager 的。x y就是数值相加if就是普通 Python 分支打印张量直接能看到数字。这种零概念前置的设计让它的第一印象不是框架而是Python 本身。很多人把这场竞争归因于营销但仓库源码能说明问题今天 TensorFlow 官方 README 的Try your first TensorFlow program见 README.md给出的第一个示例是这样的 import tensorflow as tf tf.add(1, 2).numpy() 3 hello tf.constant(Hello, TensorFlow!) hello.numpy() bHello, TensorFlow!简洁、直觉、所见即所得——这恰恰是 PyTorch 从 2017 年就具备的体验而 TensorFlow 直到 2.x 时代才把它写进 README 的第一屏。换句话说TensorFlow 最引以为傲的易用性改进本质上是在追赶对手十年前就有的默认值。更关键的是TensorFlow 2.x 的 eager 默认值背后藏着一层复杂性为了同时满足开发者写得舒服和性能不塌方它引入了tf.function与 AutoGraph 这套 trace 编译机制。看 tensorflow/python/eager/polymorphic_function/polymorphic_function.py 中function()的签名——autographTrue、jit_compile、reduce_retracing、experimental_relax_shapes一长串参数对应的是闭包里的 Python 变量会被怎样捕获数据相关的if/for能否被 AST 重写形状变化会不会触发重复 tracing等一堆隐性规则。配套的 AutoGraph 转换器见 tensorflow/python/autograph/impl/api.py 中的converted_call与异常元数据机制试图把 Python 控制流自动翻译成图算子但看似普通、实则特殊的函数语义依然给调试埋下了大量深坑。PyTorch 的用户写 Python 就是写 PythonTensorFlow 2 的用户写 Python还要时刻意识到自己在被一层看不见的编译器监视。这种心智负担就是第一印象差距在工程层的具象化。三、易用性如何决定开发者代际更替深度学习爆发于 2018-2020 年恰好是人类历史上规模最大的一次零基础开发者涌入 AI 领域。这批人的学习路径高度依赖三条线索网课、博客教程、论文复现。而在这三条线上TensorFlow 的静态图心智都是减分项网课与博客2018-2019 年的主流 TensorFlow 教程几乎都围绕Graph、Session、placeholder展开正如情报中的 CSDN 教程所呈现的那样而 PyTorch 教程的第一课就是张量与自动求导上手成本相差一个数量级。论文复现从 2019 年起顶会论文的官方代码与社区复现压倒性倾向 PyTorch。研究者关心的不是框架的分布式能力而是作者的代码我能不能直接跑。这一环的失守让 TensorFlow 在学术引用与开源模型生态中持续失血。Kaggle 与竞赛竞赛社区的教程、notebook、baseline 几乎全数切换到 PyTorch进一步把新人的第一选择固化为 PyTorch。易用性决定代际更替代际更替决定生态话语权。一个 2021 年入行的开发者大概率从没写过一行tf.Session他在 TensorFlow 仓库里看到的只有历史包袱在 PyTorch 仓库里看到的则是同类。当一代人的默认技能栈定型框架的 Star 数就变成了情怀数据——20 万星证明它曾经伟大却无法阻止新人用脚投票。这也是为什么星数与人气之间会出现如此刺眼的背离。四、2026 年谷歌还能挽回什么承认问题之后更值得讨论的是在 2026 年的当下TensorFlow 是否还有翻盘的抓手。仓库源码给出的答案是有但方向早已不是追回 PyTorch 的开发者心智第一把性能与部署做成护城河。训练侧的tf.function XLA/JIT 编译链路、jit_compile参数与experimental_compile选项见上文function()签名说明谷歌在图执行性能上的积累依然深厚而基于 MLIR 的编译器栈架构见 tensorflow/compiler/mlir/g3doc/images/mlir-infra.svg是 TensorFlow 2.x 时代最被低估的重构——它把 Python 前端、图优化、硬件 codegen 解耦成多层可插拔架构让 TensorFlow 在异构加速器上的部署能力依旧领先。MLIR 与 StableHLO 的推进本质上是在为模型生产化而非新手友好下注。第二押注 Keras 3 与 JAX 的合流。当框架之战从训练体验转移到生态兼容时Keras 3 的多后端策略同时承接 TensorFlow、JAX、PyTorch反而让 TensorFlow 变成了一张兼容层——开发者可以保留 PyTorch 的训练手感同时在 TensorFlow 生态中完成部署。仓库中 Keras 训练核心的Model.fit接口见 tensorflow/python/keras/engine/training.py至今保持着业界最完备的高层训练 API回调、分布式策略、数据管线一站式整合这正是 PyTorch 至今仍需拼装 Lightning 等第三方库才能补足的部分。第三巩固端侧与移动端的统治区。TensorFlow Lite现已更名 LiteRT在 tensorflow/lite/python/interpreter.py 中提供的Interpreter与Delegate抽象加上庞大的算子库与硬件委托体系使其在移动端推理、嵌入式场景几乎无对手。当大模型的推理成本问题把端侧部署推回舞台中央时这块业务可能是 TensorFlow 在未来几年最稳定的基本盘。结语星数是遗产易用性是通行证回看这场衰退最值得警惕的教训不是谷歌做错了什么而是一个以工程能力著称的团队为何会对开发者体验这个最显性的变量反应如此迟钝。静态图架构本身并没有错——它成就了分布式训练的上限但当 eager 原型在 2017 年就已存在、却要拖到 2019 年才成为默认时TensorFlow 错过的不是两年时间而是一整代开发者的学习曲线与情感连接。20 万颗星证明了它的历史地位却买不回当年那个本可以属于自己的第一印象。2026 年的 TensorFlow 依然强大只是它的舞台已经从人人都能上手的第一框架转向了生产级部署的最后一道关口。人气衰退未必是终局但那份迟到了十年的易用性已经永远改变了深度学习开源生态的座次。【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进