Build Darknet với CUDA trên Ubuntu 18.04

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

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

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:

Sau đó restart lại Ubuntu

Nếu sau khi reboot không tìm thấy nvcc thì các bạn dùng lệnh:

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

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

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

Để 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ẹ.

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:

Kết quả sau khi chạy xong ta sẽ được file darknet

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

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

Leave a Reply