前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0

caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0

作者头像
悟乙己
发布2018-01-02 16:09:47
1.1K0
发布2018-01-02 16:09:47
举报
文章被收录于专栏:素质云笔记

国服亚马逊的GPU实例G2.2xlarge的python+caffe的安装过程,被虐… 一周才装出来…

BVLC/caffe的在AWS安装的官方教程github: https://github.com/BVLC/caffe/wiki/Install-Caffe-on-EC2-from-scratch-(Ubuntu,-CUDA-7,-cuDNN-3)

如果要在AWS试的话,推荐不要用其他教程了,太坑爹了,被国内的很多教程虐死。 当然,AWS也是遍地是坑,教程开篇也直接告诉你,一定要多给自己AWS的实例开EBS的存储量,因为原始实例只有8G,完全不够啊。还有60G的临时实例附送,那么这个60G临时实例,再次启动就会被重新刷新,等于没啥用,所以caffe系统安装一定要EBS扩展,你看AWS收费还是高明——设坑收费法? 报错:

代码语言:javascript
复制
报错一:
dpkg: error: failed to write available database record about 'krb5-locales' to '/var/lib/dpkg/available': No space left on device
sh: echo: I/O error
E: Sub-process /usr/bin/dpkg returned an error code (2)
E: Problem executing scripts DPkg::Post-Invoke 'if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; if [ -e /var/lib/update-notifier/updates-available ]; then echo > /var/lib/update-notifier/updates-available; fi '
E: Sub-process returned an error code

报错二:
dpkg: error processing package initramfs-tools (--configure):

cp: error writing ‘/tmp/mkinitramfs_WnwvEK//lib/modules/3.13.0-48-generic/kernel/crypto/ghash-generic.ko’: No space left on device

.

一、安装NVIDIA Drivers

1、Drivers的安装包下载

AWS中原本就有一套NVIDIA drivers,之前的有点老了,好像是340.46的,那么现在就需要根据实例的GPU配置,重新设置一个drivers,来到NVIDIA Driver的安装网页,这时候你得挑一下到底是什么driver,那么AWS的G2实例中的配置到底是啥呢?来看看AWS的官方怎么解释G2配置,网址

这里写图片描述
这里写图片描述

笔者选择了一个375.26的:Linux x64 (AMD64/EM64T) Display Driver BETA 同时笔者也下载了CUDA 8.0的安装文件:sudo sh cuda_8.0.61_375.26_linux.run .

2、Drivers的安装

接下来就是安装了:

代码语言:javascript
复制
chmod +x cuda_8.0.61_375.26_linux.run
mkdir nvidia_installers
./cuda_8.0.61_375.26_linux.run -extract=`pwd`/nvidia_installers

这里的’pwd’要指定到nvidia_installers创建的目录。 更新linux的NVIDIA’s drivers:

代码语言:javascript
复制
sudo apt-get install linux-image-extra-virtual

执行后有可能跳出来:What would you like to do about menu.lst? 选择:keep the local version currently installed 需要禁用一些有冲突的内核:

代码语言:javascript
复制
sudo vi /etc/modprobe.d/blacklist-nouveau.conf

加上以下内容:

代码语言:javascript
复制
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

回到shell命令行执行:

代码语言:javascript
复制
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
sudo reboot

重启之后,需要安装一下这些内容:

代码语言:javascript
复制
sudo apt-get install linux-source
sudo apt-get install linux-headers-`uname -r`

正式到了可以安装的时候了:

代码语言:javascript
复制
cd nvidia_installers
sudo ./NVIDIA-Linux-x86_64-375.26.run

其中会跳到另外的界面: 出现“nvidia-installer was forced to guess the X library path ‘/usr/lib’ and X module path ”点ok, 出现“The CC version check failed”,点击不理他; 出现问你更新 X configuration file,默认选No,

安装之后,可以通过

代码语言:javascript
复制
nvidia-smi

来看看是否正确,安装,如何正确安装就会出现Nvidia的一些信息。

  • 出现报错一:
这里写图片描述
这里写图片描述

按照教程,你可以更新这个版本,也可以删除这个重新装。 要说删除之前的Nvidia的话,AWS也有官方教程: http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/accelerated-computing-instances.html

代码语言:javascript
复制
sudo yum erase nvidia cuda
  • 出现报错二:
这里写图片描述
这里写图片描述

按提示安装:

代码语言:javascript
复制
apt-get install linux-3.13.0-108-generic

.

二、安装CUDA8.0

一般来说,各类教程中不要越级安装,CAFFE教程里面的版本是7.0,而且CUDA7.5比较稳定,一般会选择低一点。不过… 笔者当时并不知道这些,于是直接安装了CUDA8.0,最后也是可以用的。说明,可以兼容。

代码语言:javascript
复制
sudo modprobe nvidia
sudo apt-get install build-essential
sudo ./cuda-linux64-rel-8.0.61-19326674.run
sudo ./cuda-samples-linux-8.0.61-19326674.run

出现“Would you like to add desktop menu shortcuts?”随便你; 出现“Would you like to create a symbolic link? ”选择yes

安装好之后,一定要指定path。 打开“~/.bashrc”,输入:

代码语言:javascript
复制
export PATH=$PATH:/home/usr/local/cuda-8.0/bin
export LD_LIBRARY_PATH=/home/usr/local/cuda-8.0/lib64

source ~/.bashrc
sudo ldconfig

同时需要主要path的路径一定要对应,笔者照着教程抄,没想到一直没有输入正确,然后一直报错“lib”的错误。 输入完需要键入,让环境应用起来:

代码语言:javascript
复制
source ~/.bashrc

最后:

这里写图片描述
这里写图片描述

还有:

这里写图片描述
这里写图片描述

. .

三、cuDNN8.0的安装

cuDNN这里笔者吃了很多亏… 因为cuDNN和CUDA一定要配套,不然不适配,笔者当时在CUDA8.0的情况,用了cuDNN出现了一堆报错,最后只能改过来。 下载链接:https://developer.nvidia.com/rdp/cudnn-download 一定选择跟CUDA8.0配套的选项。同时,如果是GTX1080,GTX1070最好是v5以上的版本。 其中,该网站需要注册,你注册一下很快就可以用。一个包只有75MB

代码语言:javascript
复制
tar -zxf cudnn-8.0-linux-x64-v5.0-prod.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/

至此基本按照完毕了。于是乎,你可以nvidia-smi检查一下,是否ok. . .

四、caffe的安装

.

1、caffe安装

相关的lib库安装:

代码语言:javascript
复制
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy

需要下载pillow,

代码语言:javascript
复制
sudo easy_install pillow
  • 如果报错一:TypeError: ‘NoneType’ object is not callable

那么先执行:

代码语言:javascript
复制
sudo apt-get install pypy-dev
  • 如果报错二:
代码语言:javascript
复制
ImportError: No module named packaging.version
解决:
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

参考教程

然后就是从github把caffe挪下来:

代码语言:javascript
复制
cd caffe
git clone https://github.com/BVLC/caffe.git

接下里的步骤比较耗时,需要30min左右。

代码语言:javascript
复制
cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install

.

2、配置Makefile文件

制作一个Makefile:

代码语言:javascript
复制
cp Makefile.config.example Makefile.config
vi Makefile.config

需要修改里面的: USE_CUDNN := 1,去掉#,让其激活 CUDA_DIR 的路径一定要对。 .

3、make过程

代码语言:javascript
复制
make pycaffe -jX
make all -jX
make test -jX

x是你想调用的CPU核心数量,但是笔者之前的疑问。 .

4、pycaffe的使用

进入cd caffe/python 试试能不能import caffe当然这一步报错就更多了。

  • 报错一:No module named caffe
代码语言:javascript
复制
export PYTHONPATH=/home/username/caffe/python
  • 报错二:Failed to initialize libdc1394
代码语言:javascript
复制
sudo ln /dev/null /dev/raw1394
  • 报错三:
代码语言:javascript
复制
Gdk-CRITICAL **: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
Traceback (most recent call last):
.
.
.
TypeError: constructor returned NULL

这个错误的原因在于ssh连接服务器时候,import pyplot因为没有图形界面所导致的故障.两个办法:

代码语言:javascript
复制
办法一:直接在ssh连接服务器的时候,添加-X的标记
ssh 192.168.0.1 -X

以上参考博客:http://nfeng.cc/2016/03/28/caffe-python-gtk-error/ 当然AWS因为需要密钥,这一步骤,比较繁琐。

代码语言:javascript
复制
办法二:使用matplotlib
进入Python后:
import matplotlib
matplotlib("Pdf")
    #matplotlib("Agg")都可以
  • 报错四:还是报错三的问题
代码语言:javascript
复制
Gdk-CRITICAL **: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
Traceback (most recent call last):
.
.
.
TypeError: constructor returned NULL

还是报错三,前面的办法解决不了,那么可以先删除一下matplotlib:

代码语言:javascript
复制
sudo pip uninstall matplotlib
sudo apt-get install python-matplotlib

如果还是报错,那么重启一下AWS的shell 以上解决办法来源于github

  • 报错五:
代码语言:javascript
复制
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

这个问题在tensorflow中出现极多。那么解决方案更多了: 如果之前的make all出现该报错: (1)ImportError问题,一般是之前的lib库没有安装好; (2)TF_BINARY_URL修改,可见lfzCarlosC这个是因为CUDA7.5和CUDA8.0的binary有很大的不同,那么nvidia、cudnn不适配出现的,github里面没有CUDA8.0,不过可以在以下网址找到: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md

代码语言:javascript
复制
TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0-cp27-none-linux_x86_64.whl

如果make all可以启动: 在import caffe时候单独出现,那么就是你的LD_LIBRARY_PATH没设置好。需要在~/.bashrc修改,然后source:

代码语言:javascript
复制
LD_LIBRARY_PATH=/home/usr/local/cuda-8.0/lib64
source ~/.bashrc
sudo ldconfig
  • 报错六:
代码语言:javascript
复制
make: *** [.build_release/src/caffe/common.o] Error 1
make: *** [.build_release/src/caffe/layer_factory.o] Error 1
make: *** [.build_release/src/caffe/solver.o] Error 1
make: *** [.build_release/src/caffe/internal_thread.o] Error 1

没有正确配置cudnn和CUDA的型号,特别是cudnn的型号进行调整、配置

最后:

这里写图片描述
这里写图片描述

.

延伸一:linux很多命令不可用,崩溃

因为安装过程中,需要添加环境变量,譬如/etc/profile中,添加:

代码语言:javascript
复制
PATH=/usr/local/cuda/bin:$PATH
export PATH
source /etc/profile

真是惨,以上是国产教程让我修改的,那么崩溃了。于是不得不改回来,参考教程: http://xjsunjie.blog.51cto.com/999372/1384468

代码语言:javascript
复制
第一步:
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

第二步:
需要把这句保存到/etc/profile里才能永久生效

第三步:
source  /etc/profile

.

延伸二:实时查看NVIDIA

nvidia-smi watch -n 0.1 nvidia-smi(watch实时查看数据)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装NVIDIA Drivers
    • 1、Drivers的安装包下载
      • 2、Drivers的安装
      • 二、安装CUDA8.0
      • 三、cuDNN8.0的安装
      • 四、caffe的安装
        • 1、caffe安装
          • 2、配置Makefile文件
            • 3、make过程
              • 4、pycaffe的使用
                • 延伸一:linux很多命令不可用,崩溃
                • 延伸二:实时查看NVIDIA
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档