从相亲失败到异地恋程序员:我在深度学习框架实战对比中找回节奏

罗秀珍△
2026-04-29 10:36
阅读 1516

去年十月的一个周五晚上,我坐在出租屋的电脑前,窗外是北京五环外灰蒙蒙的夜色。桌上摆着半凉的外卖——一份宫保鸡丁盖饭,35块钱,比房租(3500/月)便宜得多。屏幕右下角弹出一条微信消息:“明天你几点到站?我去接你。”发信人是我老婆小雅。

那一刻,我愣了一下。不是因为感动,而是突然意识到:我已经连续三周没碰代码了。不是不想写,而是整个人像被抽干了力气——白天上班调参,晚上回家还要准备下周的面试题,周末又要坐高铁去天津见她。那段时间,我的GitHub提交记录几乎为零,连最爱的技术书籍都积了灰。

说实话,我和小雅能走到一起,本身就是个奇迹。在此之前,我相亲过7次,最长的一次聊了不到20分钟就各自刷手机。第8次见面那天,她问我:“你是做AI的?那你会不会用LangChain?”我当时差点笑出声——这年头连相亲对象都开始问技术栈了?但正是这个问题,让我觉得她懂我,或者说,至少愿意了解我。

现在我们异地,她留在天津工作,我则在北京一家创业公司做算法工程师。每周五晚上的高铁成了我生活的锚点。可就在上个月,我差点因为一次技术选型失误丢了项目,也差点丢了信心。


一、项目危机:TensorFlow还是PyTorch?

事情起于公司新接的一个智能客服项目。老板拍板要用“大模型+RAG”架构,要求两周内出Demo。我负责搭建检索增强生成(RAG)部分,自然想到了LangChain——这个被无数教程吹上天的框架。

但问题来了:该用哪个深度学习后端?TensorFlow还是PyTorch?

团队里老张坚持用TensorFlow。“TF Serving部署稳啊,我们线上系统都是TF生态,别折腾了。”他说这话时,手里还捏着他那本翻烂的《Hands-On Machine Learning》。

而实习生小李一脸兴奋:“PyTorch现在社区最活跃!Hugging Face全押PyTorch,LangChain官方示例也多是PyTorch。而且……面试题里90%都是PyTorch相关!”

我沉默了。因为我心里清楚,这不是纯技术问题,而是时间和资源的博弈。我们只有两个人,两周时间,服务器资源有限,还得考虑后续维护。

那天晚上,我没去赶末班地铁,而是留在公司调试到凌晨两点。结果?用TensorFlow跑LangChain的DocumentLoader时,报了一堆兼容性错误。查文档发现,LangChain对TF的支持确实不如PyTorch完善——很多loader默认依赖torch.Tensor。

更糟的是,当我试图把Hugging Face上的SentenceTransformer模型转成TF格式时,内存直接爆了。那台16G内存的开发机发出嗡嗡的哀鸣,仿佛在嘲笑我的固执。

“你是不是又熬夜了?”第二天早上,小雅打来电话,声音里带着责备,“上周你说要陪我看电影,结果在酒店改bug到半夜。”

我哑口无言。是啊,为了一个框架选择,我不仅耽误了项目进度,还冷落了刚稳定下来的感情。


二、实战对比:不只是API差异

冷静下来后,我决定做个系统性的对比。不是看网上的二手测评,而是亲手跑一遍真实场景。我列了三个维度:开发效率、部署难度、社区支持。

1. 开发效率:PyTorch胜出,但差距在缩小

我用同样的LangChain pipeline分别用TF和PyTorch实现:

  • 文档加载(PDF + Word)
  • 文本分块(RecursiveCharacterTextSplitter)
  • 向量嵌入(all-MiniLM-L6-v2)
  • FAISS向量库构建
  • RAG问答链

结果很直观:PyTorch版本半小时搞定,TF版本花了整整一天。问题主要出在数据类型转换上。LangChain内部大量使用torch.Tensor作为中间表示,强行用TF就得不断.numpy().from_tensorflow(),不仅啰嗦,还容易出错。

不过我也发现,TF 2.x的eager execution模式已经大大改善了开发体验。只是生态惯性太大,很多第三方库(包括LangChain)还是优先适配PyTorch。

2. 部署难度:TensorFlow仍占优势

但在部署环节,情况反转了。我们线上服务用的是Kubernetes + TF Serving,如果换PyTorch,得额外搭TorchServe,还要重写监控脚本。

我试了用ONNX作为中间格式统一部署,但转换过程中loss精度下降了0.8%,客户不能接受。

最后折中方案:训练和开发用PyTorch(配合LangChain),上线前转成TF SavedModel。虽然多了一步转换,但保证了线上稳定性。

3. 社区与面试题:PyTorch是主流

顺便说一句,这段时间我还在偷偷准备跳槽。翻了近半年的算法岗面试题,发现超过85%的coding题默认环境是PyTorch。有HR直接问我:“能手写一个基于PyTorch的Transformer block吗?”

就连我常看的技术书籍,比如《Deep Learning with PyTorch》和《Natural Language Processing with Transformers》,也都以PyTorch为主。反观TF,新书越来越少,老书里的Session模式早就过时了。

这让我想起和小雅第一次约会时,她问我:“你们程序员是不是特别在意‘潮流’?”我当时回答:“不是潮流,是生存。用错框架,简历都过不了筛。”


三、转折点:从技术焦虑到生活平衡

项目最终按时交付了,虽然过程狼狈。但更大的收获是,我开始重新思考“效率”的定义。

过去我认为,高效就是代码跑得快、模型精度高、面试题刷得多。但现在我发现,真正的高效,是在有限精力下做出最优分配

比如现在,我不再执着于“必须用最新框架”。如果LangChain + PyTorch能让我周五晚上准点下班赶高铁,那它就是最适合我的工具。技术没有绝对好坏,只有是否匹配当前场景。

我也调整了学习策略。不再盲目追新,而是围绕“解决实际问题”来读书。最近重读《Designing Machine Learning Systems》,重点看部署和监控章节;同时把LangChain官方文档当小说看,每天睡前读两页。

小雅笑我说:“你现在看书的样子,像极了大学图书馆里那个穿格子衫的男生。”我回她:“那会儿可没你陪着,只能和《统计学习方法》谈恋爱。”


四、给同行的建议:别让技术绑架生活

如果你也在经历类似的困境——技术选型焦虑、面试压力、异地恋疲惫——我想分享几点血泪教训:

1. 框架只是工具,别让它定义你

PyTorch和TensorFlow之争,某种程度上是社区话语权的争夺。但对我们个体开发者而言,能解决问题的就是好框架。我见过用TF做出惊艳效果的团队,也见过PyTorch项目烂尾的案例。关键不在工具,而在人。

2. 面试题≠真实能力

刷面试题很重要,但别让它成为唯一目标。我之前疯狂刷LeetCode和模型推导,结果面试时被问:“你怎么处理线上模型漂移?”当场懵了。后来明白,工程思维比算法技巧更重要。建议多读《Machine Learning Engineering》这类偏实践的书。

3. LangChain不是银弹

很多人以为用了LangChain就能轻松搭RAG,其实不然。它的抽象层隐藏了很多细节,一旦出问题调试起来更痛苦。我的建议是:先手写一遍pipeline,再用LangChain简化。这样既理解原理,又能享受便利。

4. 给生活留白

最深刻的感悟来自小雅。有次视频,她看着我黑眼圈说:“你月薪从15k涨到22k,但快乐好像没涨。”这句话扎心了。技术人的价值不该只用薪资衡量。我现在强制自己:周五下午5点后不写代码,专心等高铁;周末见面绝不谈工作。


五、未来:在代码与爱之间找平衡

写这篇文章时,是周三晚上。明天就要review新的多模态RAG方案,可能又要面临框架选择。但我不再焦虑了。

因为我明白,无论是TensorFlow还是PyTorch,无论是LangChain还是LlamaIndex,它们都只是我工具箱里的一把螺丝刀。真正驱动我前进的,是周五晚上那条“我去接你”的微信,是小雅看到我升职后笑着说“今晚火锅我请”,是那些无法被向量化的情感瞬间。

技术会过时,框架会更迭,但人与人之间的连接不会。或许这就是为什么,即便在AI狂飙的时代,我们依然需要真实的拥抱,而不是完美的embedding。

最后送大家一句话,也是我贴在显示器边上的便签:“Write code that works, love that lasts.

共勉。


附:近期在读的技术书籍清单(真实自用)

  • 《Designing Machine Learning Systems》by Chip Huyen
  • 《Natural Language Processing with Transformers》by Lewis Tunstall et al.
  • 《Machine Learning Engineering》by Andriy Burkov
  • LangChain官方文档(当作睡前读物,真的有效)

P.S. 如果你在准备面试,不妨试试把LangChain源码clone下来,重点看chains/retrieval_qavectorstores模块——比刷100道面试题都管用。

评论 0

最热最新
暂无评论
罗秀珍△Lv.1
0
影响力
0
文章
0
粉丝