Bỏ qua điều hướng
CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ HQG
Giai đoạn 8 · Vận hànhTrung cấp

Giám sát và vận hành máy chủ GPU: DCGM Exporter, Prometheus, Grafana, Xid, MLflow, sao lưu checkpoint

Theo dõi nhiệt độ, điện năng, ECC, lỗi Xid bằng nvidia-smi và dcgm-exporter, đưa vào Prometheus/Grafana với cảnh báo, theo dõi thí nghiệm bằng MLflow hoặc Weights & Biases, sao lưu checkpoint và lập lịch bảo trì.

Khoảng 6 phút đọcCập nhật: 09/20268 bước
Mục tiêu

Biết GPU nào đang nóng, lỗi hay rảnh trước khi người dùng phàn nàn; có lịch sử thí nghiệm, bản sao lưu checkpoint và lịch bảo trì rõ ràng.

Dành cho ai
  • Kỹ sư vận hành hệ thống AI
  • Trưởng nhóm AI quản lý nhiều thí nghiệm, nhiều máy
Yêu cầu
  • Máy chủ GPU đã cài driver và Docker
  • Một máy (hoặc VM) chạy Prometheus/Grafana
  • Nơi lưu trữ sao lưu tách khỏi máy chủ GPU
  • Hoàn thành bài cài driver & CUDADocker & GPU
Mục lục bài

Cần theo dõi những gì

NhómChỉ sốVì sao
Sức khoẻNhiệt độ GPU/bộ nhớ, lỗi ECC, Xid, trạng thái NVLinkPhát hiện card sắp hỏng, lỗi phần cứng, quá nhiệt
Điện năngCông suất tiêu thụ, giới hạn công suất, sự kiện throttleLiên quan nguồn, làm mát và chi phí điện
Sử dụngUtilization, bộ nhớ đã dùng, tiến trìnhBiết GPU rảnh hay nghẽn, lên kế hoạch mở rộng
Dịch vụĐộ trễ, số yêu cầu, lỗi của vLLM/APIChất lượng phục vụ người dùng
Hệ thốngCPU, RAM, ổ đĩa, mạng (node_exporter)Ổ đầy vì checkpoint là sự cố rất hay gặp

Các bước thực hiện

Tiến độ của bạn
0/8

Tiến độ chỉ lưu trên trình duyệt này.

  1. Bước 1: Kiểm tra nhanh bằng nvidia-smi

    Bash
    # Ghi mỗi 5 giây: nhiệt độ, điện, sử dụng, bộ nhớ, lỗi ECC không sửa được
    nvidia-smi --query-gpu=timestamp,index,name,temperature.gpu,power.draw,utilization.gpu,memory.used,memory.total,ecc.errors.uncorrected.volatile.total --format=csv -l 5
    
    nvidia-smi -q -d TEMPERATURE,POWER,ECC,PERFORMANCE
    # Tiến trình đang dùng GPU
    nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
  2. Bước 2: Theo dõi lỗi Xid trong nhật ký kernel

    Bash
    sudo dmesg -T | grep -i xid
    sudo journalctl -k --since "24 hours ago" | grep -iE "NVRM|Xid"

    Xid là mã lỗi driver NVIDIA ghi vào nhật ký kernel. Mỗi mã có ý nghĩa và hướng xử lý khác nhau (lỗi ứng dụng, lỗi bộ nhớ, GPU rớt khỏi bus…) — tra trong tài liệu Xid của NVIDIA trước khi kết luận phần cứng hỏng.

  3. Bước 3: Chạy dcgm-exporter

    Bash
    # Lấy tag hiện hành từ NGC Catalog (nvidia/k8s/dcgm-exporter)
    DCGM_EXPORTER_TAG="<tag-tu-NGC>"
    MGMT_IP=10.0.0.11   # IP mạng quản trị của máy chủ GPU
    
    sudo docker run -d --name dcgm-exporter --restart unless-stopped \
      --gpus all --cap-add SYS_ADMIN \
      -p $MGMT_IP:9400:9400 \
      nvcr.io/nvidia/k8s/dcgm-exporter:$DCGM_EXPORTER_TAG
    
    curl -s http://$MGMT_IP:9400/metrics | grep -E "DCGM_FI_DEV_GPU_TEMP|DCGM_FI_DEV_POWER_USAGE" | head

    Bộ chỉ số mặc định được khai trong file CSV của dcgm-exporter. Muốn thêm trường (ví dụ lỗi ECC chi tiết), tạo file CSV riêng và gắn vào container theo README của dự án.

    Bash
    sudo apt install -y prometheus-node-exporter
    curl -s http://127.0.0.1:9100/metrics | head -n 5
  4. Bước 4: Cấu hình Prometheus và luật cảnh báo

    prometheus.yml
    global:
      scrape_interval: 15s
    
    rule_files:
      - gpu-alerts.yml
    
    scrape_configs:
      - job_name: dcgm
        static_configs:
          - targets: ["10.0.0.11:9400", "10.0.0.12:9400"]
      - job_name: node
        static_configs:
          - targets: ["10.0.0.11:9100", "10.0.0.12:9100"]
      - job_name: vllm
        metrics_path: /metrics
        static_configs:
          - targets: ["10.0.0.11:8000"]
    gpu-alerts.yml
    groups:
      - name: gpu
        rules:
          - alert: GpuNhietDoCao
            # Ngưỡng VÍ DỤ — lấy theo datasheet GPU và khuyến nghị của hãng máy chủ
            expr: DCGM_FI_DEV_GPU_TEMP > 85
            for: 5m
            labels:
              severity: warning
            annotations:
              summary: "GPU {{ $labels.gpu }} trên {{ $labels.Hostname }} nóng bất thường"
    
          - alert: GpuCoLoiXid
            expr: DCGM_FI_DEV_XID_ERRORS > 0
            labels:
              severity: critical
            annotations:
              summary: "GPU {{ $labels.gpu }} báo Xid {{ $value }} — tra tài liệu Xid"
    
          - alert: MatSoLieuGpu
            expr: up{job="dcgm"} == 0
            for: 5m
            labels:
              severity: critical
            annotations:
              summary: "Không thu được số liệu GPU từ {{ $labels.instance }}"
    
          - alert: OSapDay
            expr: node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes < 0.10
            for: 15m
            labels:
              severity: warning
    Bash
    promtool check config prometheus.yml
    promtool check rules gpu-alerts.yml

    Lưu ý: Chỉ số vLLM chỉ truy cập được nếu cổng 8000 nghe trên IP mà Prometheus tới được. Nếu vLLM bind 127.0.0.1, chạy Prometheus agent tại chỗ hoặc mở /metrics qua reverse proxy giới hạn IP.

  5. Bước 5: Dựng dashboard Grafana

    Bash
    sudo docker run -d --name grafana --restart unless-stopped \
      -p 127.0.0.1:3001:3000 -v grafana-data:/var/lib/grafana \
      grafana/grafana-oss
    • Thêm Prometheus làm data source.
    • Nhập dashboard DCGM Exporter do NVIDIA/cộng đồng công bố trên thư viện dashboard của Grafana, rồi chỉnh theo nhãn máy của bạn.
    • Tối thiểu có các panel: nhiệt độ, công suất, utilization, bộ nhớ, Xid theo từng GPU; dung lượng ổ; độ trễ vLLM.
    • Nối Alertmanager/Grafana Alerting tới kênh nhóm vận hành thật sự đọc (email, Telegram, Zalo OA qua webhook…).
  6. Bước 6: Theo dõi thí nghiệm: MLflow hoặc Weights & Biases

    MLflow tự host
    uv pip install mlflow
    mlflow server --host 127.0.0.1 --port 5000 \
      --backend-store-uri sqlite:///mlflow.db \
      --artifacts-destination ./mlartifacts
    
    # Trong môi trường huấn luyện
    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
    export MLFLOW_EXPERIMENT_NAME=qwen7b-lora-hotro

    Trong SFTConfig/TrainingArguments, đặt report_to="mlflow" để ghi loss, tham số và thời gian chạy.

    Cảnh báo: Weights & Biases bản cloud gửi số liệu, cấu hình (và artifact nếu bật) lên máy chủ của nhà cung cấp. Dự án có dữ liệu nhạy cảm: dùng MLflow tự host, W&B bản tự host, hoặc WANDB_MODE=offline — và kiểm tra không log mẫu dữ liệu.

  7. Bước 7: Sao lưu checkpoint và mô hình

    Bash
    # Đồng bộ checkpoint sang máy lưu trữ khác
    rsync -a --info=progress2 out/ backup-host:/data/ai-checkpoints/
    
    # Hoặc sao lưu có mã hoá, chống trùng lặp bằng restic
    restic -r sftp:backup-host:/data/restic-ai init
    restic -r sftp:backup-host:/data/restic-ai backup out/ data/ --tag qwen7b-lora
    restic -r sftp:backup-host:/data/restic-ai snapshots
    • Áp dụng nguyên tắc 3-2-1: ba bản, hai loại phương tiện, một bản ngoài site.
    • Sao lưu cả dữ liệu huấn luyện đã làm sạch, script, file khoá phiên bản — không chỉ trọng số.
    • Thử khôi phục định kỳ; bản sao lưu chưa từng khôi phục thử thì chưa chắc dùng được.
  8. Bước 8: Lập lịch bảo trì

    Tần suấtViệc cần làm
    Hằng ngàyXem cảnh báo, Xid, dung lượng ổ; kiểm tra job bị treo
    Hằng tuầnXem xu hướng nhiệt độ/điện; dọn checkpoint cũ theo chính sách; kiểm tra bản sao lưu chạy thành công
    Hằng thángÁp bản vá bảo mật hệ điều hành theo cửa sổ bảo trì; dcgmi diag -r 2 trên máy rảnh; thử khôi phục một bản sao lưu
    Hằng quýĐánh giá nâng driver/CUDA/firmware (thử trên một máy trước); vệ sinh bộ lọc bụi, kiểm tra quạt, nguồn; rà soát quyền truy cập

    Muốn giao phần vận hành cho đội chuyên trách, xem dịch vụ hạ tầng AI của HQG.

Kiểm tra thành công

  • Prometheus trang Targets: các job dcgm, node (và vllm nếu có) ở trạng thái UP.
  • Grafana hiển thị số liệu từng GPU; tắt thử container dcgm-exporter → cảnh báo mất số liệu được gửi tới kênh vận hành.
  • Một lần huấn luyện có đầy đủ tham số và đường loss trong MLflow.
  • Khôi phục thử một checkpoint từ bản sao lưu và nạp được bằng script đánh giá.

Lỗi thường gặp & cách sửa

dcgm-exporter khởi động rồi thoát ngay

Nguyên nhân thường gặp: Thiếu quyền, container không thấy GPU, hoặc tag không tương thích driver.

Bash
sudo docker logs dcgm-exporter | tail -n 30
sudo docker run --rm --gpus all ubuntu nvidia-smi
Xid xuất hiện lặp lại trên cùng một GPU

Nguyên nhân thường gặp: Tuỳ mã Xid: lỗi phần mềm/ứng dụng, lỗi bộ nhớ, quá nhiệt, lỗi nguồn hoặc kết nối PCIe.

Tra mã trong tài liệu Xid, đối chiếu nhiệt độ và công suất lúc lỗi, chạy dcgmi diag -r 3 ngoài giờ, xem nhật ký BMC. Nếu tài liệu hướng về phần cứng, liên hệ bảo hành với log đầy đủ.

Ổ đĩa đầy, job huấn luyện chết giữa chừng

Nguyên nhân thường gặp: Checkpoint, cache mô hình, log tích luỹ không có chính sách dọn.

Bash
df -h
du -sh ~/.cache/huggingface out/* 2>/dev/null | sort -h | tail
# Dọn image/volume Docker không dùng (kiểm tra kỹ trước khi xoá)
sudo docker system df

Bước tiếp theo

Nguồn chính chủ

Lệnh, tên gói và tham số thay đổi theo phiên bản. Trước khi chạy trên máy thật, hãy kiểm tra phiên bản mới nhất tại trang chính chủ:

Giới hạn của bài

  • Ngưỡng cảnh báo trong bài là ví dụ để cú pháp chạy được, không phải ngưỡng khuyến nghị cho GPU cụ thể.
  • Bài không đề cập giám sát trong Kubernetes (GPU Operator) và lập lịch job (Slurm).
Cần người dựng hệ thống cùng?

Kỹ sư HQG khảo sát, lên cấu hình, lắp đặt và bàn giao hạ tầng AI chạy được thật.