GPU monitoring dashboard

GPU monitoring dashboard

บทความนี้ผมจะพาทุกคนมาเรียนรู้การทำ monitoring dashboard ของ GPU ด้วย grafana กันนะครับ โดยจะเริ่มกันตั้งแต่วิธีการติดตั้ง grafana จนไปถึงการตั้งค่าให้รับค่าการทำงานจาก gpu โดยใช้ dcgm-exporter ผ่าน prometheous จนสามารถสร้างเป็น dashboard ที่ดูการทำงานต่างๆของ GPU ได้ และทั้งหมดเราจะทำการ demo ด้วย docker

ในส่วนของการเตรียม instance ให้พร้อมสำหรับบทความนี้สามารถย้อนกลับไปอ่านได้ที่:
https://blog.float16.cloud/nvidia-gpu-driver-setup-essential-steps-for-llm-developers/

และถ้าทุกคนเตรียมเครื่องของตัวเองเรียบร้อยแล้ว เราไปเริ่มกันเล้ยยยย

Create docker network

เราจะให้แต่ละ container ที่เราสร้างในตัวอย่างนี้ อยู่ใน network เดียวกัน จะได้เรียกหากันได้ผ่าน container name

docker network create monitor

Install grafana

สร้าง folder สำหรับเก็บ data ของ grafana และตั้งค่า permission

mkdir grafana-data
chown -R 472:472 grafana-data

create folder and config permission

run grafana ด้วย docker

docker run -d -p 3000:3000 --name=grafana --network monitor \
      -v "./grafana-data:/var/lib/grafana" \
      --user 472 \
      grafana/grafana-enterprise

run grafana server

เราจะสามารถเข้าใช้งานได้ผ่าน http://localhost:3000 ด้วย user: admin และ password: admin หลังจากนั้นให้เราทำการตั้งค่า password ใหม่ให้เรียบร้อย

Install DCGM Exporter

DCGM Exporter (ย่อมาจาก Data Center GPU Manager Exporter) คือเครื่องมือจาก NVIDIA ที่ใช้สำหรับดึงข้อมูลสถานะของ GPU และส่งออกในรูปแบบที่สามารถนำไปใช้กับระบบมอนิเตอร์ เช่น Prometheus ได้อย่างง่ายดาย

การติดตั้งสามารถรันผ่าน 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

ตัว service จะเป็น API ที่ return ข้อมูลของ GPU กลับมา ทดสอบได้จาก

curl http://localhost:9400/metrics
dcgm-exporter response

Install prometheus

สร้าง folder สำหรับเก็บ file configuration

mkdir prometheus

สร้าง prometheus.yml ไว้ใน folder ที่สร้างไว้เมื่อกี้

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']

สร้าง prometheus ด้วย docker

docker run -itd \
--name=prometheus \
--network monitor \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
--user root \
prom/prometheus

Config grafana datasource

ในหน้า UI ของ grafana ให้เราเข้าไปที่ Connections > Add new connection แล้วเลือก Data source เป็น Prometheus

จากนั้นเลือก Add new data source

เมื่อเข้ามาหน้า setting แล้ว ตรง Connection ให้ใส่ Prometheus server URL เป็น http://prometheus:9090 จากนั้นกด save & test เพื่อสร้าง data source

Create Grafana Dashboard

ขั้นตอนนี้เราจะไม่สร้าง Dashboard เองแต่ว่าเราจะใช้ template ที่ทาง Nvidia สร้างไว้ให้จาก https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/

ใน Grafana ให้เราไปที่ Dashboard เลือก Create Dashboard จากนั้นเลือก Import dashboard

ในช่อง dashboard URL or ID ให้เราใส่ 12239 ซึ่งก็คือ id ของ nvidia dashboard จากนั้นกด load แล้วจะเข้ามาถึงหน้า Import dashboard

ใช้ช่อง Prometheus ด้านล่างให้เลือก prometheus data source ที่เราสร้างไว้ แล้วกด Import

GPU Dashboard

เพียงเท่านี้เราก็จะได้ GPU Dashboard ที่เอาไว้ monitor ค่าต่างๆเป็นที่เรียบร้อย

สรุปกันหน่อย

บทความนี้สำหรับท่านใดที่ใช้งานอยู่แล้วผมเชื่อว่าสามารถเอาไปปรับแต่งให้รับข้อมูลจาก DCGM-Exporter เข้าไปเพิ่มได้ไม่ยาก แต่สำหรับมือใหม่ผมเชื่อว่าสามารถทำตามตัวอย่างเหล่านี้และใช้งานได้อย่างแน่นอน หลักๆในนี้ผมแค่อยากนำเสนอตัว DCGM-Exporter ที่เป็นตัวช่วยในการดึง Metrics ต่างๆของ GPU ออกมาที่ครบถ้วนพอสมควรเลย จึงเป็น service ที่อยากเอามาแนะนำสำหรับงานนี้ครับ

Read more

ทำ E2E Test ด้วย AI โดยใช้ Midscene.js ร่วมกับ Playwright

ทำ E2E Test ด้วย AI โดยใช้ Midscene.js ร่วมกับ Playwright

E2E testing แบบที่ไม่ต้องเขียน selector ในโพสต์นี้เราจะมาลองใช้ Midscene.js สำหรับควบคุบ UI แบบที่สั่งด้วย Natural language ร่วมกับ Playwright ซึ่งเป็น framework ยอดนิยมสำหรับการทำ automated browser test Midscene.js คืออะไร? Midscene.js เป็น JavaScript SDK ที่ใช้โมเดล

By matichon maneegard
Nvidia GPU Driver Setup: Essential Steps for LLM Developers

Nvidia GPU Driver Setup: Essential Steps for LLM Developers

ยุคนี้ที่ AI มาแรงแบบสุดๆ LLM น่าจะเป็นสิ่งที่ทุกบริษัทพูดถึงกัน หลายๆที่อยากให้ LLM Solution เข้ามามีบทบาทในบริษัทมากขึ้น ไม่ว่าจะเป็นการทำ Chatbot, RAG เป็นต้น สิ่งที่ตามมาก็คือ Solution เหล่านั้นต้องอยู่ใน Infrastructure ของบริ

By matichon maneegard
ทำ Data Extraction จาก image โดยใช้ LLM Multimodal

ทำ Data Extraction จาก image โดยใช้ LLM Multimodal

ในการทำ Data Extraction จากรูปภาพ เช่น สลิปใบเสร็จ, บัตรประชาชน, หรือแบบฟอร์มกระดาษ วิธีดั้งเดิมมักใช้ OCR (Optical Character Recognition) ร่วมกับการเขียน rule หรือ regex เพื่อแยกข้อมูลออกมา ซึ่งยุ่งยากหรือเมื่อรูปแบบข้อมูลเปลี่ยน ซึ่งจริงๆแล้วเรามี

By matichon maneegard
Self-Hosted LLMs for Enterprise #4

Self-Hosted LLMs for Enterprise #4

ตอนสุดท้ายแล้วนะครับ สำหรับการ deploy llm model ใช้งานเอง หลังจากที่แล้ว Setup ตัว service และ tools ต่างๆที่ต้องการครบถ้วนแล้ว เรามาลุยกันต่อเลยครับในการ download model และทำ API Endpoint สำหรับใครที่เพิ่งเข้ามาอ่านตอนนี้เป็นตอนแรก สามารถติดตามตอนก่อนหน้าได้

By matichon maneegard