合理占用服务器空闲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资源,这时候就 ...
随机推荐
- Vue跨域问题解决
项目根目录下创建vue.config.js module.exports = { devServer: { proxy: { //配置跨域 '/api': { //这里是真实的后台接口 target: ...
- 硕盟type-c转接头|四合一多功能扩展坞
硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...
- IO流实现简单的文件的剪切
思路: 判断 即将 复制的文件是文件夹还是文件 遍历需要复制的源文件夹 如果是文件夹,就通过流创建一个同样的子文件夹 如果是文件,就复制过去 接下来上代码 public class Demo1 { p ...
- 使用Dockerfile Maven插件
我们常见开源项目中使用的Docker Maven插件是com.spotify:docker-maven-plugin.可用版本信息见Github. 通过其介绍可知该插件已经不再推荐使用,取而代之的是c ...
- selenium用css、xpath表达式进行元素定位
绝对路径选择 从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径 Xpath : /html/body/div CSS : html>body&g ...
- 洛谷P1208——P1208 [USACO1.3]Mixing Milk(贪心)
题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...
- Python爬无止境,获得王者荣耀全部高清皮肤
作为一名热爱王者两年的程序员,早就想爬取所有英雄皮肤的高清照片,在设个幻灯片放映,真香,这次只用16行代码就能实现,对于新手拿这个作为实战练手项目既简单又容易上手,快来尝试下. 百度"王者荣 ...
- 数学相关函数在PHP中的应用简介
对于数学计算来说,最常见的其实还是我们使用各种操作符的操作,比如说 +加.-减 之类的.当然,PHP 中也为我们提供了一些可以方便地进行其他数学运算的操作函数.这些函数都属于 Math 扩展.这个扩展 ...
- php去除html标签
function cutstr_html($string){ $string = strip_tags($string); $string = preg_replace(["\t" ...
- Writing in the Science 01
INTRODUCTION What makes good writing? Good writing communicates an idea clearly and effectively. Goo ...