当前位置: 首页 > news >正文

【深度学习】Python使用指定gpu运行代码

命令行指定显卡GPU运行python脚本

在大型机构分配的服务器集群中,需要使用GPU的程序默认都会在第一张卡上进行,如果第一张卡倍别人占用或者显存不够的情况下,程序就会报错说没有显存容量,所以能够合理地利用GPU资源能帮助你更快更好地跑出实验效果。
1、指定使用GPU0运行脚本(默认是第一张显卡, 0代表第一张显卡的id,其他的以此类推)
第一种方式:

CUDA_VISIBLE_DEVICES=0 python ***.py

第二种方式:在python脚本文件中添加如下内容进行指定:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

如果在脚本文件中已经写明了第二种方式,则不支持第一种方式的指定。
2、指定使用多张显卡运行脚本
在GPU的id为0和1的两张显卡上运行***.py程序:

CUDA_VISIBLE_DEVICES=0,1 python ***.py

3、在单张显卡的情况下开启多个进程运行脚本
命令行程序如下:(其中NUM_GPUS_YOU_HAVE代表运行的进程数)

说明:程序会根据卡的容量分配成两个程序,不一定在两张卡,有时候一张卡的容量够则会在该张卡上开启新的进程。

python -m torch.distributed.launch --nproc_per_node=NUM_GPUS_YOU_HAVE ***.py

4、查看GPU状态
1、单次查看

nvidia-smi

2、隔一秒查看GPU状态:

watch -n 1 nvidia-smi

使用指定gpu运行代码

一、前提

1、在命令行使用nvidia-smi查看gpu设备情况,当存在空闲设备时才能用,否则会出现运行内存不够出错的情况(具体参考文章GPU之nvidia-smi命令详解);
2、安装好cuda和cudcnn(具体步骤请参考:①windows:CUDA安装教程(超详细)),②linux:linux安装CUDA+cuDNN)
在命令行输入nvcc -V或者nvcc --version检查是否安装成功:

二、命令行直接指定

运行python文件时,在前面加上 CUDA_VISIBLE_DEVICES=xxx,xxx是你要指定的gpu序号。如CUDA_VISIBLE_DEVICES=0,2 python extract_masks.py表示指定了0、2号两个gpu。注意,序号是从0开始排的,所以如果你只有一个gpu,那么就是CUDA_VISIBLE_DEVICES=0 python extract_masks.py。

三、在python文件中指定

在需要运行的python文件最开始加上两行如下,等号后面的数字同上所述。

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,2,3"
# 注意:这两行代码必须在文件的最开头,在加载各种包之前

四、如何使用

在python文件中,定义需要加速的模型之后,加上:

model = ......
model.train(True) or model.train(False) # 看你是要训练还是测试
model.to('cuda') # 或者model.cuda()
# 后面需要输入model的变量也是需要.to('cuda')或者.cuda()的,不然会报错既用了cpu又用gpu,不兼容
http://www.lryc.cn/news/210929.html

相关文章:

  • 二叉树的遍历
  • 分布式限流:Redis
  • python excel接口自动化测试框架
  • Java开发面试--MongoDB专区
  • 当『后设学习』碰上『工程学思维』
  • 一表谈现实、系统、流程、报表与BI
  • 数据结构顺序栈例题一
  • 大模型在百度智能问答、搜索中的应用
  • ARPG----C++学习记录01日志和调试
  • 3302. 表达式求值, 栈的应用
  • 论文写作框架示例:论软件系统建模方法及其应用
  • Godot 官方2D C#重构(4):TileMap进阶使用
  • Ubuntu系统编译调试QGIS源码保姆级教程
  • 电源控制系统架构(PCSA)之系统控制处理器
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Redis实现方式开启新篇章,解决分布式环境下的资源竞争问题,提升系统稳定性
  • Go命令行参数操作:os.Args、flag包
  • 在Go中处理时间数据
  • SOLIDWORKS PDM 2024数据管理5大新功能
  • 5G与医疗:开启医疗技术的新篇章
  • Linux云服务器限制ip进行ssh远程连接
  • 【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码
  • (二开)Flink 修改源码拓展 SQL 语法
  • java中spi与api的区别
  • 【Android知识笔记】插件化专题(二)
  • 赶紧收藏!史上最全IDEA快捷键大全
  • IntelliJ IDEA 把package包展开和压缩
  • Python——自动创建文件夹
  • Leetcode—21.合并两个有序链表【简单】
  • 数据链路层和DNS之间的那些事~