(译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2
(译)综合指南:通过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的计算机的安装过程。在完成安装之前,请验证是否满足这些项目。
确认已正确安装NVIDIA图形驱动程序。
您可以参考本文了解NVIDIA图形驱动程序的安装和功能检查。
验证是否已安装CUDA工具包。
如果您尚未安装CUDA工具包,不确定它是否已安装,或者是否要安装较新版本的CUDA工具包,请参阅本文,其中提供了有关CUDA工具包安装的更多详细信息。验证是否已安装cuDNN。有关cuDNN安装的更多详细信息,
请参阅此文章从先前的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
检查完所有先决条件后,我们现在可以继续安装。
安装步骤
可以通过按顺序执行这些步骤来完成安装。
- 更新apt包索引
sudo apt-get update
- 安装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
- 安装pip依赖
sudo pip install --upgrade pip
sudo pip install setuptools future numpy protobuf
sudo apt-get install -y --no-install-recommends libgflags-dev
- 将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
- 建立Caffe 2
mkdir build && cd build
cmake ..
sudo make -j"$(nproc)" install
注意:构建源代码时,我们提供-j标志。该标志指的是在构建源代码时编译器(即GCC)可以生成的线程数。该NPROC命令本身会打印可用的CPU数量。简而言之,我们希望通过创建多个线程来加快编译时间,这些线程相当于并行执行编译的CPU数量。
- 为Caffe 2共享库创建符号链接
sudo ldconfig
- 验证Caffe2的库文件和头文件是否已经安装好
- 更新本地database
sudo updatedb
- 确保libcaffe2.so在
/usr/local/lib
locate libcaffe2.so
- 确认头文件是不是在
/usr/local/include
中
locate caffe2 | grep /usr/local/include/caffe2
- 将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
- 验证Caffe2 python模块是否可以被正确调用
$ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
- 验证Caffe2是否可以在GPU支持下运行
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'
(译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2的更多相关文章
- 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 ...
- 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 ...
- 如何在Ubuntu 16.04上安装配置Redis
如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...
- 如何在Ubuntu 16.04上安装Apache Web服务器
转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...
- 如何在Ubuntu 16.04上安装Nginx
原文链接https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 介绍 Nginx是世 ...
- Ternsorflow 学习:000-在 Ubuntu 16.04 上安装并使用 TensorFlow_v1.14 (改)
声明:本人已经对原文链接根据情况做出合理的改动. 本系列文章使用的是Tensorflow v1.14 引言 TensorFlow 是由谷歌构建的用于训练神经网络的开源机器学习软件.TensorFlow ...
- 在 Ubuntu 16.04上安装 vsFTPd
在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...
- [eShopOnContainers 学习系列] - 03 - 在远程 Ubuntu 16.04 上配置开发环境
直接把 md 粘出来了,博客园的富文本编辑器换成 markdown,没啥效果呀 ,先凑合吧.实在不行换地方 # 在远程 Ubuntu 16.04 上配置开发环境 ## 零.因 为什么要用这么麻烦的 ...
- 在 Ubuntu 16.04 上安装 Eclipse Oxygen
2017 年 6 月 28 日,Eclipse 社区(the Eclipse Community)发布了 Eclipse Oxygen.本文记录了我在 Ubuntu 16.04 上安装 Eclipse ...
随机推荐
- Video如何不自动全屏播放?
知乎:微信内置浏览器 如何小窗不全屏播放视频? 目前在微信中只能全屏播放,只有加入腾讯白名单的视频才能小屏播放. 知乎上讨论的解决方案尚未测试,太麻烦了.
- 【BZOJ2588】Spoj 10628. Count on a tree 主席树+LCA
[BZOJ2588]Spoj 10628. Count on a tree Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lasta ...
- 微信小程序 --- action-sheet底部弹框
action-sheet:从屏幕底部弹出一个菜单,选择: 使用的时候,在给不同的 action-sheet-item 添加不同的事件. 效果: (这里的确定可以有多个) 代码: <button ...
- EditPlus轻量级编辑器配置常用的语法规则!
打开EditPlus编辑器:工具 ---- 参数设置 ---- 文件 ---- 设置&语法: 先配置简单的CSS语法: 勾选下面的 “自动完成” ,加载对应的ACP文件,配置一些常用的语法: ...
- Linux下使用iotop检测磁盘io使用情况
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
- ETL__pentaho__SPOON_PDI
Pentaho Data Integration (PDI, also called Kettle),是pentaho的etl工具.虽然etl工具一般都用在数据仓库环境中,可是,PDI还是可以做以下事 ...
- 聪明的打字员---poj1184(bfs)
题目链接:http://poj.org/problem?id=1184 分析:首先可以发现有6*10^6种状态,比较多,不过搜索的时候可以去除一些无用的状态, 可以发现一个点的值(2-5)如果想要改变 ...
- Python开发【模块】:sqlalchemy
一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...
- uchome 不从缓存中读取模板
/source/function_common.php中的代码 //模板调用 function template($name) { global $_SCONFIG, $_SGLOBAL; if($_ ...
- Mybatis三剑客之mybatis-generator配置
mybatis插件在这里: 然后把generatorConfig.xml文件放在resources下: <?xml version="1.0" encoding=" ...