一、深度学习框架:
1、TensorFlow(Google):
第二代机器学习系统,比第一代的DistBelief快了2倍。被广泛应用于学术研究和工业应用。
编程语言:Python,C++
许可协议:Apache 2.0 open source license
特点:已在GitHub上开源。详细官方研究模型、示例和教程。
2、Caffe(伯克利):
由表达式,速度和模块化组成。
编程语言:C/C++、Python;
授权协议:BSD
特点:Caffe 完全开源,并且在有多个活跃社区沟通解答问题,同时提供了一个用于训练、测试等完整工具包,可以帮助使用者快速上手。
3、PaddlePaddle(百度飞桨):
特点:是国内最早开源、也是当前唯一一个功能完备的深度学习平台。
4、Theano(蒙特利尔大学):
编程语言:Python
2017年11月开始不再积极维护。原因在于Theano多年来推出的大部分创新技术现在已被其他框架所采用和完善。较其他框架更偏向底层,调试困难且编译时间长。多用于自然语言领域,计算机视觉领域模型空白。
5、Torch(NYU/Facebook):
编程语言:Lua
特点:它提供了广泛的深度学习算法,并已被Facebook、IBM、Yandex和其他公司用于解决数据流的硬件问题。
6、PyTorch(Facebook):
编程语言:Lua、Python
特点:PyTorch采用已经为许多研究人员、开发人员和数据科学家所熟悉的原始Python命令式编程风格。同时它还支持动态计算图,这一特性使得其对时间序列以及自然语言处理数据相关工作的研究人员和工程师很有吸引力。
7、MXNet(李沐):亚马逊的官方框架
编程语言:C++、Python
特点:有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript等。
缺点:社区小。
8、CNTK(Microsoft Cognitive Toolkit):微软的深度学习框架(2016-2023/09/18 CNTK v2.7)
Microsoft Cognitive Toolkit (CNTK) 是一个开源工具包,用于商业级分布式深度学习。 它通过定向图将神经网络描述为一系列计算步骤。 CNTK 允许用户轻松实现和组合常用的模型类型,例如源转发 DNN、卷积神经网络 (CNN) 和循环神经网络 (RNN/LSTM) 。 CNTK 实现随机梯度下降 (SDK、错误反向传播) 学习,并跨多个 GPU 和服务器自动区分和并行化。
专注于性能和可扩展性,支持分布式训练和推理,并且可在多个操作系统和编程语言中使用。
官网:https://learn.microsoft.com/zh-cn/cognitive-toolkit/
9、DeepSpeed:微软开发的另一个深度学习优化库(2020.2-目前仍在持续更新中)
旨在提高大规模分布式训练的效率。deepspeed支持多种深度学习框架,如pytorch和tensorflow,并提供了一系列优化技术,如pipeline并行、稀疏参数更新和动态精度调整等,以加速训练过程。
10、ML.NET:微软开源的跨平台机器学习框架(2018公布开源计划,2019年发布-目前仍在持续更新中)
集成了.NET生态系统,允许在.NET应用程序中轻松集成机器学习模型。可以将 TensorFlow、Caffe2、Accord.NET 和 CNTK 这样的流行机器学习库添加进去。
https://learn.microsoft.com/zh-cn/dotnet/machine-learning/
11、Azure Machine Learning:Microsoft Azure云平台上的一项服务
支持端到端的机器学习工作流程;提供自动化的机器学习功能、模型管理、部署和监视。
二、深度学习运行平台(硬件(GPU)公司推出的):
1、CUDA(NVIDIA推出的运算平台):
GPU加速库:CUDNN
优化支持TensorFlow与Caffe,pytorch等。
消费级显卡:GTX720到GTX3080Ti及以上
2、ROCm(AMD公司2017年发布推出的运算平台):
GPU加速库:MIOpen
优化支持TensorFlow与Caffe,pytorch等。
支持GCN架构的消费级显卡如:Radeon VII,不支持RDNA架构卡,如5700。
GCN构架于2019年不在发布产品。最后一款GCN显卡是AMD Radeon VII,前一款为AMD Radeon RX Vega 64。新RDNA2,RDNA3构架或许于近两年年得到ROCm的支持。
补充一:N卡是深度学习的主流,兼容性好,资料多;A卡起步晚,兼容差,价钱便宜。服务器级显卡贵,适合生产。消费级显卡便宜,适合研究。
补充二:部分语言运行速度比较
Language | Time | Relative Speed | |
C gcc-4.0.1 | 0.05 seconds | | 1.00 x |
ocaml compiled 3.09.2 | 0.05 seconds | | 1.00 x |
SBCL 1.0.2 | 0.13 seconds | | 2.55 x |
Java 1.4.2 | 0.40 seconds | | 8.00 x |
Io 20070410 Vector | 1.40 seconds | | 28.09 x |
Lua 5.1 | 1.50 seconds | | 30.00 x |
ocaml bytecode 3.09.2 | 3.76 seconds | | 75.15 x |
Python 2.5.1 | 9.99 seconds | | 199.80 x |
Ghostscript 8.51 | 11.66 seconds | | 233.12 x |
Perl 5.8.6 Optimized | 12.37 seconds | | 247.34 x |
TCL 8.4 Optimized | 16.00 seconds | | 320.00 x |
Perl 5.8.6 | 21.75 seconds | | 435.00 x |
PHP 5.1.4 | 23.12 seconds | | 462.40 x |
Javascript SpiderMonkey v1.6 | 31.06 seconds | | 621.27 x |
Ruby 1.8.4 | 34.31 seconds | | 686.18 x |
Emacs Lisp | 47.25 seconds | | 945.00 x |
Applescript | 71.75 seconds | | 1435.00 x |
Io 20070410 | 85.26 seconds | | 1705.13 x |
http://www.forcal.net/sysm/lu1/luhtm/luspeed.htm
三、部署工具
1、OpenVino:Intel针对自家设备开发的部署工具
2、TensorRT:NVIDIA公司针对自家GPU开发的部署工具
3、MediaPipe:Google针对自家硬件开发的部署工具
4、NCNN:腾讯开发的针对移动平台的部署工具;
5、MNN:阿里开发的针对移动平台的部署工具;
作者:꧁执笔小白꧂