最近由于一些原因,给实验室电脑重装了Ubuntu系统,安装了具有难以言表的难度的caffe,以及tensorflow、mxnet等工具,踩了许多坑,为了以后安装方便,因此将安装过程记录下来。
电脑硬件
DELL-PRECSION TOWER 7910
CPU:Intel Xeon(R) CPU E5-2630 v4 @ 2.20GHz × 20
GPU:GeForce GTX 1080 Ti × 2
Mem:128 GB
Disk:256 GB + 2TB
安装系统
下载系统镜像
Ubuntu桌面版下载地址:Download Ubuntu Desktop | Download | Ubuntu (此网址为最新版的下载地址)
我下载的是 Ubuntu 18.04 LTS:ubuntu-18.04.2-desktop-amd64.iso
注:本文需要下载的所有文件,我都已经下载好,放在了~/WD/download文件件内。
安装系统到电脑
此处网上教程很多,在此给出一种安装方法:
用Ultraiso(软通牒)制作ubuntu U盘启动盘-百度经验
USB HDD+ 便携启动 也行
U盘插入电脑,开机一直按F12进入启动项选择,选择U盘,进入Ubuntu安装界面
选择中文,选择安装
选择汉语
选择正常安装
选择其他选项,目的是自己配置分区
其实只需要配置三个分区就好
swap(交换空间) 设置成与内存大小相近 我设成了128GB(固态硬盘)
/根目录 按需求最好200G以上,这里我设成了125GB左右(固态硬盘)
/home 有多大设成多大,后续自己的数据程序基本都在里面,这里我设成了1.2TB(机械硬盘)
apt换源
由于Ubuntu默认的源下载较慢,为方便后续安装软件,首先需要换为国内稳定的源。
开机后联网
打开软件和更新
ubuntu软件-下载自-进入修改为国内的地址,比如aliyun的
关闭并更新
升级软件(可选)
sudo apt-get update
sudo apt-get upgrade(这里可以不用升级,非常慢)
pip
安装pip
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
sudo apt-get install python-pip python-dev build-essential
pip install --upgrade pip
pip换源
默认的源服务器在国外,国内访问太慢,修改为国内的服务器访问起来较快。
修改 ~/.pip/pip.conf (没有就创建一个), 如下:
mkdir ~/.pip/
gedit ~/.pip/pip.conf
输入如下内容并保存
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
pip换源之后速度真的是非常舒爽…
安装显卡驱动
下载显卡驱动
下载地址:Nvidia驱动程序下载
禁用nouveau
sudo gedit /etc/modprobe.d/blacklist.conf
在最后一行加入
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
保存,并执行如下命令
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
开始安装
Ctrl Alt F1进入命令行
登录
执行下面命令
sudo service lightdm stop
cd到显卡驱动的位置,开始安装
cd ~/WD/download
sudo ./NVIDIA-Linux-*.run
sudo sh ./NVIDIA-Linux-*.run(有时候需要这样)
安装过程中,选择默认选项即可 安装完成后执行
sudo service lightdm start
Ctrl Alt F7进入图像界面
按理说需要登录,进入桌面后执行(查看nvidia信息)
nvidia-smi
出现如下信息就说明安装成功了
安装CUDA10.0
下载CUDA
下载地址:CUDA Toolkit 10.0 Archive | NVIDIA Developer
如果需要下载历史版本,点击页面Legacy Releases按钮选择进行下载
推荐下载格式为runfile(local)版本,安装起来较为方便
CUDA版本与nvidia显卡驱动版本之间的关系为:Release Notes :: CUDA Toolkit Documentation
里面有个 Table 1. CUDA Toolkit and Compatible Driver Versions
一般情况下,只要你下载的都是最新版,那就符合版本要求
开始安装
下载好之后在安装包所在路径打开终端,执行以下命令进行安装:
sudo sh cuda_10.1.168_418.67_linux.run
条款页面太长,可按Ctrl+C退出条款页面,输入accept同意条款。
注意:安装过程中的选项,是否安装显卡驱动的时候选择NO(因为之前已经安装过了),其他都是选择默认。
如果没有出错的话,会显示:
设置
安装完成后需要设置环境变量和动态链接库
执行
sudo gedit ~/.bashrc
写入
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
执行
sudo gedit /etc/profile
写入
export PATH=/usr/local/cuda/bin:$PATH
执行
sudo gedit /etc/ld.so.conf.d/cuda.conf
写入
/usr/local/cuda/lib64
执行
sudo ldconfig
然后重新启动
reboot
检查是否安装成功
nvcc --version
正常的话会在最后一行显示CUDA 10.0的字样
测试一下看看cuda是否安装成功
cd ~/NVIDIA_CUDA-10.0_Samples/1_Utilities/deviceQuery
sudo make -j4
./deviceQuery
最后一行PASS即可
安装cudnn7.4
下载cudnn
下载地址:cuDNN Archive | NVIDIA Developer
选择需要的版本,选择cuDNN Library for Linux进行下载
这里我选择这个版本:cudnn-10.0-linux-x64-v7.4.2.24.tgz
下载这个版本是因为tensorflow需要这个版本的cudnn
拷贝安装
下载好解压后解压后进入cuda文件夹,执行:
sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
对,直接拷贝过去就可以了
如果不安装caffe,那安装openblas、安装相关依赖项、安装caffe/caffe-ssd这三步可以跳过
安装openblas(非必须)
注:这是一个科学计算库
此步是为caffe提供数学计算库,caffe允许使用的科学计算库有ATLAS、OpenBlas和atlas。
如果你希望简单快速安装,可以选择使用atlas就好,atlas安装较为容易,一行命令就能搞定,那就自动忽略这一段。
如果你喜欢折腾,可以试试安装openblas,下载安装配置过程较为复杂。
下载
可以到 https://github.com/xianyi/OpenBLAS/releases 下载你喜欢的版本解压到指定目录,也可以直接git clone
安装依赖项
sudo apt-get install libopenblas-dev
sudo apt-get install libopenblas-base
安装
下载后进入OpenBLAS文件夹,执行以下命令进行安装:
make -j10
sudo make --PREFIX=/usr/local/OpenBLAS/ install
测试
测试OpenBLAS
gedit ./test.c
输入:
#include <stdio.h>
#include <stdlib.h>
#include "cblas.h"
int main(){
int n; /*! array size */
double da; /*! double constant */
double *dx; /*! input double array */
int incx; /*! input stride */
double *dy; /*! output double array */
int incy; /*! output stride */
int i;
n = 10;
da = 10;
dx = (double*)malloc(sizeof(double)*n);
incx = 1;
dy = (double*)malloc(sizeof(double)*n);
incy = 1;
for(i=0;i<n;i++){
dx[i] = 9-i;
dy[i] = i;
printf("%f ",dy[i]); //输出原来的dy
}
printf("\n");
cblas_daxpy(n, da, dx,incx, dy, incy); //运行daxpy程序
// cblas_dcopy(n, dx,incx, dy, incy); //运行dcopy程序
for(i=0;i<n;i++){
printf("%f ",dy[i]); //输出计算后的dy
}
printf("\n");
return 0;
}
执行:
gcc ./test.c -I /usr/local/OpenBLAS/include/ -L /usr/local/OpenBLAS/lib -lopenblas
会在当前文件夹下生成可执行文件 a.out 执行:
a.out
结果如下即说明安装成功
0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 90.000000 81.000000 72.000000 63.000000 54.000000 45.000000 36.000000 27.000000 18.000000 9.000000
安装相关依赖项
sudo apt-get install dkms build-essential linux-headers-generic apt-show-versions
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libtiff5-dev libdc1394-22-dev libatlas-base-dev gfortran
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
安装caffe/caffe-ssd
以上全部安装完成后,我们开始安装caffe/caffe-ssd。
由于caffe-ssd基于caffe增加了部分层,含有caffe的全部功能,因此我们直接安装caffe-ssd就好。
下载
官方源码:
caffe-ssd源码 github caffe-ssd地址
caffe源码 github caffe地址
但是这些在安装过程中可能会出现一些问题,需要修改源码,我在安装的时候,已经把某些需要修改的源码进行了修正,可以在此处下载:
https://github.com/weidi1024/caffe-ssd-correct
修改Makefile.config
下载解压后进入caffe-ssd文件夹
官方的说明是 cp Makefile.config.example Makefile.config 然后修改内容。
如果下载的是我提供的修改后的caffe-ssd源码,我已经把需要修改的部分修改好了,直接进行下一步即可。
关于opencv版本:
Makefile.config中第23行
OPENCV_VERSION := 3
需要根据自己opencv的版本情况设定,首先查询本机的opencv版本:
pkg-config opencv --modversion
如果是3.x的话,需要将Makefile.config中第23行前面的注释#去掉。
拷贝文件
将caffe中关于cudnn的文件全部拷贝到caffe-ssd的相应文件夹中中,因为caffe-ssd中的caffe版本太老,直接安装会出错。
如果下载的是我提供的修改后的caffe-ssd源码,我已经把需要修改的部分修改好了,直接进行下一步即可。
开始编译
sudo make all -j20
sudo make test -j20
sudo make runtest -j20
sudo make pycaffe -j20
如果不报错,应该说明安装好了
测试pycaffe
终端输入
python
import sys
sys.path.append("{your_caffe_path}/python")
import caffe
不报错就说明安装好了
测试mnist分类
这个教程写的挺好的:运行caffe自带的mnist实例教程
++以下是可能出现的错误及解决方法++
错误1
collect2: error: ld returned 1 exit status
.build_release/lib/libcaffe.so:对‘cv::VideoWriter::isOpened() const’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:619: recipe for target '.build_release/tools/convert_annoset.bin' failed
make: *** [.build_release/tools/convert_annoset.bin] Error 1
Makefile:624: recipe for target '.build_release/examples/siamese/convert_mnist_siamese_data.bin' failed
make: *** [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1
解决: 首先这个问题确实是opencv的问题,只需要把 Makefile.config里的#USE_PKG_CONFIG := 这一行前面的#给去掉,然后在他下一行添加
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
参考:https://blog.csdn.net/yuweiyang123/article/details/53106638
警告2
In file included from src/caffe/util/math_functions.cu:1:0:
/usr/local/cuda/include/math_functions.h:54:2: warning: #warning "math_functions.h is an internal header file and must not be used directly. This file will be removed in a future CUDA release. Please use cuda_runtime_api.h or cuda_runtime.h instead." [-Wcpp]
#warning "math_functions.h is an internal header file and must not be used directly. This file will be removed in a future CUDA release. Please use cuda_runtime_api.h or cuda_runtime.h instead."
解决2: 修改相关程序的头文件即可 将src/caffe/util/math_functions.cu第一行的math_functions.h修改为cuda_runtime_api.h即可
错误3
1 Check failed: a <= b <0 vs -1.19209e-007>
解决: 解决办法修改src/caffe/util/sampler.cpp,如下面修改代码所示//renew注释下,加入两个判断,使得bbox长宽不要越界。
// Figure out bbox dimension.
float bbox_width = scale * sqrt(aspect_ratio);
float bbox_height = scale / sqrt(aspect_ratio);
//renew
if(bbox_width>=1.0)
{
bbox_width=1.0;
}
if(bbox_height>=1.0)
{
bbox_height=1.0;
}
参考:https://blog.csdn.net/LuohenYJ/article/details/88416180
错误4
./include/caffe/util/cudnn.hpp:21:10: warning: enumeration value ‘CUDNN_STATUS_RUNTIME_FP_OVERFLOW’ not handled in switch [-Wswitch]
CXX src/caffe/layers/cudnn_sigmoid_layer.cpp
In file included from ./include/caffe/util/device_alternate.hpp:40:0,
from ./include/caffe/common.hpp:19,
from ./include/caffe/blob.hpp:8,
from ./include/caffe/layers/silence_layer.hpp:6,
from src/caffe/layers/silence_layer.cpp:3:
解决: 作者发布的源码中caffe的版本较低,下载最新的caffe,将cudnn开头的文件拷贝覆盖掉caffe-ssd中的对应文件夹即可
错误5
CXX/LD -o .build_release/tools/convert_imageset.bin
//usr/lib/x86_64-linux-gnu/libblas.so.3:对‘gotoblas’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:619: recipe for target '.build_release/tools/upgrade_solver_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_solver_proto_text.bin] Error 1
make: *** 正在等待未完成的任务....
//usr/lib/x86_64-linux-gnu/libblas.so.3:对‘gotoblas’未定义的引用
解决: 这里应该是openblas未安装好,执行以下命令安装相关依赖项即可
sudo apt-get install libopenblas-dev
sudo apt-get install libopenblas-base
如果还是出现以上错误,在makefile.config相应位置中加入路径/usr/lib/x86_64-linux-gnu/即可,具体如下: 修改前:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
修改后:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include /usr/lib/x86_64-linux-gnu/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu/
++以下安装不分先后++
安装 TensorFlow 1.13.1
sudo pip install tensorflow-gpu==1.13.0
此处的1.13.0即为指定版本号,tensorflow的版本号,与cuda和cudnn版本的关系可进入官网查询
地址:从源代码编译 | TensorFlow
页面最下方即可查看版本依赖关系
下表为部分
版本 | Python 版本 | 编译器 | 编译工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-1.13.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.19.2 | 7.4 | 10.0 |
tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
如果出现错误解决不了,可以直接将关键错误提示进行百度谷歌,大部分情况都能查到,大家有可能会都遇到过你遇到的问题。
安装 MXNet 1.4.0
由于我安装的是cuda10.0,因此使用如下命令安装
pip install mxnet-cu100
安装pytorch
pip install torch
tensorflow mxnet 和 pytoch的安装真的是超级方便
安装PyCharm
百度百科:PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
教程网上有很多,我就不重复了
这个教程写的不错: Ubuntu 18.04 安装 PyCharm - 梦Dancing的博客 - CSDN博客
安装搜狗拼音输入法
去官网下载deb格式的安装包,下载地址:搜狗输入法 for linux
下载后直接双击deb安装包,进入软件管理器自动安装。
安装后注销或者重启即可使用
安装WPS Office
去官网下载deb格式的安装包,下载地址:WPS Office 2019 For Linux
下载后直接双击deb安装包,进入软件管理器自动安装。
安装后若报错,系统缺失字体。
解决方法 解决:WPS for Linux提示“系统缺失字体”
若一直出现警告:
下载额外数据文件失败 ttf-mscorefonts-installer
后台发现/usr/share/package-data-downloads有一个文件ttf-mscorefonts-installer,用gedit打开,有一大串地址。
其实解决办法是,手动把这些地址链接的文件下载下来,然后放到一个文件夹中。
如果懒得下载,也可以使用已下载好的文件,百度网盘: https://pan.baidu.com/s/1jIcfEMa 密码: rbeh
将下载的文件解压放到/usr/share/package-data-downloads中,然后手动在命令行执行sudo dpkg-reconfigure ttf-mscorefonts-installer这条语句手动指定文件夹的位置,重新配置下。
参考: 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer的问题_博客园
安装 MATLAB R2017b
安装
下载Linux版本Matlab之后,
进入含有iso文件的文件夹,执行:
注意:将第二行代码里面的R2017b改成你自己的版本。
sudo mkdir /media/matlab
sudo mount -o loop ./R2017b_glnxa64_dvd1.iso /media/matlab
sudo /media/matlab/install
Install choosing the option “Use a File Installation Key” and supply the following FIK
使用你的Crack文件夹里面的readme里面的激活码
2017b版本的应该是09806-07443-53955-64350-21751-41297
当提示需要挂载第二个盘时,需要先退掉第一个盘,然后挂载第二个盘:
退掉第一个盘:可以通过文件管理器退出第一个盘,也可在ubuntu18.04桌面找到matlab挂载的文件,点击右键取消挂载;
挂载第二个盘:代码如下,注意将第二个代码里面的R2017b改成你下载的版本
进入含有iso文件的文件夹,执行:
sudo mount -o loop ./R2017b_glnxa64_dvd2.iso /media/matlab
激活
sudo /usr/local/MATLAB/R2016b/bin/matlab
选择Crack文件夹下的 license_standalone.lic
当然也可以直接拷贝证书文件
sudo cp license_standalone.lic /usr/local/MATLAB/R2017b/licenses/
进入到crack下的R2017b/bin/glnxa64/文件夹,拷贝文件
sudo cp libmwservices.so /usr/local/MATLAB/R2017b/bin/glnxa64/
实现任意位置终端打开matlab
在目录/usr/local/bin里面创建一个指向Matlab安装目录/usr/local/MATLAB/R2017b/bin的符号链接:(非默认安装需替换安装路径)
sudo ln -s /usr/local/MATLAB/R2017b/bin/matlab /usr/local/bin/matlab
sudo chmod a+w -R ~/.matlab
现在在任何位置打开终端都可以打开MATLAB
matlab
创建桌面快捷方式
sudo gedit /usr/share/applications/Matlab.desktop
写入(注意将第5和第7行里面的Matlab版本换成你自己的版本)
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/usr/local/MATLAB/R2017b/bin/matlab -desktop
Name=MATLAB
Icon=/usr/local/MATLAB/R2017b/toolbox/nnet/nnresource/icons/matlab.png
Categories=Math;Science
Comment=Scientific computing environment
StartupNotify=true
StartupWMClass=com-mathworks-util-PostVMInit
桌面会出现图标,如果没有出现,可以将/usr/share/applications/Matlab.desktop直接拷贝到桌面 然后解决权限问题
sudo chmod a+w -R /usr/share/applications/Matlab.desktop
sudo chmod a+w -R ~/桌面/Matlab.desktop
至此,Matlab安装完成,尽情使用吧!
如果觉得我写的教程能帮助到你,欢迎在github上star