合理占用服务器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 数据获取

  1. 下载地址:https://storage.googleapis.com/tensorflow/tf-keras-datasets/
  2. 网盘链接:链接:https://pan.baidu.com/s/1E_w_wJbvseU9I6kkShJahQ 提取码:5kdn

可有可无的一点点说明

occupy.sh脚本进行一点点说明:

  1. 查看指定GPU的所有信息:nvidia-smi -q -i 第几块GPU
  2. 查看指定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[狗头]的更多相关文章

  1. thinkphp5.0助手函数占用服务器资源

    db('user')  默认情况下,每次请求都会重新连接数据库,这样会占用服务器资源 方法1.如果不想每次都重连可以这样 db("List",[],false) 方法2.还可以直接 ...

  2. 关于使用实验室服务器的GPU以及跑上TensorFlow代码

    连接服务器 Windows - XShell XFtp SSH 通过SSH来连接实验室的服务器 使用SSH连接已经不陌生了 github和OS课设都经常使用 目前使用 192.168.7.169 使用 ...

  3. SQL Server占用服务器内存过高

    SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高. 查看内存状态: DBCC M ...

  4. mac终端ssh连接服务器 空闲的时候 连接断开

    ssh_config详解(MAC OSX) 方法1:MAC客户端配置 配置“/etc/ssh/ssh_config”文件 “/etc/ssh/ssh_config” 文件是OpenSSH系统范围的配置 ...

  5. tensorflow 指定使用gpu处理,tensorflow占用多个GPU但只有一个在跑

    我们在刚使用tensorflow的过程中,会遇到这个问题,通常我们有多个gpu,但是 在通过nvidia-smi查看的时候,一般多个gpu的资源都被占满,但是只有一个gpu的GPU-Util 和 21 ...

  6. mysql占用服务器cpu过高的原因以及解决办法

    登陆Mysql: mysql -p<port> -u<user> -p<pwd> mysql> show processlist; show processl ...

  7. 低效sql语句执行缓慢引起的大量占用服务器的CPU问题处理 (优化心得)

    1> 2> 3> 4> 5>删除不良的执行计划后执行时间仍然有150s,这实在是太慢了,继续查看原sql代码,发现父表的关联条件放在了子查询里,这是应该避免的 调整原sq ...

  8. 解决TensorFlow程序无限制占用GPU

    今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x.......显示如下图所示: 程序如下: import te ...

  9. Tensorflow取消占用全部GPU

    参考:https://www.cnblogs.com/jiu0821/p/9501665.html Tensorflow默认是会占用全部的GPU,而有时候你根本不需要那么占用那么多GPU资源,这时候就 ...

随机推荐

  1. JS_DOM操作之常用事件

    1 - onload 事件:加载完成后立即执行 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  2. 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题

    问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...

  3. noip模拟37

    \(\color{white}{\mathbb{燕子来时青尚在,木荫遥看杏花菲,名之以:杏红}}\) 考场发现 \(t2\) 基本上是原题,\(t3\) 的套路见过,\(t4\) 像是并查集之类的算法 ...

  4. Vue+element基本增删改查

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. session案例之验证码

    一.需求分析 其中,一张图片就是一个单独的请求: 一个验证验证码的Servlet,还有一个验证用户名和密码的Servlet,两次都可能有错误信息返回到前端页面,所以前面页面要从request域中获取返 ...

  6. RabbitMQ核心知识总结!

    本文已经收录到github仓库,此仓库用于分享Java相关知识总结,包括Java基础.MySQL.Spring Boot.MyBatis.Redis.RabbitMQ.计算机网络.数据结构与算法等等, ...

  7. Win8 iis 环境搭建

    http://www.cnblogs.com/Joans/archive/2012/07/16/2593828.html 系统:win8 环境:vs2012 一:安装IIS 比较win7的安装来说,多 ...

  8. Java数学函数的使用

    Java的Math类中提供了一系列关于数学运算的静态方法,常见的运算整理如下[1] 算数运算 Math.sqrt() // 平方根 Math.cbrt() // 立方根 Math.pow(a, b) ...

  9. Linux安装Cockpit监控服务

    CentOS/RHEL 8的新特性之一就是自带了一个cockpit的监控服务.通过c/s架构模式运行,客户端输入ip:端口即可访问 这类似于glances监控. 如果你不是使用的centos/rhel ...

  10. ❤️【Android精进之路-01】定计划,重行动来学Android吧❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. Android精进之路第一篇,确定安卓学习计划. 干货满满,建议收藏,需要用到时常看看.小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 ...