开源产业级深度学习框架 Caffe2
Posted 围程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源产业级深度学习框架 Caffe2相关的知识,希望对你有一定的参考价值。
AI 模型的训练和部署通常与大量数据中心或超级计算机相关联,原因很简单。从大规模的图像、视频、文本和语音等各种信息中持续处理、创建和改进模型的能力不是小型计算擅长的。在移动设备上部署这些模型,使其快速轻量级运转,同样是令人生畏的任务。克服这些挑战需要一个强大、灵活、便携式(portable)深度学习框架。
Facebook一直在与开源社区一起建立这样一个框架。今天,我们将第一个生产就绪(production-ready)的 Caffe2 开源,这是一个轻量级和模块化的深度学习框架,强调便携性,同时保持了可扩展性和性能。
我们致力于为社区提供高性能的机器学习工具,以便每个人都能创造智能应用和服务。Caffe2 提供了教学和示例,演示了用一台机器上的多颗 GPU 或多台机器的一颗或多颗 GPU 进行大规模学习。学习训练和部署 ios,android 和 Raspberry Pi 模型。在模型库 Caffe2 Model Zoo 里面的预训练模型,只需几行代码就能运行。
Facebook 部署 Caffe2 旨在帮助开发人员和研究人员 训练大规模机器学习模型,并在移动应用中提供 AI 驱动的用户体验。现在,开发人员可以获取许多相同的工具,能够在大规模分布式场景训练模型,并为移动设备创建机器学习应用。
我们与英伟达,高通,英特尔,亚马逊和微软密切合作,在云端和移动环境两个方面都对 Caffe2 做了优化。这些合作将使机器学习从业者能够使用更复杂的模型快速地进行实验,并部署下一代 AI 增强型的应用和服务。
Caffe2 会持续更新,欢迎提供意见和建议。
更新信息可以查看 Caffe2 文档和教程请访问 caffe2.ai,并查看 GitHub 源代码。(下文有介绍。)
Caffe2 原理(Philosophy)
Caffe2 的原理与 Caffe 相同,开发原则可以概括为以下5点:
表达(Expression):模型和优化被定义为纯文本模式(plaintext schema)而不是代码。
速度:对学界和产业界都一样,速度对于最先进的模型和大数据至关重要。
模块化:新任务和设置需要灵活性和扩展性。
开放性:科学和应用进步需要通用代码(common code),参考模型和重现性(reproducibility)。
社区:学术研究、startup prototypes 和工业应用通过在 BSD-2 项目中联合讨论和开发,共享实力。
根据 Github 页面介绍,Caffe2 这个深度学习框架,在制作时就考虑到了表达(expression)、速度和模块化这些特性。
Caffe2 是 Caffe 实验性的再造,可以提供更灵活的方法组织计算。
Caffe2 是根据 BSD 2-Clause 许可证条款发布的。
目前确定可以运行的 Build Status 如下:
Ubuntu 14.04 (GCC)
√ Default CPU build
√ Default GPU build
OS X (Clang)
√ Default CPU build
√ Default GPU build
Options (both Clang and GCC)
√ Nervana GPU
× ZMQ
√ RocksDB
√ MPI
√ OpenMP
√ No LMDB
√ No LevelDB
√ No OpenCV
BLAS
√ OpenBLAS
√ ATLAS
× MKL
其他
√ CMake 2.8 support
√ List of dependencies for Ubuntu 14.04
√ List of dependencies for Ubuntu 16.04
√ List of dependencies for OS X
Caffe2 的宣传口号 “一次编码,随时随地运行”,可见 Caffe2 想要凸显其灵活、便携性,当然,还有预训练模型。
据介绍,Caffe 开发社区十分活跃,开发人员和研究人员会分享他们的 Caffe 模型,当然,现在也会分享 Caffe2 模型。
Caffe2 模型库的页面开始说,你可以用这些模型快速构建 demo 并探索深度学习功能,而不需要耗费时间和计算资源从头开始训练模型,你可以重新创建和评估其他项目的结果,或者改进以前发布的模型,欢迎分享和讨论。
下面列出了 Caffe 模型,还提供了一组可用于 Caffe2 的模型。由于刚刚起步,Caffe2 模型现在还比较少。
目前,只有图像分类的 Squeezenet、BVLC AlexNet、BVLC CaffeNet 模型、BVLC GoogleNet 模型和 ImageNet ILSVRC13 RCNN 有 Caffe2 预训练模型,相信很快就会有更多丰富。
Caffe2 中基本计算单元之一是 Operators。每个 Operator 包含给定适当数量和类型的输入和参数来计算输出所需的逻辑。Caffe 和 Caffe2 功能的总体差异如下图所示:
(关于如何将 Caffe 模型转换为 Caffe2 模型主页上有非常详细而且友好的教程。)
图像分类
图像分割
对象和场景标记
风格
人脸
视频处理
据介绍,Caffe2 的深度学习应用主要是计算机视觉(CV)、聊天机器人(Chat Bots)、物联网(IoT)、语音识别、翻译以及医疗。
此外,没有在上图中列出的,还有广告和其他一些应用,包括面向学术界研究人员的,可以改进现有模型、创新新的模型、开发算法和更智能的神经网络。
还有工程师和开发人员,介绍中说,最终许多行业都会用到深度学习,即使你没有直接从事深度学习相关工作,你的公司也会将深度学习并入平台。
Caffe2强调易用性, 旨在为开发人员提供一种简单直观的方式,亲身体验深度学习。
在某些情况下,你可能希望使用现有的模型,跳过整个“学习”的步骤,在尝试训练你自己的模型之前,就熟悉深度学习是如何的实用和有效。
Caffe2 给出了 C++ 和 Python 的 API。
C++:http://caffe2.ai/doxygen-c/html/classes.html
Python:http://caffe2.ai/doxygen-python/html/annotated.html
Caffe2 的网站非常友好,除了 API,不仅包括了教程(Tutorial)、参考(Reference),在最开始还有介绍深度学习的部分——Learn。
Learn 这部分从深度学习知识和应用讲起,介绍了如何将 Caffe2 整合入 iOS 和 Android。不仅如此,还有分布式训练和数据库的介绍。
在教程在方面,有模型和数据库介绍,从 Caffe2 的基本讲起,包括 Workspaces、Operators & Nets,还有 Toy Regression、图像预处理、加载预训练模型、MNIST(从头开始创建一个 CNN)的讲解,教你自己创建数据库,以及 AI 摄像机 Demo 和教程,RNN 和 LSTM 网络的介绍。
,Caffe 作者贾扬清介绍说,Caffe2 是 Facebook 第一个具有产业实力的深度学习平台,可以跨平台用同样的代码集全速运行。由于模块化设计,框架可以使用相同的语言,但要分别在各个平台上优化。例如,框架可以在手机(iOS 和 Android)的 NNPack 和服务器 GPU 的 CUDNN 之间选择。因此,开发者可以专业于算法的工作,而不用研究怎样运行卷积。
人工智能已经产生了深远的影响,但大部分 AI 还是局限于大型数据中心,远离实际使用 AI 应用和服务的人。我们不可能让人随身携带超级计算机,那么,让 AI 在当前最为普及便携的设备——智能手机工作上工作就成为关键一环。
主页:http://caffe2.ai
Github: https://github.com/caffe2/caffe2
参与调查,改善 Caffe2:https://www.surveymonkey.com/r/caffe2
围 程
以上是关于开源产业级深度学习框架 Caffe2的主要内容,如果未能解决你的问题,请参考以下文章
工具 | Facebook 开源产业级深度学习框架 Caffe2,带来跨平台机器学习工具
行业热点Facebook发布开源Caffe2深度学习框架,顺应跨平台模型训练的新趋势
深度学习框架格局剧震:Caffe2 代码全部并入 PyTorch