位置: IT常识 - 正文

在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

编辑:rootadmin
在GPU上运行pytorch程序(指定单/多显卡) 目录

1. 使用CUDA_VISIBLE_DEVICES

2. 使用cuda()和torch.cuda.set_device()

3. 使用device

4. 使用torch.nn.DataParallel


1. 使用CUDA_VISIBLE_DEVICES使用CUDA_VISIBLE_DEVICES设置显卡https://blog.csdn.net/qq_43307074/article/details/1276599672. 使用cuda()和torch.cuda.set_device()

推荐整理分享在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:在gpu上运行的程序,pytorch gpu不可用,pytorch gpu运行,pytorch gpu运行,在GPU上运行MATLAB程序,gpu版本的pytorch可以用cpu跑吗,如何在gpu上运行python,如何在gpu上运行python,内容如对您有帮助,希望把文章链接给更多的朋友!

torch.cuda常用指令https://blog.csdn.net/qq_43307074/article/details/127628498?spm=1001.2014.3001.5501方法1和方法2可以同时使用,比如在运行代码时使用:

CUDA_VISIBLE_DEVICES=2,3 python test.py

而在代码内部又指定:

model.cuda(1)

那么model会在GPU3上运行。原理是CUDA_VISIBLE_DEVICES遍历当前可见的设备,并从零开始为可见设备编号。CUDA_VISIBLE_DEVICES使得只有GPU2,3可见,程序就会把这两张显卡编号为GPU0,1,2,3,cuda(1)把model加载到了GPU1上,则实际使用的显卡是GPU3。

如果利用.cuda()或torch.cuda.set_device()把模型加载到多个显卡上,而实际上只使用一张显卡运行程序的话,那么程序会把模型加载到第一显卡上,在运行代码时使用:

CUDA_VISIBLE_DEVICES=2,3 python test.py

而在代码内部又指定:

model.cuda('cuda:1,0')在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

那么model会在GPU3上运行。

3. 使用device3.1. 检查所用的deviceimport torchx = torch.tensor([[1,2,3],[4,5,6]])print(x.device)

3.2. 模型/数据指定GPU,具体有以下几种形式:import torchcuda = torch.device('cuda:0'/'cuda')x = torch.tensor([1,2,3],device = cuda)print(x.device)import torchdevice = torch.device('cuda:0'/'cuda')x = torch.rand((4,5)).to(device)print(x.device)import torchx = torch.tensor([1,2,3],device = torch.device('cuda:0'/'cuda')print(x.device)import torchdevice = torch.device('cuda:0'/'cuda')...net = net.to(device)print(net.device)

 经典写法:

device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

如果想要在其他GPU上运行,举例如下:

import torchimport os os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2'cuda = torch.device('cuda:1')x = torch.tensor([[1,2,3]],device = cuda)print(x.device)4. 使用torch.nn.DataParallel

多卡数据并行一般使用torch.nn.DataParallel

torch.nn.DataParallel(model,device_ids)举例:torch.nn.DataParallel(model, device_ids=device_ids)torch.nn.DataParallel(modul, device_ids=[x1,x2,x3,x4,x5,x6,x7])# 使用的GPU一定是编号连续的torch.nn.DataParallel(model,device_ids = range(torch.cuda.device_count()) )

其中model是需要运行的模型,device_ids指定部署模型的显卡,数据类型是list/device。

device_ids中的第一个GPU(即device_ids[0])和model.cuda()或torch.cuda.set_device()中的第一个GPU序号应保持一致,否则会报错。此外如果两者的第一个GPU序号都不是0,比如设置为:

model=torch.nn.DataParallel(model,device_ids=[2,3])model.cuda(2)

那么程序可以在GPU2和GPU3上正常运行。device_ids的默认值是使用可见的GPU,不设置model.cuda()或torch.cuda.set_device()等效于设置了model.cuda(0)

具体举例如下:

model = model.cuda()device_ids = [0, 1] model = torch.nn.DataParallel(model, device_ids=device_ids)model = model.to(device)model = nn.DataParallel(model, device_ids=[0,1,2,3])device_ids = [0, 1]model = torch.nn.DataParallel(model, device_ids=device_ids).cuda()

所有的数据要先load到主GPU上,然后再分发给每个GPU去train,因此应当将model先放到GPU上,然后在进行并行训练。

参考

在pytorch中指定显卡https://zhuanlan.zhihu.com/p/166161217

本文链接地址:https://www.jiuchutong.com/zhishi/290663.html 转载请保留说明!

上一篇:vue查询数据el-table不更新数据(vue 查询)

下一篇:威斯康星州的白尾母鹿和小鹿 (© Karel Bock/Shutterstock)(威斯康星州1976)

  • 股东投资是所有者权益
  • 应收票据背书转让分录
  • 银行销户余额取现怎么做分录
  • 文化建设税是含税价吗
  • 城建税借贷方向
  • 会计凭证前面放什么
  • 定额中税金包含什么
  • 新的企业所得税暂行条例
  • 房地产企业拆迁安置土地增值税清算疑点
  • 公司名称房产和房地产区别
  • 增值税进项税转出所得税调整吗
  • 期间费用的控制方法主要有
  • 一般纳税人城建税怎么计算
  • 期初建账库存少录数量会计怎么处理
  • 企业收到委托开发软件的货款如何记账?
  • 加速折旧做账
  • 股东变更没有公章和营业执照怎么办
  • 融资租赁 车辆
  • 公司给员工的商业保险
  • 补缴税款会计处理
  • 远程认证是什么意思
  • 6位开票代码是几位数
  • 固定资产停止折扣
  • 外地餐费计入什么账户
  • 公司双方签订协议书范本
  • 企业实缴出资额怎么查
  • 人均营收指标
  • 关联企业借款利息税前扣除
  • 私营企业员工享受探亲假吗
  • 离职违约金赔偿标准
  • 企业取得财政拨款怎么算
  • kindeditor vue
  • 为什么Windows 7搜不到网
  • 暂估入库怎么暂估
  • 王者营地怎么转移到安卓系统
  • linux grep过滤空白行
  • php正则函数内容匹配
  • ChatGPT会取代你的岗位吗?
  • css3栅格布局
  • 公司申报是每月一次吗
  • 资产处置损益是什么类
  • vue导航方式
  • ajax json请求
  • 非正常户管理办法
  • 填写记账凭证的日期一般是会计人员填制记账凭证的
  • 盈余公积年初和年末没有变化
  • 小规模减免的增值税
  • 财政补贴的会计分录
  • 暂估入账的固定资产
  • 利润表研发费用和管理费用
  • 公司购买床垫如何做账
  • 公司报销给个人的会计分录
  • 保理融资的费用由谁承担
  • 购买方账务处理
  • 企业之间土地交易
  • 明细分类账的记账
  • 现金支票办理电话
  • win7系统怎么删除
  • win8系统无法开机出现字母
  • linux系统init命令
  • linux eval命令
  • schupd.exe - schupd是什么进程 有什么用
  • win7系统怎么打日语
  • win10按prtsc没反应
  • win7如何取消开机启动
  • android@localhost#1
  • 非常漂亮的英文怎么说
  • python的文件操作中找不到文件应该如何处理
  • linux守护进程管理
  • angular.js
  • js状态管理
  • javascript数据类型有哪些
  • python怎么写字符串
  • 一个简单的javaweb项目
  • 辽宁地方税务局发票查询
  • 核准类和备案类项目
  • 辽宁事业单位职测考试时间多长
  • 代理业如何缴纳印花税
  • 逾期未申报扣几分
  • 资源税是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设