Tại sao nvidia-smi là chưa đủ để quản lý GPU?
Nếu bạn đang vận hành các hệ thống AI hay đào tạo Deep Learning, GPU chính là linh hồn của hệ thống. Một chiếc H100 hay A100 có giá từ vài trăm triệu đến cả tỷ đồng, nên việc bảo vệ chúng là ưu tiên hàng đầu. Thông thường, chúng ta hay SSH vào server rồi gõ nvidia-smi để kiểm tra nhanh. Tuy nhiên, cách này có một điểm yếu chết người: nó chỉ cho bạn thấy dữ liệu tại một thời điểm duy nhất.
Thực tế, bạn không thể thức 24/7 để canh chừng xem lúc 2 giờ sáng GPU có bị quá nhiệt dẫn đến giảm xung (thermal throttling) hay không. Liệu bộ nguồn (PSU) có bị quá tải khi model train đạt đỉnh công suất? Đây là lúc NVIDIA DCGM Exporter kết hợp cùng Prometheus và Grafana phát huy sức mạnh, giúp bạn theo dõi toàn bộ lịch sử vận hành một cách tự động.
Quick Start: Kích hoạt giám sát trong 5 phút
Chỉ cần server đã cài sẵn NVIDIA Driver và Docker, bạn có thể “nhấc” toàn bộ chỉ số GPU lên dashboard chỉ với một lệnh duy nhất. Đây là cách nhanh nhất để kiểm tra tính tương thích trước khi triển khai chính thức.
docker run -d --gpus all \
--name nvidia-dcgm-exporter \
-p 9400:9400 \
nvcr.io/nvidia/k8s-device-plugin:dcgm-exporter:3.3.5-3.4.0-ubuntu22.04
Sau khi container chạy, hãy truy cập http://<IP-Server>:9400/metrics. Nếu màn hình hiện ra hàng loạt chỉ số như DCGM_FI_DEV_GPU_TEMP, hệ thống của bạn đã sẵn sàng truyền dữ liệu.
DCGM Exporter: Bộ não đứng sau các con số
NVIDIA Data Center GPU Manager (DCGM) là bộ công cụ chuyên dụng để quản lý GPU trong các trung tâm dữ liệu lớn. DCGM Exporter đóng vai trò như một “thông dịch viên” cao cấp. Nó bóc tách dữ liệu từ thư viện NVML và chuyển đổi sang định dạng mà Prometheus có thể đọc được.
Tại sao không dùng các công cụ cộng đồng? DCGM Exporter là hàng “chính chủ” từ NVIDIA, hỗ trợ sâu các chỉ số mà nvidia-smi thường bỏ qua. Bạn có thể theo dõi chi tiết Tensor Core utilization hay hoạt động của các luồng FP64/FP32 – những thông số sống còn để tối ưu hóa hiệu suất training model.
Bước 1: Cài đặt NVIDIA Container Toolkit
Đến 90% lỗi “container không thấy GPU” xuất phát từ việc thiếu Toolkit này. Nó cho phép Docker engine giao tiếp trực tiếp với driver NVIDIA ở tầng host.
# Thêm repository chính thức
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Cài đặt và restart service
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
Bước 2: Cấu hình Prometheus thu thập dữ liệu
Bây giờ, bạn cần khai báo để Prometheus định kỳ ghé thăm port 9400 và “lấy hàng”. Hãy thêm đoạn cấu hình sau vào file prometheus.yml của bạn:
scrape_configs:
- job_name: 'nvidia-gpu'
static_configs:
- targets: ['<IP-SERVER-GPU>:9400']
scrape_interval: 15s # Tần suất này đủ để theo dõi nhiệt độ mà không gây áp lực lên CPU
Kinh nghiệm thực tế: Tránh bẫy Alert Fatigue
Sai lầm lớn nhất của mình khi mới làm monitoring là đặt cảnh báo quá nhạy. Việc nhận 200 tin nhắn Telegram mỗi đêm vì GPU chạm mức 81°C sẽ khiến bạn bị “lờ nhờ” trước các sự cố thực sự. Với các dòng như A100, ngưỡng 80°C khi full load là hoàn toàn bình thường.
Chiến lược đặt Alert hiệu quả:
- Nhiệt độ: Chỉ cảnh báo khi GPU vượt 85°C liên tục trong 5-10 phút.
- VRAM: Đặt ngưỡng 95% để phát hiện sớm lỗi Memory Leak trong code PyTorch trước khi chương trình bị crash (Out of Memory).
- Xung nhịp: Nếu nhiệt độ thấp mà xung nhịp giảm sâu, hãy kiểm tra ngay bộ nguồn. Có thể PSU đang không cấp đủ công suất đỉnh cho card.
Trực quan hóa với Grafana Dashboard
Thay vì mất cả buổi sáng để tự vẽ biểu đồ, bạn hãy tận dụng Dashboard ID 12239 từ Grafana Labs. Đây là mẫu dashboard tiêu chuẩn được NVIDIA tối ưu sẵn.
Dashboard này cung cấp cái nhìn toàn cảnh về:
- GPU Utilization: Tỷ lệ phần trăm tính toán thực tế.
- Power Usage: Điện năng tiêu thụ (giúp bạn tính toán chi phí vận hành chính xác).
- XID Errors: Các lỗi phần cứng nghiêm trọng từ Driver NVIDIA (rất quan trọng để bảo hành card).
Mẹo nhỏ cho anh em vận hành hệ thống lớn
Nếu bạn đang quản lý cụm server Kubernetes, đừng cài đặt thủ công từng bước. Hãy sử dụng NVIDIA GPU Operator thông qua Helm Chart. Nó sẽ tự động quản lý từ driver, container runtime cho đến exporter trên toàn bộ cluster, giúp giảm 90% công sức bảo trì.
Ngoài ra, hãy chú ý đến lỗi XID 31 hoặc XID 43. Nếu thấy các mã lỗi này xuất hiện trên Grafana, khả năng cao là card của bạn đang gặp vấn đề về phần cứng hoặc lỏng cáp nguồn, cần kiểm tra vật lý ngay lập tức.
Tổng kết
Giám sát GPU không chỉ là nhìn những biểu đồ xanh đỏ cho đẹp mắt. Nó là công cụ giúp bạn chủ động bảo vệ khối tài sản lớn và duy trì sự ổn định cho các dự án AI. Chỉ mất 15 phút thiết lập hôm nay, bạn sẽ tiết kiệm được hàng tuần trời xử lý sự cố nếu chẳng may phần cứng gặp vấn đề.

