环境部署
在无 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 10 安装
到英伟达官网下载CUDA toolkit的 runfile, 本文以 10.0 版本为例
1 | wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux |
赋予可执行权限
1 | chmod +x ./cuda_10.0.130_410.48_linux |
执行安装程序
1 | ./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 安装
首先下载 cuDNN 库压缩文件, 该链接不可直接通过 wget 下载, 可先使用浏览器打开, 再复制浏览器下载时跳转的地址进行下载
解压压缩文件
1 | tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz |
得到名为 cuda 的文件夹, 其目录结构与 CUDA 安装路径的目录结构相同
1 | cuda |
将该文件夹下的文件分别复制到之前安装 CUDA 10 的对应路径中, 本例中即为 /server_space/zhaoym/cuda-10.0
配置环境变量
打开 ~/.bashrc
1 | vi ~/.bashrc |
在末尾追加
1 | export PATH=/server_space/zhaoym/cuda-10.0/bin:$PATH |
若之前有配置过其它版本的 CUDA, 需先将其注释掉
退出编辑器, 使环境变量生效
1 | source ~/.bashrc |
至此 CUDA 和 cuDNN 安装结束
1 | nvcc -V |
输出
1 | nvcc: NVIDIA (R) Cuda compiler driver |
YOLO v4 编译
项目主页: https://github.com/AlexeyAB/darknet
预训练权重: yolov4.weights
克隆项目
1 | git clone https://github.com/AlexeyAB/darknet.git |
修改 Makefile
1 | vi Makefile |
将前三行修改为1, RTX 2080 Ti 为图灵架构, 将 CUDNN_HALF 设为 1 可进一步加速计算
1 | GPU=1 |
服务器默认 GCC/G++ 版本为 4.9.4, 这里改为使用更高的 5.4.1, 修改 60 和 62 行
1 | ifeq ($(USE_CPP), 1) |
全局查找并替换 /usr/local/cuda
为 /server_space/zhaoym/cuda-10.0
按 ESC 进入命令模式, 输入以下内容 , 回车完成替换
1 | :%s/\/usr\/local\/cuda/\/server_space\/zhaoym\/cuda-10.0/g |
编译
1 | make -j8 |
若编译出错, 修改后需 make clean
再重新 make
运行 demo
1 | ./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights |
YOLO v4 的训练配置方式与 v3 相同, 可参考之前的文章: YOLO v3 环境搭建及训练入门指南