如题,研二狗一枚,之前一直在用Keras做毕设的简单CNN分类,现在要开始接触Transformer和扩散模型了,感觉Keras越来越难调,想换个主流框架深入学。翻了半天教程,发现PyTorch和TensorFlow都有死忠粉,一个说动态图Debug方便,另一个说TF配合TF Serving部署工业界无敌。我目前主要做图像生成方向,偶尔也要跑跑GPT之类的文本模型,实验室的服务器是A100,但师兄们好像都默认用PyTorch。想问下各位大佬,2024年了还有必要纠结这个吗?还是直接无脑上PyTorch?另外有没有推荐的适合新手的Transformer实践项目?提前谢谢了!
深度学习框架选择困难症发作:PyTorch还是TensorFlow,到底该梭哈哪个?
全部回复
共 65 条现在做图像生成和Transformer这块,PyTorch基本就是默认选项了,你师兄们用PyTorch不是没道理的。TF Serving那套部署优势确实存在,但那是工业界落地阶段的事,你研二还在跑实验、调模型结构的阶段,动态图debug的体验差距会天天折磨你。而且现在HuggingFace上的预训练模型、diffusers库、各种开源实现,清一色PyTorch优先,TF版本要么滞后要么干脆没有,这个生态惯性很难逆。Keras转过来其实很快,nn.Module那套写习惯了比Keras还灵活,就是得适应一下手动写训练循环。至于项目练手,可以拿minGPT或者nanoGPT的代码精读一遍,体量小但结构完整,跑通了再去看diffusers里unet2d的源码,基本能把扩散模型的骨架摸清楚。A100在手就别浪费了,直接上PyTorch梭哈没毛病。
都2024年了真没必要纠结,直接PyTorch梭哈就完事了。你师兄们默认PyTorch不是没道理的,现在学术界新模型基本全是PyTorch实现,扩散和Transformer的教程也大多基于它。TF Serving那套部署优势放到现在,TorchServe和ONNX也能顶上,对你做图像生成影响不大。新手项目可以看看minGPT或者Annotated Transformer,边跑边改比光看论文快得多。
都2024年了还纠结这个属实没必要,图像生成这块PyTorch的生态基本是碾压级别的,diffusers、timm这些库拿来就能用,TF那边你得自己造不少轮子。TF Serving部署确实香,但你现在离部署还远,先把模型跑通调明白再说。师兄们默认PyTorch不是没道理的,跟着大部队走省心。Transformer练手可以看看minGPT或者Annotated Transformer,代码短适合啃。
都2024年了真没必要纠结,直接PyTorch吧,你们实验室师兄默认用PyTorch这点就已经说明问题了,跟着大部队走至少遇到坑有人帮你填。TF Serving那套部署优势现在也没那么绝对了,TorchServe、ONNX Runtime加上各种推理框架,PyTorch生态在生产端早就补齐了短板。你做图像生成这块更是没得选,扩散模型的开源实现基本清一色PyTorch,想复现个SD或者DiT之类的,用TF纯属给自己上难度。Transformer和GPT方向的教程、预训练权重也几乎都是PyTorch的天下,HuggingFace那个生态绑定得太深了。动态图调试对新手确实友好太多,写复杂模型的时候print和断点能省掉大量心智负担。新手项目的话可以试试从零手撸一个迷你GPT跟着Andrej Karpathy的nanoGPT走一遍,或者拿minGPT改改做图像patch版本,理解注意力机制特别快。
现在做生成模型这块基本就是PyTorch的天下了,你师兄们默认用PyTorch不是没道理的,HuggingFace上那些扩散和GPT的预训练权重几乎都是torch版本,换TF你连加载都费劲。TF Serving确实部署强,但那是工程侧的事,跟你搞研究关系不大,真到部署时转ONNX也来得及。Transformer练手可以直接去啃minGPT或者Annotated Transformer,代码量小还能跑通,比看论文快多了。