(译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2

译者注:

原文来自:https://tech.amikelive.com/node-706/comprehensive-guide-installing-caffe2-with-gpu-support-by-building-from-source-on-ubuntu-16-04/?tdsourcetag=s_pctim_aiomsg, 不得不说该文作者知识比较丰富,研究比较深入,环境的配置讲解比较详细。个人认为这篇博客价值比较大,可能这篇博客会对深度学习的工作者们提供一定的帮助,所以打算翻译下来,并尽量还原原文的意思。如果有侵权,请联系我。

通过基础设施设置(译者注:即深度环境),我们可以方便地开始钻研深度学习,构建,训练和验证深度神经网络模型,并将模型应用到特定问题域。将深度学习原语转换为低级字节码执行可能是一项艰巨的任务,特别是对于没有深度学习计算兴趣的从业者。幸运的是,有几个深度学习框架提供高级编程接口,以帮助执行深度学习任务。(即深度学习平台)

在这篇文章中,我们将介绍Caffe2的安装,这是一个主要的深度学习框架。Caffe2采用Caffe,这是由加州大学伯克利分校Barkeley Vision and Learning Center(BVLC)开发的深度学习框架。Caffe2的开始旨在改善Caffe,特别是为了更好地支持大规模分布式模型培训,移动部署,降低精度计算,新硬件以及移植到多个平台的灵活性。

为什么从源安装?

需要注意的是,除了从源进行安装,还有一些更简单的选项,例如通过拉动和运行Caffe2 Docker镜像。可以在此处访问Caffe2映像的Docker存储库。尽管如此,如果您观察列表,image(docker中镜像)不是最新的,它们是针对旧版本的CUDA工具包和cuDNN构建的。因此,打算使用最新的Caffe2,CUDA或cuDNN功能的人应该考虑从源代码进行安装。

Caffe2 现在是Pytorch的一部分

之前caffe2是一个独立的库来维护的。自从2018年3月底依赖,Caffe2就已经被合并到Pytorch仓库中了,(译者注:现在已经不能通过单独编译caffe2的源代码得到Caffe2了,已经无法将所有模块clone下来了)。所以Caffe2的共同构建过程已经被集成到了pytorch中去。

关于源代码合并的动机可能存在疑问。正如公告文章中所解释的那样,合并之前是Caffe2和Pytorch之间的开发基础设施共享,导致共享代码和公共库的数量不断增加。然后得出结论,将两个项目合并为一个代码库将提高工程效率并提高框架的稳健性,尤其是在模型部署领域。

如果先前安装了Caffe2怎么办?在源代码合并之前安装Caffe2时,构建过程将输出随后复制到指定目录的头文件,动态库和python库。从理论上讲,用最新版本的文件替换旧的头文件和库文件就足够了。如果它不起作用,则在继续安装之前首先从已安装的目录中删除旧文件,然后进行清理

先决条件

我们将安装支持GPU的Caffe2。本文仅介绍具有NVIDIA GPU的计算机的安装过程。在完成安装之前,请验证是否满足这些项目。

  1. 确认已正确安装NVIDIA图形驱动程序。

    您可以参考本文了解NVIDIA图形驱动程序的安装和功能检查。

  2. 验证是否已安装CUDA工具包。

    如果您尚未安装CUDA工具包,不确定它是否已安装,或者是否要安装较新版本的CUDA工具包,请参阅本文,其中提供了有关CUDA工具包安装的更多详细信息。

  3. 验证是否已安装cuDNN。有关cuDNN安装的更多详细信息,

    请参阅此文章

  4. 从先前的Caffe2安装中删除文件

    如果您之前安装了Caffe2并且想要进行升级,则可能需要清除在先前的Caffe 2安装中创建和复制的文件。

    注意:这通常可以跳过,因为构建工具将首先检查系统中安装的Caffe2的现有版本,然后再用新的版本替换它

sudo rm -vRf /usr/local/include/caffe2
sudo rm -vf /usr/local/lib/libcaffe2*

此外,我们可能需要从Python包目录中删除python API(路径可能因安装的Python版本而异)。

sudo rm -vRf /usr/local/lib/python2.7/dist-packages/caffe2

检查完所有先决条件后,我们现在可以继续安装。

安装步骤

可以通过按顺序执行这些步骤来完成安装。

  1. 更新apt包索引
sudo apt-get update
  1. 安装apt包依赖
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
  1. 安装pip依赖
sudo pip install --upgrade pip
sudo pip install setuptools future numpy protobuf
sudo apt-get install -y --no-install-recommends libgflags-dev
  1. 将Caffe 2克隆到本地目录中

注意:我们创建一个名为caffe2-pytorch的目录,并将Pytorch git repository克隆到此目录中。

mkdir caffe2-pytorch && cd caffe2-pytorch
git clone --recursive https://github.com/pytorch/pytorch.git ./
git submodule update --init
  1. 建立Caffe 2
mkdir build && cd build
cmake ..
sudo make -j"$(nproc)" install

注意:构建源代码时,我们提供-j标志。该标志指的是在构建源代码时编译器(即GCC)可以生成的线程数。该NPROC命令本身会打印可用的CPU数量。简而言之,我们希望通过创建多个线程来加快编译时间,这些线程相当于并行执行编译的CPU数量。

  1. 为Caffe 2共享库创建符号链接
sudo ldconfig
  1. 验证Caffe2的库文件和头文件是否已经安装好
  • 更新本地database
sudo updatedb
  • 确保libcaffe2.so在/usr/local/lib
locate libcaffe2.so
  • 确认头文件是不是在/usr/local/include
locate caffe2 | grep /usr/local/include/caffe2
  1. 将Caffe2添加到Python 库路径中,以便于其他应用能够通过路径找到该文件
vim ~/.profile

# set python path
if [ -z “$PYTHONPATH” ]; then
PYTHONPATH=/usr/local
else
PYTHONPATH=/usr/local:$PYTHONPATH
fi #set library path
if [ -z “$LD_LIBRARY_PATH” ]; then
LD_LIBRARY_PATH=/usr/local/lib
else
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
fi

我们还可以使用参数扩展设置库路径,如下所示:

PYTHONPATH=/usr/local${PYTHONPATH:+:${PYTHONPATH}}
LD_LIBRARY_PATH=/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

让新路径生效

source ~/.profile
  1. 验证Caffe2 python模块是否可以被正确调用
$ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
  1. 验证Caffe2是否可以在GPU支持下运行
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

(译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2的更多相关文章

  1. ubuntu 16.04上源码编译和安装cgal并编写CMakeLists.txt | compile and install cgal on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/39ab7ed9/,欢迎阅读最新内容! compile and install cgal on ubuntu 16.04 Guide ...

  2. Ubuntu 16.04上源码编译和安装pytorch教程,并编写C++ Demo CMakeLists.txt | tutorial to compile and use pytorch on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/54e7a3d8/,欢迎阅读最新内容! tutorial to compile and use pytorch on ubuntu ...

  3. 如何在Ubuntu 16.04上安装配置Redis

    如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...

  4. 如何在Ubuntu 16.04上安装Apache Web服务器

    转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...

  5. 如何在Ubuntu 16.04上安装Nginx

    原文链接https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 介绍 Nginx是世 ...

  6. Ternsorflow 学习:000-在 Ubuntu 16.04 上安装并使用 TensorFlow_v1.14 (改)

    声明:本人已经对原文链接根据情况做出合理的改动. 本系列文章使用的是Tensorflow v1.14 引言 TensorFlow 是由谷歌构建的用于训练神经网络的开源机器学习软件.TensorFlow ...

  7. 在 Ubuntu 16.04上安装 vsFTPd

    在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...

  8. [eShopOnContainers 学习系列] - 03 - 在远程 Ubuntu 16.04 上配置开发环境

    直接把 md 粘出来了,博客园的富文本编辑器换成 markdown,没啥效果呀 ,先凑合吧.实在不行换地方   # 在远程 Ubuntu 16.04 上配置开发环境 ## 零.因 为什么要用这么麻烦的 ...

  9. 在 Ubuntu 16.04 上安装 Eclipse Oxygen

    2017 年 6 月 28 日,Eclipse 社区(the Eclipse Community)发布了 Eclipse Oxygen.本文记录了我在 Ubuntu 16.04 上安装 Eclipse ...

随机推荐

  1. JZOJ.5331【NOIP2017模拟8.23】壕游戏

    Description

  2. parseInt()解析整数与parsetFloat()解析浮点数

    1.parseInt(string,radix) 解析整数 parseInt("dgei23"); // NaN parseInt("3 blind mice" ...

  3. Linux操作系统上ADSL拨号上网的方法详解

    1.安装 yum install rp-pppoe.x86_64 2.配置PPPOE客户端软件 安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时 ...

  4. shell中的多进程【并发】(转)

    http://bbs.51cto.com/thread-1104907-1-1.html

  5. 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置

    1. 无关Cookie跨域Ajax请求 客户端 以 Jquery 的 ajax 为例: $.ajax({ url : 'http://remote.domain.com/corsrequest', d ...

  6. JAVA学习基础知识总结(原创)

    (未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...

  7. JS实现拖拽效果

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  8. 导出Excel过程中遇到的问题java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

    尝试实现java导出功能时遇到如下报错: org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.No ...

  9. square-and-multiply algorithm

    https://en.wikipedia.org/wiki/Square-and-multiply_algorithm

  10. php array_merge和运算符+

    其实很多时候我都很疑惑为什么同维度的数组不能直接使用运算+直接进行相加,然后结果就是两个数组合并的在一起的新结果,这个就有点跟array_merge合并函数类似了,接下来就来看下这两种合并的方式到底有 ...