Cách Giám sát và Quản lý GPU NVIDIA trên Ubuntu bằng lệnh nvidia-smi

1. Giới thiệu

Khi sử dụng GPU trên Ubuntu, việc giám sát trạng thái của nó một cách chính xác là rất quan trọng. Điều này đặc biệt cần thiết trong các khối lượng công việc liên quan đến học sâu hoặc render đồ họa, nơi việc hiểu rõ mức độ sử dụng GPU và phiên bản driver là bắt buộc. Trong bài viết này, chúng tôi sẽ giải thích cách sử dụng nvidia-smi, một công cụ quản lý GPU của NVIDIA, và giới thiệu các phương pháp kiểm tra thông tin GPU trên Ubuntu.

2. Kiểm tra thông tin GPU bằng nvidia-smi

nvidia-smi là một công cụ dòng lệnh cho phép bạn giám sát mức độ sử dụng, bộ nhớ và các thông tin chi tiết khác về các GPU NVIDIA. Nó đặc biệt hữu ích khi kiểm tra hoạt động GPU theo thời gian thực hoặc lấy các chỉ số sử dụng chi tiết.

Cách sử dụng cơ bản

Bạn có thể dùng lệnh sau để giám sát mức độ sử dụng GPU và bộ nhớ theo thời gian thực:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1

Lệnh này trả về thông tin chi tiết bao gồm mức độ sử dụng GPU, bộ nhớ đã dùng và bộ nhớ còn trống. Tùy chọn -l cho phép bạn đặt khoảng thời gian làm mới tính bằng giây.

Định dạng hiển thị và xuất file

Mặc định, kết quả được hiển thị dưới dạng bảng, nhưng bạn có thể xuất chúng dưới dạng CSV để dễ xử lý hơn. Nếu muốn lưu thông tin vào một tệp, hãy chỉ định đích bằng tùy chọn -f.

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /path/to/output.csv

Điều này cho phép bạn lưu nhật ký sử dụng GPU và phân tích chúng sau này.

3. Lấy thông tin tiến trình với nvidia-smi

nvidia-smi cũng cho phép bạn truy xuất thông tin về các tiến trình đang sử dụng GPU. Điều này giúp xác định mỗi tiến trình tiêu tốn bao nhiêu tài nguyên GPU.

Lấy thông tin tiến trình

Sử dụng lệnh sau để xem PID và mức độ sử dụng bộ nhớ của các tiến trình đang dùng GPU:

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader

Lệnh này trả về danh sách các tiến trình GPU đang hoạt động và hiển thị mức độ sử dụng bộ nhớ của từng tiến trình.

Lệnh phụ nvidia-smi pmon

Công cụ nvidia-smi còn có lệnh phụ pmon, cung cấp việc giám sát chi tiết các tiến trình GPU.

nvidia-smi pmon --delay 10 -s u -o DT

Lệnh này hiển thị thông tin tiến trình GPU ở các khoảng thời gian được chỉ định. Tùy chọn --delay định nghĩa khoảng thời gian làm mới tính bằng giây, và bạn có thể chọn những thông tin muốn hiển thị.

4. Cài đặt và xác minh driver NVIDIA

Để sử dụng GPU NVIDIA trên Ubuntu, cần cài đặt driver NVIDIA phù hợp. Dưới đây là các bước cài đặt và xác minh.

Cài đặt driver

Đầu tiên, cài đặt driver NVIDIA thích hợp cho hệ thống của bạn bằng lệnh sau:

sudo apt install nvidia-driver-510

Sau khi cài đặt hoàn tất, khởi động lại hệ thống.

Xác minh cài đặt

Sau khi khởi động lại, chạy lệnh sau để xác nhận driver đã được cài đặt đúng cách:

nvidia-smi

Nếu phiên bản driver và phiên bản CUDA xuất hiện, việc cài đặt đã thành công.

5. Xác minh hoạt động GPU với TensorFlow

Bạn cũng có thể xác minh chức năng GPU bằng cách thử nghiệm với TensorFlow, một framework học máy.

Cài đặt Anaconda

Đầu tiên, cài đặt Anaconda và thiết lập môi trường của bạn:

bash ./Anaconda3-2022.05-Linux-x86_64.sh
conda update -n base conda
conda update anaconda
conda update -y --all
conda install tensorflow-gpu==2.4.1

Kiểm tra nhận dạng GPU trong TensorFlow

Tiếp theo, xác nhận TensorFlow có nhận ra GPU hay không:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Nếu thiết bị GPU xuất hiện trong danh sách, TensorFlow đã phát hiện thành công GPU.

6. Giám sát và ghi log GPU

nvidia-smi cho phép giám sát GPU theo thời gian thực và ghi lại nhật ký. Điều này giúp theo dõi mức độ sử dụng GPU qua thời gian và tối ưu hoá hiệu năng.

Giám sát định kỳ

Để thiết lập giám sát định kỳ, sử dụng tùy chọn -l để chỉ định khoảng thời gian cập nhật, và tùy chọn ghi dữ liệu vào một tệp:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /var/log/gpu.log

Điều khiển lập trình qua Python Bindings

nvidia-smi cung cấp các bindings Python (nvidia-ml-py) cho phép bạn lấy thông tin GPU một cách lập trình. Điều này cho phép giám sát và điều khiển tùy chỉnh hơn từ các script Python.

7. Kết luận

nvidia-smi là một công cụ mạnh mẽ để kiểm tra và quản lý việc sử dụng GPU NVIDIA trên Ubuntu. Bài viết này đã giải thích cách sử dụng cơ bản, giám sát quy trình, cài đặt driver, và xác minh GPU TensorFlow. Sử dụng các kỹ thuật này để tối đa hóa hiệu suất GPU và tối ưu hóa hệ thống của bạn.