Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

最全caffe安装踩坑记录(Anaconda,nvidia-docker,Linux编译)

乱世出英雄 2019-07-20 14:45:00 阅读数:113 评论数:0 点赞数:0 收藏数:0

Anaconda,nvidia-docker,Linux三种方式安装caffe

1.Anaconda安装caffe

  1.首先安装anaconda

  2.创建虚拟环境(python2.7)  

conda create -n caffe python=2.7 anaconda

  3.安装caffe

# 然后下面二选一即可,安装caffe
conda install -c conda-forge caffe
conda install -c conda-forge/label/broken caffe 

  4.注意:

# 如果出现numpy导入错误,是因为 conda-forge中的numpy版本过低,可再输入下面命令
pip install numpy --upgrade

  5.测试

# 测试是否成功
source activate caffe
python
import caffe

2.nvidia-docker安装caffe-gpu

注意:docker仅支持cpu
nvidia-docker支持GPU

  1.安装nvidia-docker

wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb
# 测试
nvidia-docker run --rm nvidia/cuda nvidia-smi

  2.拉取caffe-gpu镜像

nvidia-docker pull bvlc/caffe:gpu

  3.启动一个容器

nvidia-docker run --rm -ti <镜像名字>
docker attach <容器id>  # 已打开的容器
# 退出容器 ctrl + d (容器不运行)或者ctrl q+p(容器后台运行)
# 进入未运行的容器
docker ps -a # 查看容器id
docker start <id>
docker attach <id>
# 容器改名
dockers rename 原id 新id

  4.更新源

apt uptate

  5.测试

#caffe安装目录默认在/opt/caffe,若想支持opencv,多gpu,请自行编译,可参看第三种方式编译安装caffe

python import caffe

 3.Linux编译caffe,并支持多GPU

  1.linux安装git

# Centos
yum install git
# Ubuntu
sudo apt-get install git
git clone https://github.com/BVLC/caffe.git

  2.编译前的Makefile.config配置

# 新建Makefile.config
mv Makefile.config.example Makefile.config

注意:

 ## Refer to http://caffe.berkeleyvision.org/installation.html
 # Contributions simplifying and improving our build system are welcome!
 
 # cuDNN acceleration switch (uncomment to build with cuDNN).
  USE_CUDNN := 
 
 # CPU-only switch (uncomment to build without GPU support).
 # CPU_ONLY := 
 
 # uncomment to disable IO dependencies and corresponding data layers
 # USE_OPENCV := 
 # USE_LEVELDB := 
 # USE_LMDB := 
 
 # uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
 #    You should not set this flag if you will be reading LMDBs with any
 #    possibility of simultaneous read and write
 # ALLOW_LMDB_NOLOCK := 
 
 # Uncomment if you're using OpenCV 3
  OPENCV_VERSION := 
 
 # To customize your choice of compiler, uncomment and set the following.
 # N.B. the default for Linux is g++ and the default for OSX is clang++
 # CUSTOM_CXX := g++
 
 # CUDA directory contains bin/ and lib/ directories that we need.
 CUDA_DIR := /usr/local/cuda
 # On Ubuntu 14.04, if cuda tools are installed via
 # "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
 # CUDA_DIR := /usr
 
 # CUDA architecture setting: going with all of them.
 # For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
 # For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
 # For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
 CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
         -gencode arch=compute_35,code=sm_35 \
         -gencode arch=compute_50,code=sm_50 \
         -gencode arch=compute_52,code=sm_52 \
         -gencode arch=compute_60,code=sm_60 \
         -gencode arch=compute_61,code=sm_61 \
         -gencode arch=compute_61,code=compute_61
 
 # BLAS choice:
 # atlas for ATLAS (default)
 # mkl for MKL
 # open for OpenBlas
 BLAS := atlas
 # Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
 # Leave commented to accept the defaults for your choice of BLAS
 # (which should work)!
 # BLAS_INCLUDE := /path/to/your/blas
 # BLAS_LIB := /path/to/your/blas
 
 # Homebrew puts openblas in a directory that is not on the standard search path
 # BLAS_INCLUDE := $(shell brew --prefix openblas)/include
 # BLAS_LIB := $(shell brew --prefix openblas)/lib
 
 # This is required only if you will compile the matlab interface.
 # MATLAB directory should contain the mex binary in /bin.
 # MATLAB_DIR := /usr/local
 # MATLAB_DIR := /Applications/MATLAB_R2012b.app
 
 # NOTE: this is required only if you will compile the python interface.
 # We need to be able to find Python.h and numpy/arrayobject.h.
 PYTHON_INCLUDE := /usr/include/python2. \
         /usr/lib/python2./dist-packages/numpy/core/include
 # Anaconda Python distribution is quite popular. Include path:
 # Verify anaconda location, sometimes it's in root.
 # ANACONDA_HOME := $(HOME)/anaconda
 # PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
         # $(ANACONDA_HOME)/include/python2. \
         # $(ANACONDA_HOME)/lib/python2./site-packages/numpy/core/include
 
 # Uncomment to use Python  (default is Python )
 # PYTHON_LIBRARIES := boost_python3 python3.5m
 # PYTHON_INCLUDE := /usr/include/python3.5m \
 #                 /usr/lib/python3./dist-packages/numpy/core/include
 
 # We need to be able to find libpythonX.X.so or .dylib.
 PYTHON_LIB := /usr/lib
 # PYTHON_LIB := $(ANACONDA_HOME)/lib
 
 # Homebrew installs numpy in a non standard path (keg only)
 # PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
 # PYTHON_LIB += $(shell brew --prefix numpy)/lib
 
 # Uncomment to support layers written in Python (will link against Python libs)
 WITH_PYTHON_LAYER := 
 
 # Whatever else you find you need goes here.
 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
 
 # If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
 # INCLUDE_DIRS += $(shell brew --prefix)/include
 # LIBRARY_DIRS += $(shell brew --prefix)/lib
 
 # NCCL acceleration switch (uncomment to build with NCCL)
 # https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
 USE_NCCL := 
 
 # Uncomment to use `pkg-config` to specify OpenCV library paths.
 # (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
 # USE_PKG_CONFIG := 
 
 # N.B. both build and distribute dirs are cleared on `make clean`
 BUILD_DIR := build
 DISTRIBUTE_DIR := distribute
 
 # Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
 # DEBUG := 
 
 # The ID of the GPU that 'make runtest' will use to run unit tests.
 TEST_GPUID := 
 
 # enable pretty build (comment to see full commands)
 Q ?= @

  1.第5行USE_CUDNN := 1(安装和cuda匹配的cudnn)

  2.第21行 OPENCV_VERSION := 3(安装opencv)

sudo apt install git
git clone https://github.com/jayrambhia/Install-OpenCV
cd Install-OpenCV/Ubuntu/
chmod +x *
./opencv_latest.sh

make -j8 && make pycaffe 

  3.第28行CUDA_DIR := /usr/local/cuda(安装cuda的目录)

  4.第49行BLAS := atlas

  5.第67,68行

PYTHON_INCLUDE := /usr/include/python2. \
/usr/lib/python2./dist-packages/numpy/core/include

  6.第93,94行

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

  7.第102行USE_NCCL := 1(支持多gpu)

git clone https://github.com/NVIDIA/nccl.git
cd nccl
sudo make install
sudo gedit ~/.bashrc
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/XXX/nccl/build/lib/"  #XXX为用户名
source .bashrc

使用多个gpu 
我们在使用caffe的工具训练网络时,在语句的最后加上以下内容即可

-gpu all  #运行所有的gpu
-gpu ,  #运行1号2号gpu

  3.开始编译

sudo make all
sudo make test
sudo make pycaffe
sudo make runtest

  4.测试

python
import caffe

 

  

  

  

      

版权声明
本文为[乱世出英雄]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/houyong/p/11217688.html