系统环境:Ubuntu 16.04 LTS
1 标题系统环境
1.1 apt-get镜像源更换
sudo vim /etc/apt/sources.list
用以下内容更换,这个是阿里云的源,当然也可更换其他源,这里仅做参考(注意:不同系统的镜像源地址不同,需要谨慎操作,这个对应的是Ubuntu 16.04 LTS):
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
修改完毕后,更新:
sudo apt-get update
2 显卡驱动配置
范例配置:cuda-9.0 + cudnn 7.4.15
需要的可以自己搜寻其他版本配置。
2.1 显卡驱动安装
查看显卡型号:
lspci | grep -i nvidia
下载相应的显卡驱动,linux下后缀为".run"
显卡驱动下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn
打开终端alt+f4,先删除旧的驱动:
sudo apt-get purge nvidia*
禁用自带的nouveau nvidia驱动(很重要!)
更改文件:
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后加入:
blacklist nouveau
options nouveau modeset=0
更新内核:
sudo update-initramfs -u
修改后重新启动系统sudo reboot
,用以确认nouveau是否被干掉,使用命令:
lsmod | grep nouveau #无输出则表示禁用成功。
sudo service lightdm stop #停用图形驱动程序,进入命令行模式
sudo chmod +x Nvidia.***.run
sudo ./Nvidia.**.run #全部选是
sudo service lightdm restart #重启图形界面
nvidia-smi #出现显卡驱动则表示安装成功
2.2 cuda-9.0
cuda下载地址 :https://developer.nvidia.com/cuda-toolkit-archive
安装依赖:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装cuda:
sudo sh cuda*.run
其中,可以ctrl+c完成协议阅读,显卡驱动选择no,其他选择yes和默认安装路径即可。
添加环境变量:
vim ~/.bashrc
加入:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
更新源:
source ~/.bashrc
验证:
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
若返回对应GPU信息则表示cuda安装成功。
2.3 cudnn 7.4.15
cudnn下载地址:https://developer.nvidia.com/rdp/cudnn-archive
将下载的cudnn解压至当前目录:
tar zxvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so.7 libcudnn.so #删除原有动态文件
sudo ln -s libcudnn.so.7.1.4 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig
nvcc -V
若出现cuda版本信息表示操作成功。
3 python运行环境
本次环境部署python版本需要3.6版本。
python3.6安装可参考:
https://www.hanyibo.com/python/Ubuntu-install-Python3-6.html
3.1 pip换源
pip换国内镜像源,解决国外源下载太慢。
mkdir ~/.pip
vim ~/.pip/pip.conf
添加下面的内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
保存并退出。
3.2 python所需环境依赖
主要依赖如下,如果运行期间有其他需要,请自行安装。
- torch == 1.1.0
- torchvision == 0.3.0
- numpy
- flask
- base64
- opencv-python == 3.4.6
- mmcv == 0.2.14
- sklearn
- scikit-image
- matplotlib
3.3 相关文件替换
下载mmdetection库用编译使用。
git clone https://github.com/xinyu-ch/mmdetection.git
cd mmdetection
python setup.py develop
拷贝mmdet/ops/nms/soft_nms_cpu.cpython-36m-x86_64-linux-gnu.so 文件到RebarCountDeploy对应文件夹下。
更改mmcv底层文件:
sudo vim /usr/local/lib/python3.6/site-packages/mmcv/visualization/image.py
替换:
if show:
imshow(img, win_name, wait_time)
if out_file is not None:
imwrite(img, out_file)
为:
return bboxes
3.4 ip地址更改
更改run_pytorch_server.py中底端ip地址和端口。
后台运行模型:
nohup python run_pytorch_server.py &