合理占用服务器空闲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资源,这时候就 ...
随机推荐
- Linux新加磁盘并挂载到目录
步骤:1.分区 ----> 2.格式化 ----> 3.挂载 一.查看当前情况 1. 2. 二.磁盘分区 fdisk /dev/sdb 1.输入n,表示添加一个新的分区 2. e ex ...
- fetch ios低版本兼容cannot clone a disturbed response
报错信息 ios 11以下 cannot clone a disturbed response github.com/github/fetc- 问题发生场景 使用了一个或者多个三方库 三方库或者自己的 ...
- Docker(36)- docker run 的流程和原理
背景 目前项目组上, Docker 用的非常重,所有微服务都是通过 docker 来部署的 所以不能仅仅会命令,还得会一些原理的东西,特此补一篇基础点的,后面再更加深入一些 docker 原理 本篇学 ...
- junit4 套件测试
junit4 中的套件可以用来测试一个需要依赖的业务流程,如购买必须依赖与登录成功 代码实现: 测试数据存放 public class BaseTest { protected static Hash ...
- WPF 第三方资源
1.XCeed 开发的Extended WPF Toolkit http://wpftoolkit.codeplex.com/ http://www.csdn123.com/html/blogs/20 ...
- docker学习笔记(一)--ubunru18.04下面安装docker18.03
我是在本地安装的虚拟机,再搭建的环境,虚拟机的安装可以参考下面的博客: https://blog.csdn.net/u013142781/article/details/50529030 安装好了之后 ...
- leetcode-螺旋矩阵(指针)
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2 ...
- Django学习day07随堂笔记
今日考题 """ 今日考题 1.必知必会N条都有哪些,每个都是干啥使的 2.简述神奇的双下划线查询都有哪些方法,作用是什么 3.针对多对多外键字段的增删改查方法有哪些,各 ...
- shell脚本中 /dev/null 的用途
/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/nul ...
- linux中如何查看文件上下文
grep -C 10 keyword catalina.out filename https://blog.csdn.net/weixin_34791683/article/details/11660 ...