合理占用服务器空闲GPU[狗头]
合理占用服务器GPU资源[狗头]
场景:当你想进行模型训练时,发现GPU全被占用,怎么办?
解决方案1:
在终端输入如下命令:watch -n 设定刷新时间(s) nvidia-smi
然后记起来了回来看看有空下来的没?
解决方案2:
首先说明一下我的环境:
- ubuntu 16.04
- anaconda3
- python3.6
- tensorflow1.13
再说明一下对应的脚本与占用GPU程序路径
- 用户目录
- UseGPU
- cifar-demo.py # 占用GPU程序
- mnist.npy # 手写字数据
- occupy.sh # 占用GPU的sh脚本
occupy.sh
脚本内容:
#!/bin/bash
# 变量定义
index=0 # GPU号
free=1600 # 空闲的GPU显存量(MB)
sleeptime=1 # 查询间隔时间
while :
do
# 需要执行的获取占用GPU显存的命令
STRING=$(nvidia-smi -q -i $index | grep -m 1 'Free' | tr -cd '[0-9]')
# echo $STRING
if [ "$STRING" -gt "$free" ]; then
# 当所占资源小于设定值时,执行相应程序
echo `date -d today +"%Y-%m-%d %H:%M:%S"`
echo "Find Free GPU:$index!!!"
# 运行对应程序 占TMD
$(CUDA_VISIBLE_DEVICES=$index python3 ./cifar-demo.py)
break
else
# 没找到,寻找下一块GPU
echo "GPU:$index Not satisfied!"
sleep $sleeptime
# GPU号自增
let index++
if [ $index -ge 4 ]; then
index=0
fi
fi
done
cifar-demo.py
对应程序
为tensorflow的官方教程:https://github.com/tensorflow/docs/tree/master/site/en/r1/tutorials
import numpy as np
import tensorflow as tf
# set train epoch
epochs = 10000000
# suppose the data in the ./mnist.npz
try:
data = np.load('./mnist.npz')
x_train, y_train, x_test, y_test = data['x_train'], data['y_train'], data['x_test'], data['y_test']
# Normalized data
x_train, x_test = x_train / 255.0, x_test / 255.0
except Exception as e:
print('%s' % e)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# start train
model.fit(x_train, y_train, epochs=epochs)
model.evaluate(x_test, y_test)
mnist.npy
数据获取
- 下载地址:https://storage.googleapis.com/tensorflow/tf-keras-datasets/
- 网盘链接:链接:https://pan.baidu.com/s/1E_w_wJbvseU9I6kkShJahQ 提取码:5kdn
可有可无的一点点说明
对
occupy.sh
脚本进行一点点说明:
- 查看指定GPU的所有信息:
nvidia-smi -q -i 第几块GPU
- 查看指定GPU的显存空闲
nvidia-smi -q -i 第几块GPU | grep "Free"
# 如,此处我查看第2块GPU的显存占用:
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep "Free"
Free : 15839 MiB # FB Memory Usage (以此为准)
Free : 16376 MiB # BAR1 Memory Usage # 考虑到上面有两个输出,
# FB Memory Usage (对比后发现是以此为准)
# Total : 16160 MiB
# Used : 321 MiB
# Free : 15839 MiB
# BAR1 Memory Usage
# Total : 16384 MiB
# Used : 8 MiB
# Free : 16376 MiB # 修改命令如下,只输出一条
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep -m 1 "Free"
Used : 15839 MiB # 最后对数字进行截取
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep -m 1 "Free" | tr -cd "[0-9]"
15839
参考:
https://blog.csdn.net/geng333abc/article/details/107481364
https://github.com/tensorflow/docs/tree/master/site/en/r1/tutorials
https://www.cnblogs.com/ypzhai/p/9997856.html
合理占用服务器空闲GPU[狗头]的更多相关文章
- thinkphp5.0助手函数占用服务器资源
db('user') 默认情况下,每次请求都会重新连接数据库,这样会占用服务器资源 方法1.如果不想每次都重连可以这样 db("List",[],false) 方法2.还可以直接 ...
- 关于使用实验室服务器的GPU以及跑上TensorFlow代码
连接服务器 Windows - XShell XFtp SSH 通过SSH来连接实验室的服务器 使用SSH连接已经不陌生了 github和OS课设都经常使用 目前使用 192.168.7.169 使用 ...
- SQL Server占用服务器内存过高
SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高. 查看内存状态: DBCC M ...
- mac终端ssh连接服务器 空闲的时候 连接断开
ssh_config详解(MAC OSX) 方法1:MAC客户端配置 配置“/etc/ssh/ssh_config”文件 “/etc/ssh/ssh_config” 文件是OpenSSH系统范围的配置 ...
- tensorflow 指定使用gpu处理,tensorflow占用多个GPU但只有一个在跑
我们在刚使用tensorflow的过程中,会遇到这个问题,通常我们有多个gpu,但是 在通过nvidia-smi查看的时候,一般多个gpu的资源都被占满,但是只有一个gpu的GPU-Util 和 21 ...
- mysql占用服务器cpu过高的原因以及解决办法
登陆Mysql: mysql -p<port> -u<user> -p<pwd> mysql> show processlist; show processl ...
- 低效sql语句执行缓慢引起的大量占用服务器的CPU问题处理 (优化心得)
1> 2> 3> 4> 5>删除不良的执行计划后执行时间仍然有150s,这实在是太慢了,继续查看原sql代码,发现父表的关联条件放在了子查询里,这是应该避免的 调整原sq ...
- 解决TensorFlow程序无限制占用GPU
今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x.......显示如下图所示: 程序如下: import te ...
- Tensorflow取消占用全部GPU
参考:https://www.cnblogs.com/jiu0821/p/9501665.html Tensorflow默认是会占用全部的GPU,而有时候你根本不需要那么占用那么多GPU资源,这时候就 ...
随机推荐
- JQ动画
/* //基本 show([s,[e],[fn]]) 显示元素 hide([s,[e],[fn]]) 隐藏元素 //滑动 slideDown([s],[e],[fn]) 向下滑动 slideUp([s ...
- ELK学习之Logstash篇
Logstash在ELK这一整套解决方案中作为数据采集终端,支持对接Kafka.数据库(MySQL.Oracle).文件等等. 而在Logstash内部的数据流转,主要经过三个环节:input -&g ...
- Python常见问题 - python3 使用requests发送HTTPS请求报certificate verify failed 错误
当你使用 requests 发送HTTPS请求时 requests.get(url, parmas=parmas, headers=header, cookies=cookie) 出现了以下错误 HT ...
- Appium问题解决方案(4)- Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException
背景 操作步骤 运行 uiautomatorviewer.bat 点击左上角的 Device ScreensShot 报错 截图 解决方法 网上还是有很多方法的,可能造成的原因不同,我是第六种方法解决 ...
- 安装 Ubuntu 21.04 后必备的绝佳应用大合集(持续更新中)
@ 目录 一.Google Chrome 浏览器 1.下载 2.安装 3.设置搜索引擎 二.火焰截图(替代QQ截图) 1.简介: 2.安装: 3.设置快捷键: 三.VLC视频播放器(替代Potplay ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- PHP脚本设置及获取进程名
今天来学习的是两个非常简单的函数,一个可以用来设置我们执行脚本时运行的进程名.而另一个就是简单的获取当前运行的进程名.这两个函数对于大量的脚本运行代码有很大的作用,比如我们需要 kill 掉某个进程时 ...
- css3 图片变黑白 filter
/*图片黑白*/ .img-gray { -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: gray ...
- 更改已安装的织梦dedecms系统数据库表前缀
1 修改之前我们先备份下数据,备份的操作过程是:网站后台------系统------数据库备份/还原-------然后按提交.默认保存的数据在data/backupdata目录下. 2 修改目录下da ...
- (转载)Select for update/lock in share mode 对事务并发性影响
select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transa ...