Bài viết này hướng dẫn build Darknet sử dụng CUDA & CUDNN để tăng tốc training/predict trên Ubuntu.
- CUDA 11.5.0
- CuDNN 8.3.2
- Ubuntu 18.04
- NVIDIA RTX 2060
- CPU Intel Core i5-4590 3.3Ghz
- RAM 16GB
Để làm theo bài này các bạn cần biết cách remote vào Ubuntu bằng SSH, cấu trúc folder của Linux, sudo là gì…
1. Cài đặt CUDA 11.5.0
Cài đặt CUDA cũng đồng thời cài đặt luôn driver nên bạn không cần cài driver sẵn
Cài đặt theo instruction của NVIDIA, ở đây mình chọn file .DEB
1 2 3 4 5 6 7 |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda-repo-ubuntu1804-11-5-local_11.5.0-495.29.05-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804-11-5-local_11.5.0-495.29.05-1_amd64.deb sudo apt-key add /var/cuda-repo-ubuntu1804-11-5-local/7fa2af80.pub sudo apt-get update sudo apt-get -y install cuda |
Các lệnh trên sẽ cài đặt CUDA vào folder /usr/local/cuda-11.5/bin. Kiểm tra CUDA cài đặt thành công không bằng lệnh
1 |
nvcc --version |
Nếu hiển thị ra version 11.5 như hình dưới là thành công.
Trong trường hợp không ra kết quả thì tạo add folder CUDA vào PATH bằng lệnh:
1 |
export PATH=/usr/local/cuda-11.5/bin${PATH:+:${PATH}} |
Sau đó restart lại Ubuntu
1 |
sudo reboot |
Nếu sau khi reboot không tìm thấy nvcc thì các bạn dùng lệnh:
1 2 |
echo "export PATH=/usr/local/cuda-11.5/bin${PATH:+:${PATH}}" >> ~/.bashrc . ~/.bashrc |
2. Cài đặt CuDNN 8.3.2
Bước này cài đặt CuDNN runtime và CuDNN developer library để chạy Deep Learning. Các bạn download tại link: cuDNN Archive
Download phiên bản CuDNN phù hợp với CUDA 11.5, ở đây mình chọn CuDNN 8.3.2. Các bạn download xong rồi copy vào folder /home/ubuntu bằng WinSCP.
Ghi chú: version đầy đủ của CuDNN là 8.3.2.44
1 2 3 4 5 6 |
sudo dpkg -i cudnn-local-repo-ubuntu1804-8.3.2.44_1.0-1_amd64.deb sudo apt-key add /var/cudnn-local-repo-ubuntu1804-8.3.2.44/7fa2af80.pub sudo apt-get update sudo apt-get install libcudnn8=8.3.2.44-1+cuda11.5 sudo apt-get install libcudnn8-dev=8.3.2.44-1+cuda11.5 sudo apt-get upgrade |
Kiểm tra CuDNN có cài đặt thành công hay không, hiện ra như bên dưới là được
1 |
sudo apt search cudnn | grep installed |
Build Darknet
Clone repository Darknet về tại link: https://github.com/AlexeyAB/darknet.git vào folder /var/darknet hoặc folder khác tùy ý bạn
1 |
sudo git clone https://github.com/AlexeyAB/darknet.git /var/darknet |
Để dễ làm việc với source code các bạn nên chown (đổi chủ sở hữu folder darknet từ root sang user tên là ubuntu, mình có thói quen là đặt username là tên OS cho khỏi quên). Khi chown xong thì các bạn không cần dùng lệnh sudo nữa. Nếu bạn không chown thì các bạn phải export PATH cho user root <= hơi phức tạp nên chown cho nhanh gọn lẹ.
1 |
sudo chown ubuntu -R /var/darknet |
Sau đó vào folder darknet sửa file Makefile, lưu ý phân biệt chữ hoa/thường. Mình thích dùng vim để edit text
So với file gốc mình đã sửa:
GPU=1
CUDNN=1
ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]
Để biết arch là bao nhiêu thì bạn vào link https://developer.nvidia.com/cuda-gpus và kiểm tra GPU của mình, của mình là RTX 2060 nên chọn là compute_75
Sau đó save file Makefile và dùng lệnh:
1 |
make |
Test darknet
Các bạn download file yolov4.weights vào folder /var/darknet, sau đó copy file ảnh image.jpg vào folder /var/darknet để test
1 |
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 image.png |
Do không build với OpenCV nên darknet sẽ save thành file predictions.jpg
Kết quả nhận diện tốn 532 milisecond
Nếu không sử dụng CUDA thì thời gian predict là 19888 milisecond, chậm gấp 37 lần
Chúc các bạn thành công
Bonus
Gỡ bỏ CUDA
1 2 3 4 5 6 |
sudo apt-get autoremove --purge cuda sudo apt-get purge nvidia* sudo apt remove nvidia-* sudo rm /etc/apt/sources.list.d/cuda* sudo apt-get autoremove && sudo apt-get autoclean sudo rm -rf /usr/local/cuda* |