iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
AI & Data

「30 天打造 Discord AI 助手:結合本地 LLM 與 IoT 的智慧生活」系列 第 6

Day 6:效能觀察與資源監控:檢測 GPU VRAM 使用情況

  • 分享至 

  • xImage
  •  

跑大語言模型的時候,你是不是一邊盯著終端機、一邊祈禱顯存不要爆掉?

本篇聚焦 安裝步驟動態顯示 VRAM 的實戰做法,讓你即時看見顯存水位,避免 OOM。


🧰 你會用到的工具(一次看懂)

工具 特色 什麼時候用
nvidia-smi 內建於驅動、零安裝,查詢最穩 快速看整體 VRAM、GPU 利用率
watch + nvidia-smi 0.5s ~ 1s 更新,輕量 動態顯示 VRAM、水位變化
nvidia-smi dmon 類似 top 的流式輸出 觀察功耗、溫度、利用率趨勢
nvtop 圖形化 TUI、像 htop 的 GPU 版 長時間監看、同機多 GPU
gpustat Python 工具,乾淨易讀 想要簡潔列表、支援 --watch

系統環境示例:Ubuntu 22.04 + NVIDIA Driver/CUDA 已正確安裝


⚙️ 安裝與快速啟用

1) 驗證環境:nvidia-smi(免安裝)

nvidia-smi

看到 GPU 型號、VRAM 使用、GPU-Util% 就代表驅動 OK。


2) 動態顯示 VRAM:watch + nvidia-smi

最輕量、最不會「干擾測試」的做法。

  • 只看 VRAM(MiB)
watch -n 0.5 "nvidia-smi --query-gpu=memory.used,memory.total --format=csv,noheader,nounits"

輸出像:6182, 10019(已用 / 總量,單位 MiB)

  • 加上 GPU 使用率
watch -n 0.5 "nvidia-smi --query-gpu=index,name,utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits"

  • 固定更新 1 秒(更省資源):
watch -n 1 "nvidia-smi --query-gpu=memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits"

小撇步:推理瞬間 VRAM 水位會抖動,建議更新間隔 0.5~1 秒,夠看又不太占 CPU。


3) 走「流式監控」:nvidia-smi dmon

sudo nvidia-smi dmon -s pucvmet

  • p=功耗、u=利用率、c=時脈、v=顯存利用、m=記憶體、e=編碼/解碼、t=溫度

    更像「資料流」;適合抓趨勢與尖峰。


4) 直覺 TUI:nvtop

sudo apt update
sudo apt install -y nvtop
nvtop

  • htop 的互動介面:溫度、功耗、使用率、VRAM 一目了然
  • 可用方向鍵切換 GPU、按 h 看快捷鍵

5) 超乾淨清單:gpustat

pip install --upgrade gpustat
gpustat --watch -i 1

輸出每張卡的 VRAM / 利用率,非常清爽。-i 1 表示每秒更新一次。


📈 動態顯示 VRAM——常見情境與指令

情境 A:只想看顯存水位,越單純越好

watch -n 0.5 "nvidia-smi --query-gpu=memory.used,memory.total --format=csv,noheader,nounits"

情境 B:同時監控「GPU 忙不忙」

watch -n 1 "nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits"

情境 C:我有多張卡,要看每張卡的即時曲線

nvtop

情境 D:想把資料存檔畫圖或回放

# 每 0.5 秒記錄一次,附時間戳
while true; do
  date +"%F %T" >> vram_log.csv
  nvidia-smi --query-gpu=memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits >> vram_log.csv
  sleep 0.5
done

之後可用 Python / Excel 畫出 VRAM 時序曲線,重現尖峰點。


🔍 讀數如何判斷?

  • Memory-Usage(VRAM)

    模型載入(load)時會跳一大段;預留 0.5~1GB 給系統與框架,避免貼近滿載崩潰。

  • GPU-Util

    推理時 70%~100% 屬常見;若長期 <20%,多半是 CPU 或 I/O 限制(資料前處理太慢)。

  • 溫度/功耗

    長時間 80°C 以上建議改善散熱;桌機可增壓殼風、筆電調高風扇曲線。


🧪 最小可重現測試(MRE)

以下示例用 Ollama 發一段推理,同時看 VRAM 水位變化:

# 1) 開兩個終端機:A 做監控、B 做推理
# A 窗口(監控)
watch -n 0.5 "nvidia-smi --query-gpu=memory.used,memory.total,utilization.gpu --format=csv,noheader,nounits"

# B 窗口(推理)
ollama run gemma3:4b "用 100 字介紹 Transformer 的自注意力機制"

觀察點:

  • 啟動瞬間 VRAM 躍升 → 模型載入成本
  • 連續輸出時 GPU-Util 上升 → 推理忙碌期
  • 結束後 VRAM 未完全釋放 → 快取/框架保留(非真正洩漏)

上一篇
Day 5:內建模型大比拼:llama3、Gemma 3 4B 效果比較
系列文
「30 天打造 Discord AI 助手:結合本地 LLM 與 IoT 的智慧生活」6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言