众所周知,AI技术很可能带来第四次科技革命。因此全世界很多组织机构都在争相研发自己的AI基础设施,本文会依次进行重点介绍。不过在开始正文前,我们还是老规矩,先向自己发出灵魂二连问。
学习AI框架的目的是什么?
明确目的后,面对多个选项,做何选择?
读者朋友们可带着上述疑问进行阅读,尝试给出自己的初步想法(也可直接跳到文末看答案☺),我在文末会给出建议供大家参考交流。接下来切入正题,为了描述方便,我把主流AI框架分为国外篇、国内篇、其他三块分别进行介绍。
一、国外主流AI框架
TensorFlow
发行公司:2015年11月由Google设计研发并开源,目前已更新至v2.4.1。
发展历程:TF1主要基于session构建静态图,运行效率高,但debug代码不友好,主流编程范式是基于Estimator进行模型搭建与训练。TF2默认开启eager模式,用户debug代码方便,官方推荐基于Keras进行模型搭建与训练,从TF v2.2开始支持第二代性能分析工具Profiler。
优点不足:优点是比较适用于工业生产环境,模型训练与部署有完备的解决方案。不足是有多种不同风格的API,对新手极不友好,同时个人感觉其分布式训练的迭代思路不太清晰(看不出来重点支持Estimator还是Keras,目前对两者的原生支持都算不上优秀)。
PyTorch
发行公司:2017年1月由Facebook人工智能研究院基于Torch推出。
发展历程:自2017年开源以来,陆续推出了Tensor与Numpy互转、与Caffe2的融合、支持Windows系统、ONNX转换、FastAI的发布、支持Tensorboard、分布式训练等功能。
优点不足:PyTorch的编程API风格简约,直观易懂。因为其基于动态计算图构建深度学习模型,当运行出错时用户可根据堆栈信息快速定位问题。不足之处是部署生态尚处成长阶段,比如TensorRT对PyTorch已训模型的支持问题较多(部分操作不支持、模型转onnx有bug)。
MXNet
发行公司:2016年5月由Amazon设计研发并开源。
发展历程:MXNet的迭代由李沐团队主导,发展至今先后支持了Keras、Gluon接口、JIT编译技术、分布式训练与梯度压缩、ONNX、MKL-DNN、profiler、支持自定义算子与TVM生成算子。
优点不足:MXNet的优点较多,它支持命令式与符号式混合编程,兼具效率与灵活性。支持多语言编程,后端由深度优化的C++引擎支撑。具有较强的多端可移植性,同时与S3、Azure集成方便。相较TensorFlow和PyTorch代码量较少,同时由于其轻量级特性和优秀的架构设计,一般作为研制深度学习框架的重要原型参考。不足是:据沐神说Amazon在MXNet上的投入并不多,因此无法做到快速迭代与大规模宣传,相应的社区活跃度稍显逊色。
CNTK
发行公司:2016年1月由微软在github上开源。
发展历程:CNTK(Microsoft Cognitive Toolkit)叫微软认知工具集,最初研发动力是提升语音算法的迭代改进速度,目前已更新至v2.7。先后支持了全平台可运行、1bit-SGD、onnx、Python API等。
优点不足:CNTK的优点是在Azure GPU上可以达到最高效的分布式计算性能。不足之处CNTK是领域强相关的AI框架,相较TensorFlow、PyTorch、MXNet的通用性不强,且使用CNTK框架的文档资料大多使用BrainScript,有一定学习成本。
二、国内主流AI框架
PaddlePaddle
发行公司:2016年8月由百度进行开源,是国内AI框架最早的探索与践行者。
发展历程:PaddlePaddle的迭代节奏很快,我们简要说下重点。v0.14提供全流程能力支持、Paddle Fluid v1.0发布、v1.1支持大规模异步分布式训练、PaddlePaddle3.0提供Suite(VisualDL、PARL、AutoDL、EasyDL、AIStudio)。
优点不足:Paddle的优点是社区比较活跃、生态链比较完整、且官网提供了大量的经典模型实现和大量双语用户手册,同时依靠百度云的加持,对国内用户应用还是很友好的。目前国内厂商还没有大面积部署Paddle(个人开发者居多),所以大家对它的学习热情还是有所保留,个人感觉他对TensorFlow的感情有一点既生瑜何生亮的情怀。当然百度也投入了肉眼可见的技术投入和宣传推广,个人对Paddle还是很看好的。
MindSpore
发行公司:2019年8月由华为推出的新一代全场景AI计算框架,于2020年3月28日开源。
发展历程:虽然诞生时间不长,但是其设计理念很先进。先后支持加强版可视化功能、差分隐私、二阶优化算法、图神经网络、量化训练、混合异构、MindSpore Serving、PS分布式训练、MindIR、调试器等。
优点不足:MindSpore采用底层编译优化手段,使得计算图的运行效率很高。支持多种平台自然不在话下,更重要的是倡导软硬协同设计,其分布式训练支持多种模式。不足之处是社区目前较小,测试时经常出现bug,好在反馈比较及时。本人认为大家可把这个看作重要学习机会,在MindSpore的成长期与其携手并进。
三、其他AI框架
OneFlow
OneFlow是北京一流科技有限公司开发的深度学习框架,于2020年7月在github开源。OneFlow围绕性能提升和异构分布式扩展,坚持静态编译与流式并行的设计理念,解决了集群中诸多挑战。国产新星当有它一席之地。
Jittor
Jittor是清华大学自研的即时编译深度学习框架,于2020年3月20日开源,中文名为计图。整体来讲,他们的工作还是相当给力的。它的核心理念:易用且可定制、实现与优化分离、即时编译。国产新星亦可算它一枚。
Angel、BytePS、TensorNet
以上三者均是基于Parameter Server架构开发的高性能分布式AI框架,分别由腾讯、字节跳动、360开源。其中前两者在业内有一定知名度,TensorNet则一般,尤其是对从事分布式训练的AI工程师来说感受尤为深刻。今天先不展开,后面会安排一个专题讲解。
ModelArts、PAI
阿里的PAI与华为的ModelArts是国内面向AI从业者的优秀产品化解决方案。他们两者均集成各AI框架于一体,并提供可视化拖拉拽建模、Notebook交互式建模、云原生训练平台、在线推理服务等功能。准确地讲,这两者已不属于AI框架的范畴,是基于AI框架但又高于AI框架,优点是对不同专业水平的用户使用比较友好。
四、我的建议
如需了解更多有关AI框架的讨论交流,请关注我的头条账号如下:
https://profile.zjurl.cn/rogue/ugc/profile/?user_id=58969482063