Bảng điều khiển Giám sát GPU
Trong bài viết này, tôi sẽ hướng dẫn mọi người tạo bảng điều khiển giám sát GPU với Grafana, bắt đầu từ cách cài đặt Grafana cho đến cấu hình nó để nhận các chỉ số hiệu suất GPU bằng cách sử dụng dcgm-exporter thông qua Prometheus cho đến khi chúng ta có thể tạo bảng điều khiển để xem các hoạt động GPU khác nhau. Chúng ta sẽ demo mọi thứ với Docker.
Nếu mọi người đã chuẩn bị máy của mình, hãy bắt đầu thôi!
Tạo Docker Network
Chúng ta sẽ để mỗi container được tạo trong ví dụ này nằm trên cùng một mạng để chúng có thể gọi nhau thông qua tên container.
docker network create monitor
Cài đặt Grafana
Tạo một thư mục để lưu trữ dữ liệu Grafana và đặt quyền
mkdir grafana-data
chown -R 472:472 grafana-data
Chạy Grafana với Docker
docker run -d -p 3000:3000 --name=grafana --network monitor \
      -v "./grafana-data:/var/lib/grafana" \
      --user 472 \
      grafana/grafana-enterprise
Chúng ta có thể truy cập nó qua http://localhost:3000 với user: admin và password: admin. Sau đó, đặt mật khẩu mới.
Cài đặt DCGM Exporter
DCGM Exporter (viết tắt của Data Center GPU Manager Exporter) là một công cụ từ NVIDIA được sử dụng để trích xuất thông tin trạng thái GPU và xuất nó ở định dạng có thể dễ dàng sử dụng với các hệ thống giám sát như Prometheus.
Cài đặt có thể được thực hiện bằng cách chạy qua Docker.
docker run -itd --name dcgm-exporter \
--gpus all \
--runtime=nvidia \
--cap-add SYS_ADMIN \
--network monitor \
-p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:4.2.3-4.1.1-ubuntu22.04
Dịch vụ là một API trả về dữ liệu GPU. Kiểm tra với:
curl http://localhost:9400/metrics

phản hồi dcgm-exporter
Cài đặt Prometheus
Tạo một thư mục để lưu trữ tệp cấu hình
mkdir prometheus
Tạo prometheus.yml trong thư mục vừa tạo
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    static_configs:
      - targets: ['dcgm-exporter:9400']
Tạo Prometheus với Docker
docker run -itd \
--name=prometheus \
--network monitor \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
--user root \
prom/prometheus
Cấu hình Grafana Datasource
Trong giao diện Grafana, đi đến Connections > Add new connection và chọn Data source là Prometheus

Sau đó chọn Add new data source

Khi vào trang cài đặt, trong Connection, nhập URL máy chủ Prometheus là http://prometheus:9090 sau đó nhấp save & test để tạo data source.
Tạo Grafana Dashboard
Trong bước này, chúng ta sẽ không tự tạo Dashboard mà sẽ sử dụng template mà Nvidia đã tạo từ https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/
Trong Grafana, đi đến Dashboard, chọn Create Dashboard, sau đó chọn Import dashboard

Trong trường dashboard URL or ID, nhập 12239 là id của dashboard nvidia, sau đó nhấp load và bạn sẽ đến trang Import dashboard

Trong trường Prometheus ở dưới cùng, chọn prometheus data source chúng ta đã tạo, sau đó nhấp Import

GPU Dashboard
Và đó là nó! Bây giờ chúng ta có GPU Dashboard để giám sát các chỉ số khác nhau.
Tóm tắt
Bài viết này dành cho những người đã sử dụng các công cụ này - tôi tin rằng bạn có thể dễ dàng điều chỉnh nó để nhận dữ liệu từ DCGM-Exporter. Nhưng đối với người mới bắt đầu, tôi tin rằng bạn có thể làm theo các ví dụ này và sử dụng chúng thành công. Chủ yếu, tôi chỉ muốn giới thiệu công cụ DCGM-Exporter giúp trích xuất các GPU Metrics khác nhau khá toàn diện, vì vậy đây là dịch vụ tôi muốn giới thiệu cho mục đích này.