news 2026/5/30 19:21:17

Windows上使用PyTorch训练模型GPU利用率低的原因

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows上使用PyTorch训练模型GPU利用率低的原因

在Windows上使用PyTorch训练模型时,任务管理器里的GPU占用率比较低,这是正常的。可以使用nvidia-smi查看真实的GPU占用率。

任务管理器里的GPU占用率

使用nvidia-smi查看真实的GPU占用率

命令(dmon表示以实时监控的形式查看):

nvidia-smi dmon


各列含义:

列名全称 / 解释单位/说明
gpuGPU 索引 (Idx)系统中的 GPU 编号(从 0 开始),多 GPU 时用于区分不同显卡。
pwrPower Draw当前 GPU 功耗(瓦特,W)。
gtempGPU TemperatureGPU 核心温度(摄氏度,℃)。
mtempMemory Temperature显存温度(℃),- 表示无传感器或未支持。
smStreaming Multiprocessor流处理器利用率(百分比,%),反映 CUDA 核心的计算负载。
memMemory Utilization显存带宽利用率(%),非显存容量占用,表示显存控制器的繁忙程度。
encEncoder Utilization视频编码器(如 NVENC)利用率(%)。
decDecoder Utilization视频解码器(如 NVDEC)利用率(%)。
mclkMemory Clock显存时钟频率(MHz),越高表示显存速度越快。
pclkProcessor ClockGPU 核心时钟频率(MHz),反映 GPU 核心的当前运行速度。

sm 和 mem 高百分比表明 GPU 计算或显存带宽成为瓶颈。在深度训练时,需要关注 sm 和 mem 是否接近 100%,确保 GPU 满载。

GPU占用率确实低的解决方案

可以在PyTorch DataLoader里设置num_workers和pin_memory参数解决。注意:在windows上设置num_workers后,训练函数必须放到if __name__ == "__main__"里面,否则会报错。

注意:不要把num_workers设置的太大,创建worker也需要很多时间。可以从2开始加,只要保证使用nvidia-smi查看的GPU利用率在90%以上即可。然后调整batch_size,让显存占用率也在90%左右即可。

示例代码:

importtorchimporttorch.nnasnnimporttorch.optimasoptimimporttorch.utils.dataasdatafromtorchvisionimportdatasets,transforms num_epochs=20batch_size=100learning_rate=0.001transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,))])train_dataset=datasets.MNIST(root="./data",train=True,transform=transform,download=True)test_dataset=datasets.MNIST(root="./data",train=False,transform=transform,download=True)train_loader=data.DataLoader(train_dataset,batch_size=batch_size,shuffle=True,num_workers=2,pin_memory=True)test_loader=data.DataLoader(test_dataset,batch_size=batch_size,shuffle=False)device=torch.device("cuda"iftorch.cuda.is_available()else"cpu")classCNNModel(nn.Module):def__init__(self):super().__init__()self.layer1=nn.Sequential(nn.Conv2d(1,32,kernel_size=5,stride=1,padding=2),nn.ReLU(),nn.MaxPool2d(kernel_size=2,stride=2),)self.layer2=nn.Sequential(nn.Conv2d(32,64,kernel_size=5,stride=1,padding=2),nn.ReLU(),nn.MaxPool2d(kernel_size=2,stride=2),)self.dropout=nn.Dropout()self.fc1=nn.Linear(7*7*64,1000)self.fc2=nn.Linear(1000,10)defforward(self,x):out=self.layer1(x)out=self.layer2(out)out=out.reshape(out.size(0),-1)out=self.dropout(out)out=self.fc1(out)out=self.fc2(out)returnout model=CNNModel().to(device)criterion=nn.CrossEntropyLoss()optimizer=optim.Adam(model.parameters(),lr=learning_rate)deftrain():model.train()forepochinrange(num_epochs):fori,(images,labels)inenumerate(train_loader):images=images.to(device)labels=labels.to(device)output=model(images)loss=criterion(output,labels)optimizer.zero_grad()loss.backward()optimizer.step()if(i+1)%100==0:print("Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}".format(epoch+1,num_epochs,i+1,len(train_loader),loss.item()))deftest():model.eval()withtorch.no_grad():total=0correct=0forimages,labelsintest_loader:images=images.to(device)labels=labels.to(device)output=model(images)_,predict=torch.max(output,1)total+=labels.size(0)correct+=(predict==labels).sum().item()print("Accuracy of 10000 test images: {} %".format(correct/total*100))if__name__=="__main__":train()test()

原文:PyTorch训练GPU占用率低?别被任务管理器骗了,用这招看真实利用率 - 超腾开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 19:21:17

终极免费激活方案:如何3分钟完成Windows系统专业级激活

终极免费激活方案:如何3分钟完成Windows系统专业级激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗?KMS_VL_ALL_AIO智能激活脚本为您提…

作者头像 李华
网站建设 2026/5/29 17:51:59

如何3步解决岛屿设计难题:Happy Island Designer完整解决方案

如何3步解决岛屿设计难题:Happy Island Designer完整解决方案 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Cr…

作者头像 李华
网站建设 2026/5/29 17:50:00

InternLM2-Base-7B数学推理能力测试:从基础到高级的完整评估

InternLM2-Base-7B数学推理能力测试:从基础到高级的完整评估 【免费下载链接】internlm2-base-7b 项目地址: https://ai.gitcode.com/hf_mirrors/AI-Research/internlm2-base-7b InternLM2-Base-7B作为新一代开源大语言模型,在数学推理领域展现出…

作者头像 李华
网站建设 2026/5/29 17:49:02

CANN/ops-transformer MoE门控Top-K反向算子

MoeGatingTopKBackward 【免费下载链接】ops-transformer 本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-transformer 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DTAtlas A3 训练…

作者头像 李华
网站建设 2026/5/29 17:48:58

Baichuan-M1-14B-Base常见问题解决方案:7个部署陷阱与避坑指南

Baichuan-M1-14B-Base常见问题解决方案:7个部署陷阱与避坑指南 【免费下载链接】Baichuan-M1-14B-Base 项目地址: https://ai.gitcode.com/hf_mirrors/MindIE/Baichuan-M1-14B-Base Baichuan-M1-14B-Base作为昇腾平台上的大型语言模型,在部署过程…

作者头像 李华