在Linux系統中監控PyTorch的運行狀態,可以通過以下幾種方法:
使用nvidia-smi:
如果你在使用NVIDIA GPU進行深度學習訓練,nvidia-smi是一個非常有用的工具。它可以顯示GPU的使用情況,包括顯存占用、溫度、功耗等。
watch -n 1 nvidia-smi
這個命令會每秒刷新一次GPU的狀態。
使用htop:
htop是一個交互式的進程查看器,它可以讓你看到系統中所有進程的資源占用情況,包括CPU和內存使用情況。
htop
在htop界面中,你可以找到對應的Python進程,并查看其資源使用情況。
使用PyTorch的內置函數: PyTorch提供了一些內置函數來監控模型的訓練過程,例如:
torch.cuda.memory_allocated() 和 torch.cuda.max_memory_allocated() 可以用來查看當前和最大GPU內存占用。torch.cuda.empty_cache() 可以清空未使用的緩存內存。torch.autograd.set_detect_anomaly(True) 可以開啟梯度檢查異常檢測。import torch
# 在訓練循環中監控GPU內存使用
print(torch.cuda.memory_allocated(device))
使用TensorBoard:
TensorBoard是TensorFlow的可視化工具,但也可以與PyTorch一起使用。通過集成torch.utils.tensorboard,你可以記錄并可視化各種指標,如損失、準確率、學習率等。
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('runs/experiment-1')
for epoch in range(100):
# 訓練代碼...
writer.add_scalar('Loss/train', loss.item(), epoch)
然后在終端中運行:
tensorboard --logdir=runs
并在瀏覽器中打開http://localhost:6006來查看TensorBoard界面。
使用第三方庫:
有一些第三方庫可以幫助你監控PyTorch程序,例如pytorchtools中的summary函數可以打印模型的結構和參數數量,visdom可以用來實時顯示圖表和監控指標。
編寫自定義監控腳本: 你也可以編寫自己的監控腳本,定期記錄模型和系統的狀態,然后使用日志分析工具或者直接在終端中查看這些日志。
選擇哪種方法取決于你的具體需求和你想要監控的信息類型。通常,結合使用這些方法可以提供全面的監控。