在Colab运行代码时显示GPU使用情况

19

我在Google Colab上运行一个程序,需要在程序运行时监视GPU的使用情况。通常情况下,在命令行中使用nvidia-smi来显示GPU使用情况。但是由于Colab一次只允许运行一个单元格,所以这不是一个选项。目前,我正在使用GPUtil并使用GPUtil.getGPUs()[0].loadGPUtil.getGPUs()[0].memoryUsed来监视GPU和VRAM的使用情况,但我无法找到一种方法让这些代码片段与我的其他代码同时执行,因此使用情况数字比实际应该的要低得多。有没有办法在运行其他代码同时打印GPU使用情况?

6个回答

24

如果您拥有Colab Pro,可以打开位于左侧的终端,显示为具有黑色背景的'>_'。

即使某个单元格正在运行,您也可以从那里运行命令。

输入以下命令以实时查看GPU使用情况:

watch nvidia-smi


10
通常情况下这并不可用,提示:注册Colab Pro以获取终端功能。 - stason
4
是的,@stason,你说得对,很抱歉我没有澄清这个条件,因为我还没有在Colab Free上测试过它。 - climbest

23

使用wandb记录系统指标:

!pip install wandb
import wandb
wandb.init()

它会生成一个URL,你可以在其中查看不同系统指标的各种图表。


10
请前往Weights and Bias创建账户,执行以上命令。在笔记本中找到用于授权的链接并复制API密钥,将其粘贴到笔记本输入栏中。接着,你会找到一个链接,点击它,就能看到你的模型和系统矩阵。需要更加明确的解释,请访问实际内容所在的上下文。 - Vinay Verma

10

稍微更清晰的解释。

  1. 前往 Weights and Biases 网站并创建您的帐号。
  2. 运行以下命令。
!pip install wandb
import wandb
wandb.init()
  1. 进入笔记本中的链接进行授权 - 复制API密钥。
  2. 将密钥粘贴到笔记本输入字段中。
  3. 授权后,您将在笔记本中找到另一个链接 - 在那里查看您的模型+系统矩阵。

5

你可以在后台运行脚本来跟踪GPU使用情况。

步骤1:在jupyter单元格中创建一个文件来监视GPU使用情况。

%%writefile gpu_usage.sh
#! /bin/bash
#comment: run for 10 seconds, change it as per your use
end=$((SECONDS+10))

while [ $SECONDS -lt $end ]; do
    nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,memory.used,memory.free,fan.speed,temperature.gpu >> gpu.log
    #comment: or use below command and comment above using #
    #nvidia-smi dmon -i 0 -s mu -d 1 -o TD >> gpu.log
done

步骤2:在另一个单元格中将上述脚本后台执行。

%%bash --bg

bash gpu_usage.sh

步骤 3:运行推理。

请注意,该脚本会记录首个 10 秒的 GPU 使用情况。根据您的模型运行时间进行更改。

GPU 利用率结果将保存在 gpu.log 文件中。


4

还有一种查看GPU使用情况的方法,但这种方法只能用于查看内存使用情况。点击“运行时” -> “管理会话”,这样可以让您看到它占用了多少内存,以便您可以增加批量大小。


2
你可以使用Netdata来实现这个功能 - 它是开源且免费的,而且你可以监控你的colab实例上除了gpu使用率之外的很多其他内容。以下是我在训练大型语言模型时监控CPU使用率的情况。

只需将你的colab实例声明为一个节点,如果你正在使用Netdata云,你还可以同时监控多个colab实例。

非常棒。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接