前言 本文整理了一些深度学习训练推理框架,涉及计算机视觉、语音、时序任务上的框架,共计20多种。
PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,也是目前使用范围和体验感最好的一款深度学习框架。它的底层基于Torch,但实现与运用全部是由python来完成。该框架主要用于人工智能领域的科学研究与应用开发。PyTroch最主要的功能有两个,其一是拥有GPU张量,该张量可以通过GPU加速,达到在短时间内处理大数据的要求;其二是支持动态神经网络,可逐层对神经网络进行修改,并且神经网络具备自动求导的功能。
一些学习资料与文档:
MXNet 是亚马逊维护的深度学习库,它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 提供了良好的配置。MXNet结合了高性能、clean的代码,高级API访问和低级控制,是深度学习框架中的佼佼者。
优点:
缺点:
TensorFlow是由谷歌开源并维护,可用于各类深度学习相关的任务中。TensorFlow = Tensor + Flow,Tensor就是张量,代表N维数组;Flow即流,代表基于数据流图的计算,其特性如下:
经典的深度学习框架,由贾扬清在加州大学伯克利分校读博期间主导开发,以C++/CUDA为主,需要编译安装,有python和matlab接口,支持单机多卡、多机多卡训练(目前已推出caffe2),特性如下:
微软开源的深度学习框架,CNTK具有高度优化的内置组件,可以处理来自Python,C ++或BrainScript的多维密集或稀疏数据。能够实现CNN,DNN,RNN等任务,能够优化海量的数据集加载。
主要特性:
学习资料与教程:
入门介绍:https://github.com/Microsoft/CNTK/wiki
官方入门教程:https://github.com/Microsoft/CNTK/wiki/Tutorial
官方论坛:https://github.com/Microsoft/CNTK/issues
一个小白非常友好的框架,上手简单,已被集成到Tensorflow中。Keras在高层可以调用TensorFlow、CNTK、Theano,还有更多优秀的库也在被陆续支持中。Keras的特点是能够快速搭建模型,高度模块化,搭建网络非常简洁,易于添加新模块,是高效地进行科学研究的关键。
学习资料:
百度开源框架,支持动态图和静态图,中文文档写的非常清楚,上手比较简单;
官网链接:https://www.paddlepaddle.org.cn/
飞桨针对不同硬件环境,提供了丰富的支持方案,生态较为完善:
项目地址:https://github.com/Oneflow-Inc/oneflow
一流科技开源的深度学习框架,使用类似PyTorch的API编程模型使用全局视图API将模型缩放为n维并行/分布式执行使用静态图编译器加速/部署模型。主要有以下优势:
项目地址:https://www.megengine.org.cn/
MegEngine 是旷视完全自主研发的深度学习框架,中文名为“天元”,是旷视 AI 战略的重要组成部分,负责 AI 三要素(算法,算力,数据)中的“算法”。MegEngine 的研发始于 2014 年,旷视内部全员使用。如今,旷视的所有算法均基于 MegEngine 进行训练和推理。
MegEngine 特性:
基于Java的深度学习框架,正式诞生于2013年,在2017年加入Eclipse基金会,由美国的Skymind开源并维护。
项目地址:https://github.com/eclipse/deeplearning4j
Nvidia自家的推理库,几乎是自动驾驶边缘部署领域的标配,更新也很频繁,issue反馈及时,社区维护较好;TensorRT的应用场景很多,服务端、嵌入式端、PC端;利用Pytorch、TF或者其他框架训练好的模型,转化为TensorRT的格式,然后利用TensorRT推理引擎去运行模型,从而提升模型在英伟达板子上的运行速度,速度提升的比例是比较可观的。
项目链接:https://github.com/NVIDIA/TensorRT
腾讯开源的ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。
项目链接:https://github.com/Tencent/ncnn
Tencent Youtu Lab开源的高性能、轻量级神经网络推理框架。它还具有跨平台、高性能、模型压缩和代码裁剪等诸多突出优势。TNN框架在原有Rapidnet和ncnn框架的基础上进一步加强了对移动设备的支持和性能优化。同时,它借鉴了业界主流开源框架的高性能和良好的可扩展性特点,并扩展了对X86和NV GPU的支持。在手机上,TNN已被许多应用程序使用。作为腾讯云人工智能的基本加速框架,TNN为许多业务的实施提供了加速支持。
项目链接:https://github.com/Tencent/TNN
MNN是一个高效、轻量级的深度学习框架。它支持深度学习模型的推理和训练,在设备推理和训练方面具有业界领先的性能。目前,MNN已整合在淘宝、天猫、优酷、鼎语、仙语等30多个阿里巴巴应用中,涵盖直播、短视频捕获、搜索推荐、图片搜索、互动营销、股权分销、安全风险控制等70多个使用场景。此外,MNN还用于嵌入式设备,如物联网。
项目链接:https://github.com/alibaba/MNN
这是Google在2017年I/O开发者大会上开源的将TensorFlow训练好的模型迁移到Android App的框架,地址和一些学习资源如下:TensorFlow Lite使用Android Neural Networks API,默认调用CPU,目前最新的版本已经支持GPU。
项目地址:https://tensorflow.google.cn/lite/
Core ML是2017年Apple公司在WWDC上与iOS11同时发布的移动端机器学习框架,底层使用Accelerate和Metal分别调用CPU和GPU。Core ML需要将你训练好的模型转化为Core ML model。
在一年之后,也就是2018年WWDC上,Apple发布了Core ML 2,主要改进就是通过权重量化等技术优化模型的大小,使用新的Batch Predict API提高模型的预测速度,以及容许开发人员使用MLCustomLayer定制自己的Core ML模型。
项目地址:https://developer.apple.com/documentation/coreml
Paddle-Mobile是2017年百度PaddlePaddle组织下的移动端深度学习开源框架,当时叫做mobile-deep-learning(MDL)。支持安卓和ios平台,CPU和GPU使用,提供量化工具。可以直接使用Paddle Fluid训练好的模型,也可以将Caffe模型进行转化,或者使用ONNX格式的模型。
项目地址:https://github.com/PaddlePaddle/paddle-mobile
Caffe2是facebook在2017年发布的一个跨平台、轻量级、模块化和可扩展的深度学习框架。Caffe2以原Caffe为基础,在设计时考虑到了表达、速度和模块化。不仅仅支持Windows,Linux,Macos三大桌面系统,也支持移动端iOS,Android,可以说是集训练和推理于一身。
MACE是2018年小米在开源中国开源世界高峰论坛中宣布开源的移动端框架,以OpenCL和汇编作为底层算子,提供了异构加速可以方便在不同的硬件上运行模型,同时支持各种框架的模型转换。
Mobile AI Compute Engine (MACE)是一个专为移动端异构计算平台(支持Android, iOS, Linux, Windows)优化的神经网络计算框架。主要从以下的角度做了专门的优化:
项目地址:https://github.com/XiaoMi/mace-models
NNIE 是 Neural Network Inference Engine 的简称,是海思媒体 SoC 中专门针对神经网 络特别是深度学习卷积神经网络进行加速处理的硬件单元,支持现有大部分的公开网 络,如 Alexnet、VGG16、Googlenet、Resnet18、Resnet50 等分类网络,Faster R- CNN、YOLO、SSD、RFCN 等检测网络,以及 SegNet、FCN 等场景分割网络。目前 NNIE 配套软件及工具链仅支持以 Caffe 框架,使用其他框架的网络模型需要转化 为 Caffe 框架下的模型。该框架在海思系列芯片上性能极佳,很大的缺陷就在于仅限于海思系列芯片。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !