漂亮的蓝色网站,广告开户,做网站网页尺寸是多少钱,网站建设费的摊销一、使用device控制使用CPU还是GPU
device torch.device(cuda:0 if torch.cuda.is_available() else cpu)
# 单GPU或者CPU.先判断机器上是否存在GPU#xff0c;没有则使用CPU训练
model model.to(device)
data data.to(device)#或者在确定有GPU的…一、使用device控制使用CPU还是GPU
device torch.device(cuda:0 if torch.cuda.is_available() else cpu)
# 单GPU或者CPU.先判断机器上是否存在GPU没有则使用CPU训练
model model.to(device)
data data.to(device)#或者在确定有GPU的情况下直接使用
model model.cuda()
data data.cuda()#在确定没有GPU的情况下直接使用
model model.cpu()
data data.cpu() 注意
1.tensor和numpy都是矩阵前者能在GPU上运行后者只能在CPU运行所以要注意数据类型的转换。
2.当你使用model.to(device)时它会将模型的参数和缓冲区移动到指定的设备上。而当你使用model model.to(device)时它会将整个模型移动到指定的设备上。
二、.to(device)和.cuda()设置GPU的区别
建议使用model.to(device)的方式这样可以显示指定需要使用的计算资源特别是有多个GPU的情况下可以并行处理加快速度。
参考.to(device)和.cuda()设置GPU的区别_.cuda()和to(device)-CSDN博客
.to(device) 可以指定CPU 或者GPU
device torch.device(cuda:0 if torch.cuda.is_available() else cpu)
# 单GPU或者CPU
model.to(device)
#如果是多GPU
if torch.cuda.device_count() 1:model nn.DataParallel(modeldevice_ids[0,1,2])
model.to(device).cuda() 只能指定GPU
#指定某个GPU
os.environ[CUDA_VISIBLE_DEVICES]1
model.cuda()
#如果是多GPU
os.environ[CUDA_VISIBLE_DEVICES] 0,1,2,3
device_ids [0,1,2,3]
net torch.nn.Dataparallel(net, device_ids device_ids)
net torch.nn.Dataparallel(net) # 默认使用所有的device_ids
net net.cuda()model.cuda()
#如果是多GPU
os.environment[CUDA_VISIBLE_DEVICES] 0,1,2,3
device_ids [0,1,2,3]
net torch.nn.Dataparallel(net, device_ids device_ids)
net torch.nn.Dataparallel(net) # 默认使用所有的device_ids
net net.cuda()三、指定使用的GPU
使用方式
import os# 给服务器上的GPU编号
os.environ[CUDA_DEVICE_ORDER] PCI_BUS_ID
os.environ[CUDA_VISIBLE_DEVICES] 0,1,2,3# 指定要使用哪张卡
device_ids [0, 1] #假设只用两张卡# 将模型搬到GPU上并行化处理
model torch.nn.DataParallel(model, device_idsdevice_ids)
model model.cuda()
# 或者直接
model torch.nn.DataParallel(model, device_idsdevice_ids).cuda()
四、GPU利用率很低的可能原因分析
训练中GPU利用率很低4%CPU利用率很高80%左右原因分析
1CPU性能不足没有ssd加速
2电脑只有一张显卡无法并行训练model——转移到服务器上多卡一起并行训练
3模型太复杂要训练的参数多——优化模型
4且Dataloader读入数据的时候numworks0单线程读入比较慢——numworks4适当增大观察GPU的提升但CPU跑满就没法再继续增加了
5程序中每次迭代训练都采用日志保存所有的训练结果频繁I/O读取——先不记录调好参数之后再训练时记录
小结主要考虑优化数据读取I/O速度数据传输数据GPU上预处理优化算法调整硬件资源
在不改变硬件条件的情况下最能够努力的就是增加数据读取的进程以及尽量把数据预处理操作能移到GPU上进行的就都移到GPU上。 GPU利用率低解决方案
跑深度学习模型的时候我的gpu利用率很低_mob64ca12d2a342的技术博客_51CTO博客