矩池雲上安裝caffe gpu教程

matpool
·
·
IPFS
·


用CUDA10.0鏡像

添加nvidia-cuda和修改apt源

curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/7fa2af80.pub | apt-key 添加 - && \
echo "deb https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64//" > /etc/apt/sources.list.d/cuda.list && \
bash /public/script/switch_apt_source.sh


安裝curand

易於安裝 cuda-curand-dev-10-0

修改conda源

bash /public/script/switch_conda_source.sh


創建python3.7虛擬環境

conda create -n py37 python=3.7
康達停用
conda 激活 py37



安裝依賴包

apt-get -y install libboost-dev libprotobuf-dev libgflags-dev libgoogle-glog-dev libhdf5-dev libopencv-dev protobuf-c-compiler protobuf-compiler libopenblas-dev libhdf5-dev libleveldb-dev liblmdb-dev libboost-system-開發 libboost-filesystem-dev libsnappy-dev libboost-thread-dev libatlas-base-dev libboost-python-dev


添加nvidia-machine-learning軟件源

curl -fsSL https://mirrors.cloud.tencent.com/nvidia-machine-learning/ubuntu1804/x86_64/7fa2af80.pub | apt-key 添加 - && \
echo "deb https://mirrors.cloud.tencent.com/nvidia-machine-learning/ubuntu1804/x86_64//" > /etc/apt/sources.list.d/cuda.list


安裝剩餘依賴包

適當的更新
易於安裝 libnccl2=2.6.4-1+cuda10.0 libnccl-dev=2.6.4-1+cuda10.0
apt-get install -y --no-install-recommends libboost-all-dev
點安裝提升
康達安裝opencv


git clone caffe 倉庫

git clone -b 1.0 --depth 1 https://github.com/BVLC/caffe.git
cd咖啡
對於 $(cat python/requirements.txt) 中的請求;做點安裝 $req;完畢
cp Makefile.config.example Makefile.config
git clone -b 1.0 --depth 1 https://gitee.com/matpools/caffe.git


尋找路徑

python -c "從 distutils.sysconfig 導入 get_python_inc; print(get_python_inc())"
python -c "將 distutils.sysconfig 導入為 sysconfig;打印(sysconfig.get_config_var('LIBDIR'))"


 (py37) root@a688d840812b:/caffe# python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"
/root/miniconda3/envs/py37/include/python3.7m
(py37) root@a688d840812b:/caffe# python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"
/root/miniconda3/envs/py37/lib

查找numpy路徑

找到 /root/miniconda3/envs/py37/lib/ -name numpy


 (py37) root@a688d840812b:/caffe# find /root/miniconda3/envs/py37/lib/ -name numpy
/root/miniconda3/envs/py37/lib/python3.7/site-packages/numpy/core/include/numpy

如果也是cuda10純鏡像可以直接複製下面的文件,然後保存。


 ##參考http://caffe.berkeleyvision.org/installation.html
# 歡迎貢獻簡化和改進我們的構建系統!

# cuDNN 加速開關(取消註釋以使用 cuDNN 構建)。
USE_CUDNN := 1

# CPU-only 開關(取消註釋以在沒有 GPU 支持的情況下構建)。
# CPU_ONLY := 1

# 取消註釋以禁用 IO 依賴項和相應的數據層
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0

# 在讀取 LMDB 文件時取消註釋以允許 MDB_NOLOCK(僅在必要時)
# 如果您將使用任何讀取 LMDB,則不應設置此標誌
# 同時讀寫的可能性
# ALLOW_LMDB_NOLOCK := 1

# 如果您使用的是 OpenCV 3,請取消註釋
OPENCV_VERSION := 3

# 要自定義您選擇的編譯器,請取消註釋並設置以下內容。
# 注意 Linux 的默認值是 g++ 而 OSX 的默認值是 clang++
# CUSTOM_CXX := g++

# CUDA 目錄包含我們需要的 bin/ 和 lib/ 目錄。
CUDA_DIR := /usr/local/cuda
# 在 Ubuntu 14.04 上,如果 cuda 工具是通過
# "sudo apt-get install nvidia-cuda-toolkit" 然後改用這個:
# CUDA_DIR := /usr

# CUDA 架構設置:與所有這些一起使用。
# 對於 CUDA < 6.0,註釋 *_50 到 *_61 行以確保兼容性。
# 對於 CUDA < 8.0,註釋 *_60 和 *_61 行以確保兼容性。
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 選擇:
# ATLAS 的圖集(默認)
# 用於 MKL 的 mkl
# 打開 OpenBlas
BLAS := 地圖集
# 自定義 (MKL/ATLAS/OpenBLAS) 包含和 lib 目錄。
# 留下評論以接受您選擇的 BLAS 的默認值
#(應該可以)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew 將 openblas 放在一個不在標準搜索路徑上的目錄中
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

# 僅當您將編譯 matlab 接口時才需要。
# MATLAB 目錄應包含 /bin 中的 mex 二進製文件。
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

# 注意:僅當您將編譯 python 接口時才需要這樣做。
# 我們需要能夠找到 Python.h 和 numpy/arrayobject.h。如果是自己弄需要改PYTHON_INCLUDE
PYTHON_INCLUDE := /root/miniconda3/envs/py37/include/python3.7m \
		/root/miniconda3/envs/py37/lib/python3.7/site-packages/numpy/core/include
# /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python 發行版非常流行。包含路徑:
# 驗證 anaconda 位置,有時它在 root 中。
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		# $(ANACONDA_HOME)/include/python2.7 \
		# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

# 取消註釋以使用 Python 3(默認為 Python 2)如果是自己弄需要改PYTHON_LIBRARIES
PYTHON_LIBRARIES := boost_python3 python3.7m
# PYTHON_INCLUDE := /usr/include/python3.5m \
# /usr/lib/python3.5/dist-packages/numpy/core/include

# 我們需要能夠找到 libpythonX.X.so 或 .dylib。如果是自己弄需要改PYTHON_LIB
PYTHON_LIB := /root/miniconda3/envs/py37/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib

# Homebrew 在非標準路徑中安裝 numpy(僅限小桶)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# 取消註釋以支持用 Python 編寫的層(將鏈接到 Python 庫)
# WITH_PYTHON_LAYER := 1

# 無論你發現你需要什麼,都在這裡。
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/hdf5/serial /usr/lib/x86_64-linux-gnu

# 如果 Homebrew 安裝在非標準位置(例如您的主目錄)並且您將其用於一般依賴項
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib

# NCCL 加速開關(取消註釋以使用 NCCL 構建)
# https://github.com/NVIDIA/nccl(最後測試版本:v1.2.3-1+cuda8.0)
USE_NCCL := 1

# 取消註釋以使用 `pkg-config` 指定 OpenCV 庫路徑。
# (通常不需要——OpenCV 庫通常安裝在上述 $LIBRARY_DIRS 之一中。)
# USE_PKG_CONFIG := 1

# NB 構建和分發目錄都在 `make clean` 上被清除
BUILD_DIR := 構建
DISTRIBUTE_DIR := 分發

# 取消註釋以進行調試。由於 https://github.com/BVLC/caffe/issues/171 而在 OSX 上不起作用
# 調試:= 1

# 'make runtest' 將用於運行單元測試的 GPU 的 ID。
TEST_GPUID := 0

# 啟用漂亮的構建(評論以查看完整的命令)
問 ?= @


開始編譯

打掃乾淨
全部製作-j6
打掃乾淨
製作pycaffe -j6

設置環境變量

導出 PYTHONPATH=/caffe/python/:$PYTHONPATH
導出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/miniconda3/envs/py37/lib

使用ipython環境測試

蟒蛇
進口咖啡
caffe.set_mode_gpu()
咖啡.__版本__


使用官方示例測試


 #!/usr/bin/env sh
# 這個腳本下載mnist數據並解壓。

DIR="$( cd "$(目錄名 "$0")" ; pwd -P )"
cd "$目錄"

echo "正在下載..."

在 train-images-idx3-ubyte 中的 fname train-labels-idx1-ubyte t10k-images-idx3-ubyte t10k-labels-idx1-ubyte
多夫 [ ! -e $fname ];然後
        wget --no-check-certificate https://storage.googleapis.com/cvdf-datasets/mnist/${fname}.gz
        gunzip ${fname}.gz
    菲
完畢
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
英偉達-smi -l 5


參考文章

https://hub.docker.com/r/floydhub/caffe/tags?page=1&ordering=last_updated

https://github.com/tensorflow/datasets/blob/master/tensorflow_datasets/url_checksums/mnist.txt

https://www.cnblogs.com/laosan007/p/11737704.html

https://blog.csdn.net/u010417185/article/details/53559107

https://github.com/BVLC/caffe/issues/720

https://github.com/BVLC/caffe/issues/263

https://github.com/BVLC/caffe/issues/6063

https://github.com/BVLC/caffe/issues/4843#issue-182962618

https://blog.csdn.net/xuezhisdc/article/details/48707101

CC BY-NC-ND 2.0 授權

喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!