百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

FB宣布开源Caffe2可在手机与树莓派上训练和部署模型

toyiye 2024-06-21 12:24 7 浏览 0 评论

选自Caffe2.ai

机器之心编译

在今年的 F8 开发者大会上,Facebook 正式宣布开源其全新深度学习框架 Caffe2。据 Caffe2 官方博客介绍,该框架可以用在 iOS、Android 和树莓派上训练和部署模型;而且 Facebook 已经与英伟达、高通、英特尔、亚马逊和微软等公司展开了合作来实现对移动端的优化。机器之心在此对这一开源项目进行了介绍。

为了有效地训练和部署人工智能模型,我们往往会用到大型数据中心或超级计算机。为了能够大规模地连续处理、创建和提升各种各样的信息(图像、视频、文本和音频)之上的模型,我们需要的计算能力不可小觑。如果我们要在移动设备上部署这些模型,那么它们就必须要非常快而且轻量,但这也同样十分困难。要克服这些难题,我们需要一种稳健的、灵活的和便携式的深度学习框架。

Facebook 一直以来都在和开源社区的其他开发者合作一起打造这样一款框架。今天,Facebook 宣布开源了第一版生产可用的 Caffe2 版本,这是一个轻量级的、模块化的深度学习框架,并且在强调了便携性的同时保持了可扩展性和性能。

我们致力于为社区提供高性能的机器学习工具,以便人人都能创造智能的应用和服务。与 Caffe2 一同发布的还有相关的一些教程和案例,其中包括在一台机器上使用多个 GPU 的大规模学习和使用一个或多个 GPU 的在多台机器上的大规模学习、学习在 iOS、Android 和树莓派上训练和部署模型。另外,你只需要编写几行代码就能调用来自 Caffe2 Model Zoo 的预训练模型。

Caffe2 部署在 Facebook 之中以帮助研发人员训练大型机器学习模型,并为手机用户提供人工智能驱动的良好体验。现在,开发者可以访问很多相同的工具,允许他们运行大规模分布式训练方案,并创建手机端的机器学习应用。我们已与英伟达、 高通、英特尔、亚马逊和微软展开密切合作,从而在云端和手机端优化 Caffe2。这些合作将允许机器学习社区快速完成使用更复杂模型的实验过程,并部署下一代人工智能增强型应用和服务。

你可以在 caffe2.ai 上查看 Caffe2 文档和教程,并在 GitHub 查看源代码。如果你考虑使用 Caffe2,我们很乐意了解你的具体需求。请参与我们的调查。我们将向你发送有关新版本和特殊的开发者活动/网络研讨会的信息。

  • 主页:http://caffe2.ai

  • GitHub: https://github.com/caffe2/caffe2

  • 调查:https://www.surveymonkey.com/r/caffe2

以下是 Caffe2 在 GitHub 上开源项目的介绍:

Caffe2 是一个兼具表现力、速度和模块性的深度学习框架,是 Caffe 的实验性重构,能以更灵活的方式组织计算。

许可

Caffe2 的发布许可许可 :https://github.com/Yangqing/caffe2/blob/master/LICENSE

建立 Caffe2

详细的构建矩阵:

git clone --recursive https://github.com/caffe2/caffe2.git

cd caffe2

OS X

brew install automake protobuf

mkdir build && cd build

cmake ..

make

Ubuntu

可运行版本:

  • Ubuntu 14.04

  • Ubuntu 16.06

需要的依赖包

sudo apt-get update

sudo apt-get install -y --no-install-recommends \

build-essential \

cmake \

git \

libgoogle-glog-dev \

libprotobuf-dev \

protobuf-compiler \

python-dev \

python-pip

sudo pip install numpy protobuf

可选择 GPU 支持

如果你计划使用 GPU,而不只是使用 CPU,那你应该安装 NVIDIA CUDA 和 cuDNN,这是一个面向深度神经网络的 GPU 加速库。英伟达在官方博客中详细介绍了安装指南,或者可以尝试下面的快速安装指令。首先,一定要升级你的图显驱动!否则你可能遭受错误诊断的极大困难。

安装 Ubuntu 14.04

sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_8.0.61-1_amd64.deb"

sudo dpkg -i cuda-repo-ubuntu1404_8.0.61-1_amd64.deb

sudo apt-get update

sudo apt-get install cuda

安装 Ubuntu 16.04

sudo apt-get update && sudo apt-get install wget -y --no-install-recommends

wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb"

sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

sudo apt-get update

sudo apt-get install cuda

安装 cuDNN(所有都是 Ubuntu 版本)

CUDNN_URL="http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz"

wget ${CUDNN_URL}

sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local

rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

可选择的依赖项

注意,Ubuntu 14.04 使用 libgflags2。Ubuntu 16.04 使用 libgflags-dev。

# for Ubuntu 14.04

sudo apt-get install -y --no-install-recommends libgflags2

# for Ubuntu 16.04

sudo apt-get install -y --no-install-recommends libgflags-dev

# for both Ubuntu 14.04 and 16.04

sudo apt-get install -y --no-install-recommends \

libgtest-dev \

libiomp-dev \

libleveldb-dev \

liblmdb-dev \

libopencv-dev \

libopenmpi-dev \

libsnappy-dev \

openmpi-bin \

openmpi-doc \

python-pydot

检查下面的 Python 部分,并在建立 Caffe2 之前安装可选择的程序包。

mkdir build && cd build

cmake ..

make

安卓和 iOS

我们使用 CMake 的安卓和 iOS 端口构建原始二进制文件,然后就能将其集成到安卓或 XCode 项目中。查看脚本/build_android.sh 和/build_ios.sh 获得具体信息。

对于安卓系统,我们可以使用 gradle 通过 Android Studio 直接构建 Caffe2。这里是一个示例项目:https://github.com/bwasti/AICamera。注意,你可能需要配置 Android Studio,这样你编写代码的 SDK 和 NDK 版本才会正确。

树莓派

对于 Raspbian 系统,只需要在树莓派上运行脚本/build_raspbian.sh 就行了。

Tegra X1

为了在英伟达的 Tegra X1 平台上安装 Caffe2,需要使用 NVidia JetPack 安装器简单地安装最新版本的系统,然后再在 Tegra 设备上运行脚本/build_tegra_x1.sh。

Python 支持

为了进行下面的教程,Python 环境需要安装 ipython-notebooks 和 matplotlib,在 OS X 系统中可以通过以下方法安装:

brew install matplotlib --with-python3

pip install ipython notebook

你会发现下面的 Python 库同样在具体的教程和案例中是必需的,所以你可以运行下面的命令行一次性安装所有的要求库:

sudo pip install \

flask \

graphviz \

hypothesis \

jupyter \

matplotlib \

pydot python-nvd3 \

pyyaml \

requests \

scikit-image \

scipy \

setuptools \

tornado

构建环境(已知能运行)

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码