在无 root 的情况下可将 cuda 安装到自己的目录中, 配置好环境变量即可使用.
服务器基础信息:
OS: Ubuntu 16.04
Kernel: x86_64 Linux 4.13.0-38-generic
CPU: Intel Xeon CPU E5-2620 v3 @ 3.2GHz
GPU: 双路 GeForce RTX 2080Ti
GPU驱动版本: 430.50
RAM: 128 GB
GCC: 5.4.1
到英伟达官网下载CUDA toolkit的 runfile, 本文以 10.0 版本为例
$ wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
赋予可执行权限
$ chmod +x ./cuda_10.0.130_410.48_linux
执行安装程序
$ ./cuda_10.0.130_410.48_linux
按空格向下滚动, accept 许可
提示是否安装显卡驱动, 由于已安装驱动, 且无 root 不可覆盖安装, 故输入 n 跳过
按 y 安装 CUDA Toolkit, 在此需输入自己的 CUDA 安装路径, 一定要选择自己有写入权限的目录, 若文件夹不存在将会自动创建, 在此以 /server_space/zhaoym/cuda-10.0
为例.
软链接无需创建, CUDA Samples 也无需安装
若 Toolkit 为 Installed 即为安装成功.
首先下载 cuDNN 库压缩文件, 该链接不可直接通过 wget 下载, 可先使用浏览器打开, 再复制浏览器下载时跳转的地址进行下载
解压压缩文件
$ tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
得到名为 cuda 的文件夹, 其目录结构与 CUDA 安装路径的目录结构相同
cuda
├── NVIDIA_SLA_cuDNN_Support.txt
├── include
│ └── cudnn.h
└── lib64
├── libcudnn.so -> libcudnn.so.7
├── libcudnn.so.7 -> libcudnn.so.7.6.5
├── libcudnn.so.7.6.5
└── libcudnn_static.a
将该文件夹下的文件分别复制到之前安装 CUDA 10 的对应路径中, 本例中即为 /server_space/zhaoym/cuda-10.0
打开 ~/.bashrc
$ vi ~/.bashrc
在末尾追加
export PATH=/server_space/zhaoym/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/server_space/zhaoym/cuda-10.0/lib64:$LD_LIBRARY_PATH
若之前有配置过其它版本的 CUDA, 需先将其注释掉
退出编辑器, 使环境变量生效
$ source ~/.bashrc
至此 CUDA 和 cuDNN 安装结束
$ nvcc -V
输出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
项目主页: https://github.com/AlexeyAB/darknet
预训练权重: yolov4.weights
克隆项目
$ git clone https://github.com/AlexeyAB/darknet.git
修改 Makefile
$ vi Makefile
将前三行修改为1, RTX 2080 Ti 为图灵架构, 将 CUDNN_HALF 设为 1 可进一步加速计算
GPU=1
CUDNN=1
CUDNN_HALF=1
服务器默认 GCC/G++ 版本为 4.9.4, 这里改为使用更高的 5.4.1, 修改 60 和 62 行
ifeq ($(USE_CPP), 1)
CC=g++-5
else
CC=gcc-5
endif
全局查找并替换 /usr/local/cuda
为 /server_space/zhaoym/cuda-10.0
按 ESC 进入命令模式, 输入以下内容 , 回车完成替换
:%s/\/usr\/local\/cuda/\/server_space\/zhaoym\/cuda-10.0/g
编译
$ make -j8
若编译出错, 修改后需 make clean
再重新 make
运行 demo
$ ./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights
Yolo v4 的训练配置方式与 v3 相同, 可参考之前的文章: YOLO v3 环境搭建及训练入门指南