Cấu hình iGPU cho xserver và GPU Nvidia cho tác vụ CUDA trong Ubuntu 18.04

Trên thực tế, ngoài các tác vụ CUDA (có thể là huấn luyện model học máy) sử dụng tới card Nvidia, hệ điều hành cũng tiêu tốn một lượng bộ nhớ kha khá cho việc hiển thị. Bài viết này sẽ hướng dẫn các bạn sử dụng card đồ hoạ onboard để cho việc hiển thị, từ đó tiết kiệm một lượng bộ nhớ đáng kể cho card đồ hoạ Nvidia để dành cho việc huấn luyện model.

  • Đầu tiên, bạn cần có:
    • Máy tính sử dụng Ubuntu hoặc hệ điều hành tương đương. Ở đây tôi sử dụng Ubuntu 18.04.
    • Máy tính của bạn có card đồ hoạ onboard (của Intel).
    • Bạn cắm dây màn hình vào cổng xuất đồ hoạ (có thể là HDMI) trên mainboard thay vì trên card màn hình. Có thể bạn sẽ cần cấu hình BIOS để hệ thống xuất hình qua cổng HDMI trên mainboard khi khởi động.

Bước 1: Cài đặt driver cho card Nvidia và CUDA

Tôi sẽ cùng bạn sử dụng hướng dẫn này để cài đặt đúng driver và các package CUDA cần thiết.

Đầu tiên mở Terminal (Ctrl+Alt+t).

Xoá CUDA PPA và package nvidia-cuda-toolkit nếu được cài đặt từ trước:

1sudo rm /etc/apt/sources.list.d/cuda*
2sudo apt remove --autoremove nvidia-cuda-toolkit

Gỡ driver cũ (khuyến khích):

1sudo apt remove --autoremove nvidia-*

Cập nhật hệ thống:

1sudo apt update && sudo apt full-upgrade

Thêm PPA và setup key server:

1sudo add-apt-repository ppa:graphics-drivers/ppa
2sudo apt-key adv --fetch-keys  http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

Và thêm các repo chứa driver:

1sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
2sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda_learn.list'

Cập nhật cơ sử dữ liệu gói:

1sudo apt update

Cài CUDA 10.0. Lưu ý driver tương ứng cũng sẽ được cài đặt sau bước này.

1sudo apt install cuda-10-0

Cài cudnn 7.5:

1sudo apt install libcudnn7

Thêm các dòng sau vào file ~/.profile:

1# set PATH for cuda 10.0 installation
2if [ -d "/usr/local/cuda-10.0/bin/" ]; then
3    export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
4    export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
5fi

Sau bước này bạn hãy khởi động lại và kiểm tra mọi thứ với lệnh nvcc --version.

Bước 2: Cấu hình để hệ thống sử dụng card đồ hoạ onboard theo mặc định:

  • Tạo file /etc/X11/xorg.conf với nội dung sau:
 1Section "Device"
 2    Identifier      "intel"
 3    Driver          "intel"
 4    BusId           "PCI:0:2:0"
 5EndSection
 6
 7Section "Screen"
 8    Identifier      "intel"
 9    Device          "intel"
10EndSection

Bạn cần thay đổi BusId cho phù hợp với GPU của bạn. Bạn có thể kiểm tra bằng lệnh sau: (Chú ý output của card đồ hoạ tương tứng của tôi là 00:02.0, do vậy tôi sử dụng PCI:0:2:0.)

1lspci  | grep VGA
100:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop)
201:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2070] (rev a1)
  • Khởi động lại máy tính.

Bước 3: Kiểm tra kết quả

Nếu mọi thứ đi đúng hướng, sau khi khởi động lại máy tính, máy sẽ sử dụng card onboard để hiển thị. Kiểm tra với lệnh sau:

1nvidia-smi

Nếu bạn nhìn thấy No running processes found như ảnh dưới, hệ thống đang sử dụng card onboard để hiển thị, và chúng ta đã thành công!. Bạn có thể thử chạy một tác vụ học máy (train thử 1 model chẳng hạn, để chắc chắn CUDA vẫn hoạt động tốt).

nvidia-smi

nvidia-smi

Related Posts

Những package cần có cho Ubuntu

Dưới đây tôi xin giới thiệu một số package tôi thường dùng trên Ubuntu và cách cài đặt. Những package này là các gói phần mềm mà tôi hay dùng, chủ yếu là phục vụ các nhu cầu cơ bản của việc lập trình.

Read more

With Daisykit – Everyone can build AI projects!

Imagine you are a software engineer or a DIY hobbyist with great ideas to build AI-powered projects. However, it will be such difficulty when you know very little or nothing about AI.

Read more

Install ROS 2 on Raspberry Pi 4 (SD card image available)

ROS2 is an excellent framework for robotics applications. You can go further and embed a completed ROS 2 application stack in a small robot base with a Raspberry Pi computer.

Read more